Templates
List the published templates your integration can send from.
The API works with published templates — the ones your team has prepared and published in the app's Templates area. Drafts and archived templates are not visible to the API.
List templates
curl "https://api.instaspace.ai/api/v1/esign/templates?search=nda" \
-H "Authorization: Bearer isk_live_..."search is optional and filters by name.
{
"templates": [
{
"id": "0b9f6f2e-…",
"name": "Mutual NDA",
"description": "Standard two-party NDA",
"fillMode": "flow",
"submitterRoles": ["First Party", "Second Party"],
"fields": [{ "name": "Signature", "type": "signature", "required": true, "submitterRole": "First Party" }],
"variables": [{ "key": "client_name", "label": "Client Name", "type": "text", "required": true }],
"version": 3
}
]
}Get one template
curl https://api.instaspace.ai/api/v1/esign/templates/{id} \
-H "Authorization: Bearer isk_live_..."Returns the same shape as one list entry. Requesting a draft or archived
template returns 404, the same as an unknown id.
Reading the shape
Two things on the template drive what you send in a signature request:
submitterRoles— the signing parties. A signature request must name exactly one recipient per role.fillModedecides what the request'svaluesmean:flow— the template is a document with fillablevariables(client name, fee, dates…). Yourvaluesare keyed byvariables[].key, and instaSpace writes them into the document text itself before sending.coordinate— the template has positionedfields. Yourvaluesare keyed by fieldnameand prefill those fields; anything you leave out is completed by the signer. Signature fields can never be prefilled.

