id and — where a printed label named it — the data_key a prefilled value is addressed
to.
- ⚠️ It is the same code the editor’s “Find fields” button runs, not a second implementation. A template authored through the API and one authored by a person pressing that button have their fields in the same places, with the same masks and the same inferred types — because it is one function, not two copies that currently agree.
- It infers position and type. It cannot infer ownership: a page cannot say which of three
signers writes in a box, so every detected field goes to the first role that is not a
cc. Reassign them in the editor afterwards. - ⚠️ A document with nothing detectable is not an error. A flat scan with no text layer yields
no fields, and the call still answers 201 with a template holding its roles and its document —
which is the thing you then place fields on.
fieldsbeing empty is how you tell.