Skip to main content
GET
One template, with every field address on it.

Authorizations

Authorization
string
header
required

Authorization: Bearer vsk_live_…. Chosen over a bespoke X-API-KEY header because every client, proxy and log-redaction rule already knows this one. What a key may DO is its scopes — see x-scopes at the root of this document and x-required-scope on each operation. The scope list is not written here because OpenAPI reserves a requirement’s scope array for oauth2 and openIdConnect and requires it to be empty for an http scheme.

Path Parameters

templateId
string<uuid>
required

The template’s id, as returned by the list endpoint. A template id.

Example:

"01960000-0000-4000-8000-0000000007e1"

Response

The template, with its documents, pages, roles and every field.

The template, in full.

id
string<uuid>
required

The template’s id. A bare uuid, no prefix.

name
string
required

What the sender called it.

created_at
string<date-time>
required

ISO 8601, UTC. Also the order this list is in — newest first.

documents
object[]
required

The pack, in the order it is stacked.

pages
object[]
required

⚠️ THE DENOMINATOR FOR EVERY Field.rect, and a client doing field matching cannot skip it: a rectangle of fractions is dimensionless without the page it is a fraction of. Join on (document_id, page), the same pair fields is joined by.

Every page of every document of the pack, in the pack’s order and then by page number — the order a signer scrolls.

roles
object[]
required

The signing roles, in routing order.

subjects
object[]
required

The people whose data this template collects.

questions
object[]
required

The tickbox questions and how many answers each takes.

fields
object[]
required

⚠️ A FLAT LIST, NOT A MAP KEYED BY ADDRESS. Several fields sharing one (subject, data_key) pair is NORMAL — real forms ask for an ID number on the application and again on the declaration, and initials in the footer of all nine pages. A value supplied for an address means it for every box that asks.