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 settingcompleted: 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).
Pre-filling field values
Pre-fill fields by passing avalues 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.
X-Submission-Warning: name_key_ambiguous:<key>
Per-submitter field overrides
Use thefields 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-levelquick_sign_mode.
When omitted, the API defaults to:
quick_sign_mode: "confirmation_modal"prefill_behavior: { "skip_if_prefilled": true, "editable_if_prefilled": false }
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.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 fullsubmissions 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:
Listing submissions
Filter parameters
Response:
Retrieving a submission
Sending reminders
Send reminder emails (or SMS) to all submitters who have not yet completed a pending submission.POST /api/submissions/:id/send_reminder
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 includingreminder_subject and reminder_body in the submission preferences when creating or updating a submission.
Subscription payments
Collect subscription payments from signers as part of the signing workflow. UsePOST /api/payments/subscribe to create a subscription payment linked to a submission.
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.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:?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
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.