Template links API
The public fill link, and the settings behind it.
Updated
On this page
5 operations, generated from
openapi/signclad.v1.yaml. Try them in the
interactive reference, browse
every endpoint group, or read the
guides for the prose version.
- GET
/t/{token}Read a public fill link - POST
/t/{token}/startStart a document from a public link - GET
/template_links/{template}Get a template's link settings - PUT
/template_links/{template}Update a template's link settings - POST
/template_links/{template}/rotateRotate a template's link
GET /t/{token}
Read a public fill link Extension
What a stranger holding the link is allowed to see before they start: whose form it is, what
role they are filling, and what the page must ask them for. Unauthenticated — the token is
the credential.
Deliberately absent: the template id, the workspace id, the field list, the other
recipients, and any metadata. A link is permission to start a document, not to read one.
Every failure — unknown token, disabled link, expired link, a single-use link already spent,
a template that is no longer available — is the same 404, with meta.message reading
Couldn't find the page requested.
- Base URL
https://api.signclad.com/api/v1- Authentication
- None — this operation is public
Path parameters
| Name | Type | Description |
|---|---|---|
token | string | The link token. Deliberately the shortest path in v1 — this URL gets printed, pasted, and typed. |
Responses
| Status | Description |
|---|---|
200 | What the intake page needs. |
404 | No such record for this workspace. Signclad never answers 404 for a record that exists: a 404 is authoritative. |
422 | The request was well formed; the account may not make it right now.… |
429 | Rate limited. The message contains the literal 429 Too Many Requests for compatibility with clients that match on it.… |
Example request
curl -X GET https://api.signclad.com/api/v1/t/{token} \
-H "X-Api-Key: $SIGNCLAD_API_KEY" POST /t/{token}/start
Start a document from a public link Extension
Creates the document and returns a signing session for the person who just filled the form,
so the page can go straight into signing without an email round trip.
Two limiters apply: the shared 50/min unauthenticated bucket protects Signclad, and a
per-token limiter protects one customer's document allowance from one attacker who found
their link. name and email are required only when the link says so — read
require_name_email from GET /t/{token} rather than assuming.
- Base URL
https://api.signclad.com/api/v1- Authentication
- None — this operation is public
Path parameters
| Name | Type | Description |
|---|---|---|
token | string |
Request body
application/json
| Property | Type | Required | Description |
|---|---|---|---|
captcha_token | string or null | Optional | Required when captcha_required is set on the link. |
email | string or null | Optional | |
name | string or null | Optional |
Responses
| Status | Description |
|---|---|
201 | The new document and a session to sign it with. |
404 | No such record for this workspace. Signclad never answers 404 for a record that exists: a 404 is authoritative. |
422 | errors.captcha_token reads `The captcha could not be verified.… |
429 | Rate limited. The message contains the literal 429 Too Many Requests for compatibility with clients that match on it.… |
Example request
curl -X POST https://api.signclad.com/api/v1/t/{token}/start \
-H "X-Api-Key: $SIGNCLAD_API_KEY" GET /template_links/{template}
Get a template's link settings Extension
The public URL and the rules behind it. A link exists from the moment the template does; it
is enabled: false until somebody turns it on.
- Base URL
https://api.signclad.com/api/v1- Authentication
- API key or OAuth 2.1 access token
Path parameters
| Name | Type | Description |
|---|---|---|
template | string (uuid) | The template's id. |
Responses
| Status | Description |
|---|---|
200 | The link and its settings. |
401 | Missing or invalid credentials. Unauthenticated requests are rate limited at 50 per minute.… |
403 | Authenticated, but not allowed to do this: an insufficient role, a credential type the route refuses, an unenrolled second factor, or a signer acting out of turn. meta.error always says which.… |
404 | No such record for this workspace. Signclad never answers 404 for a record that exists: a 404 is authoritative. |
422 | The request was well formed; the account may not make it right now.… |
Example request
curl -X GET https://api.signclad.com/api/v1/template_links/{template} \
-H "X-Api-Key: $SIGNCLAD_API_KEY" PUT /template_links/{template}
Update a template's link settings Extension
A partial merge despite being a PUT: only the keys present change. redirect_url must be
HTTPS. An expires_at in the past is accepted — it simply makes the link unusable, which is
a reasonable way to switch one off.
- Base URL
https://api.signclad.com/api/v1- Authentication
- API key or OAuth 2.1 access token
Path parameters
| Name | Type | Description |
|---|---|---|
template | string (uuid) | The template's id. |
Request body
application/json
| Property | Type | Required | Description |
|---|---|---|---|
enabled | boolean | Optional | A link exists as soon as the template does, switched off. |
expires_at | string or null | Optional | A time in the past is accepted, and makes the link unusable. |
notify_sender | boolean | Optional | |
redirect_url | string or null | Optional | Must be HTTPS. |
require_name_email | boolean | Optional | |
single_use | boolean | Optional |
Responses
| Status | Description |
|---|---|
200 | The updated link. |
401 | Missing or invalid credentials. Unauthenticated requests are rate limited at 50 per minute.… |
403 | Authenticated, but not allowed to do this: an insufficient role, a credential type the route refuses, an unenrolled second factor, or a signer acting out of turn. meta.error always says which.… |
404 | No such record for this workspace. Signclad never answers 404 for a record that exists: a 404 is authoritative. |
422 | Validation failed. errors maps a field name to a message string, or to an object keyed by an error code or by a per-item key. Values are never arrays. |
Example request
curl -X PUT https://api.signclad.com/api/v1/template_links/{template} \
-H "X-Api-Key: $SIGNCLAD_API_KEY" POST /template_links/{template}/rotate
Rotate a template's link Extension
Issues a new token and kills the old URL immediately. This is the answer to a link that leaked: the settings survive, the address does not.
- Base URL
https://api.signclad.com/api/v1- Authentication
- API key or OAuth 2.1 access token
Path parameters
| Name | Type | Description |
|---|---|---|
template | string (uuid) |
Responses
| Status | Description |
|---|---|
200 | The link, at its new address. |
401 | Missing or invalid credentials. Unauthenticated requests are rate limited at 50 per minute.… |
403 | Authenticated, but not allowed to do this: an insufficient role, a credential type the route refuses, an unenrolled second factor, or a signer acting out of turn. meta.error always says which.… |
404 | No such record for this workspace. Signclad never answers 404 for a record that exists: a 404 is authoritative. |
422 | The request was well formed; the account may not make it right now.… |
Example request
curl -X POST https://api.signclad.com/api/v1/template_links/{template}/rotate \
-H "X-Api-Key: $SIGNCLAD_API_KEY"