Templates

A template stores the recurring part of an envelope — title, message, signing order and the participant roster. Applying it creates a fresh envelope; the bulk endpoint applies it to many recipients at once and can send everything immediately.

The template object

FieldTypeDescription
id uuidUnique identifier of the template.
name stringInternal name (1–160 characters).
title string | nullTitle for envelopes created from it; falls back to the name.
message string | nullMessage shown to participants.
signing_order enumparallel · sequential · mixed.
language string | nullLanguage for participant-facing content.
expires_in_days integer | nullDeadline applied to envelopes created from it.
participants arrayThe roster: role, order_index, auth_method, modality, and optionally name/email. A participant without an email is a PLACEHOLDER, filled in when the template is applied.

Create, list, update, delete

POST /templates
GET /templates
GET /templates/{id}
PATCH /templates/{id}
DELETE /templates/{id}

Reads require the templates:read scope; writes require templates:write.

Apply to one recipient

POST /templates/{id}/apply

Creates a draft envelope from the template, filling placeholders with recipients. You then attach documents and send it like any envelope. Requires templates:write.

Body parameters

ParameterTypeDescription
title stringOverrides the envelope title.
recipients arrayFills placeholders by order_index: [{ order_index, name, email }]. A placeholder left without name/email fails the apply (nothing is created).

Bulk send

POST /templates/{id}/bulk

Growth plan and above

Bulk send is gated by plan: on a lower tier this endpoint returns 403 plan_feature_required:bulk_send. Applying a template to a single recipient is available on every plan.

One envelope per row, failure is per row: a row with a missing placeholder or insufficient credits reports an error at its index without stopping the rest. Pass an Idempotency-Key header so a retry never duplicates the batch. Requires templates:write.

Body parameters

ParameterTypeDescription
rows requiredarray1–100 rows. Each row is { title?, recipients: [...] } and becomes one envelope.
document_ids arrayUp to 10 library document ids attached to every envelope in the batch.
send booleantrue = bulk send: each envelope is sent immediately in report placement (signatures recorded on the evidence report; no positioned fields). Requires at least one document. Defaults to false (drafts).

Example

cURL
curl -X POST \
  'https://api.sign.quathos.com/api/v1/templates/9c4a.../bulk' \
  -H 'Authorization: Bearer $QUATHOS_SIGN_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 5c9e0a4e-...' \
  -d '{
    "rows": [
      { "recipients": [{ "order_index": 1, "name": "Ana Souza", "email": "ana@example.com" }] },
      { "recipients": [{ "order_index": 1, "name": "João Lima", "email": "joao@example.com" }] }
    ],
    "document_ids": ["c3d4..."],
    "send": true
  }'
Response
{
  "created": ["6b1d...", "7e2f..."],
  "errors": [
    { "index": 4, "message": "template_participant_missing_recipient" }
  ]
}