Skip to main content
A submission is a single instance of a template sent out for signing. When you create a submission, you assign real people (with names and emails) to each submitter role defined in the template. DocuTrust handles sending invitation emails, tracking progress, and assembling the final signed document.

Submission object

The standard submission object returned by list and create endpoints:

Full submission object

When retrieving a single submission by ID, the response includes additional nested data:

Status lifecycle

Submissions move through these statuses:
A submission moves to completed only when every submitter’s status is completed. If even one submitter is still waiting or sent, the submission remains pending. A submission moves to declined when any submitter declines.

Creating submissions

Basic creation

Send a template for signing by creating a submission with submitter details mapped to the template’s roles.

Request parameters

Submitter parameters

Submitter preferences

Auto-sign

When a submitter’s role is pre-approved (e.g., the sender or an internal representative), you can skip their signing flow entirely by setting completed: true. The submitter is immediately recorded as completed, and the submission moves forward to the next party (or finishes if this was the last submitter).
This is useful for workflows where the sender pre-approves their portion of the document before the recipient signs. The first party’s fields are locked with their pre-filled values, and only the second party needs to complete the signing flow.

Pre-filling field values

Pre-fill fields by passing a values object keyed by field key/name or field UUID. This is useful for populating known information like names, addresses, or dates so signers do not have to type them manually.

Repeated key behavior (fan-out)

If a single key/name matches multiple fields in the template schema:
  • Scalar value: value is applied to all matching field UUIDs.
  • Array value with exact length: values are distributed positionally in document order.
  • Array length mismatch: request fails with 422 invalid_field_values.
  • Mixed UUID + key payloads: UUID-keyed values win for explicitly targeted fields; key-based values fill remaining matches.
When key-based mapping matches multiple fields, the API returns a warning header:
  • X-Submission-Warning: name_key_ambiguous:<key>
Combine pre-filling with readonly: true on the field in the template schema to lock certain values. The signer will see the value but cannot change it.

Per-submitter field overrides

Use the fields array on a submitter to set default values for specific fields by name. This is different from the values object (which uses field keys): fields targets fields by their human-readable name and lets you set a default_value that the signer sees when they open the form.
fields sets the default value shown in the form (the signer can change it unless the field is readonly in the template schema). values pre-fills the field and records it as the submitted value. You can use both together — values takes precedence for any overlapping fields.

Value types by field

Quick sign modes

Control the signing experience for the submission using top-level quick_sign_mode. When omitted, the API defaults to:
  • quick_sign_mode: "confirmation_modal"
  • prefill_behavior: { "skip_if_prefilled": true, "editable_if_prefilled": false }
To force legacy behavior:

Draft submissions

Create a draft submission that is not sent to submitters until you explicitly send it. This is useful for building submissions incrementally or requiring approval before sending.

Create a draft

Update a draft

Modify the draft before sending:

Send a draft

When the draft is ready, send it to all submitters:

Bulk creation

Send the same template to many recipients at once. Each entry in the array creates an independent submission.
Response:

Preview before sending

Use the bulk preview endpoint to validate your data without actually creating submissions:

Email-based bulk creation

Create one submission per email address from a comma-separated string. This is a convenience endpoint that avoids the overhead of building the full submissions array when you only need simple single-role submissions. POST /api/submissions/emails

Request parameters

Response: Returns an array of submitter objects, each with an embed_src URL for embedding the signing form:
Use the embed_src URL from each submitter object to embed the signing form directly in your application via an iframe, without the signer needing to check their email.

Listing submissions

Filter parameters

Response:

Retrieving a submission

This returns the full submission object with nested submitters, audit log, template, and documents.

Sending reminders

Send reminder emails (or SMS) to all submitters who have not yet completed a pending submission. POST /api/submissions/:id/send_reminder
Response:
Reminders are only sent to submitters whose status is waiting, sent, or opened. Submitters who have already completed, declined, or expired are skipped. The reminded count reflects how many submitters actually received a reminder. If the submission is already completed, expired, or archived, the endpoint returns a 422 error.

Customizable reminder emails

Customize the subject and body of reminder emails by including reminder_subject and reminder_body in the submission preferences when creating or updating a submission.
Supported tokens in reminder templates:
If reminder_subject or reminder_body are not set, DocuTrust uses the default reminder email template configured in your account settings.

Subscription payments

Collect subscription payments from signers as part of the signing workflow. Use POST /api/payments/subscribe to create a subscription payment linked to a submission.
Request parameters: Response:
Subscription payments require payment configuration to be set up in your account settings. See the Payments feature guide for initial setup.

Downloading completed documents

Download all documents as a ZIP

Download as a merged PDF

Merge all documents in the submission into a single PDF file. This is useful when a submission contains multiple documents (e.g., agreement + addendum + audit trail) and you want a single combined file.
The merge=true query parameter instructs the server to concatenate all submission documents in order and return a single PDF. Without this parameter, the endpoint returns a ZIP archive containing each document as a separate file.

Download by document type

Request a specific document type instead of the full package:
Add ?inline=true to return with Content-Disposition: inline for in-browser preview instead of download.
Documents are generated asynchronously after all submitters complete. If GET /api/submissions/:id/documents returns an empty array for a completed submission, the document generation job hasn’t finished yet. Wait a few seconds and retry.

List available documents

Response:

Archiving submissions

Archive a submission to remove it from active views. The submission data is preserved and can still be retrieved via the API.
Archiving is a soft delete. The submission and all its documents remain accessible. The archived_at timestamp is set and the status changes to archived.

Creating from document files

You can skip the template creation step entirely and create a submission directly from a document file. DocuTrust creates a one-time template behind the scenes.

From PDF

From DOCX

From HTML