Zignature API

Programmatically create templates, send documents for signing, and manage your entire document workflow. The API uses JSON for request and response bodies and standard HTTP methods.

Base URL
https://app.zignature.io/api
Authentication
X-Auth-Token
API key in request header
Format
JSON
Request & response bodies
API Documents
$0.20
Per document signed via API

Authentication

All API requests require authentication via the X-Auth-Token header. You can find your API token in Settings → API within your Zignature dashboard.

Your API token carries full account privileges. Keep it secret — never expose it in client-side code, public repositories, or browser requests. Use environment variables and server-side calls only.

Production
Live API token
Documents count toward billing at $0.20/doc
Sandbox
Test API token
Free, unlimited. Documents watermarked TEST

Quick Start

Send your first signature request in under 60 seconds. Just three steps: get your API key, create a template in the dashboard, then call the API.

1
Get your API key

Go to Settings → API in your dashboard and copy your token.

2
Create a template

Upload a PDF or build from scratch in the template editor. Note the template ID.

3
Send for signing

Make a POST request to /api/submissions with the template ID and submitter emails. See the code example on the right.

Embedding

Embed Zignature signing forms directly into your application. Provide a seamless in-app signing experience without redirecting users away from your product.

Full documentation: Signing Form Component · Form Builder Component

your-app.com/contracts/sign

The embed URL is returned in the submitters[].embed_src field when you create a submission with "send_email": false. Use this URL in an iframe or our JavaScript SDK.

Inline Iframe

Embed the signing form directly into your page using a standard HTML iframe. The form resizes automatically to fit its container. Best for dedicated signing pages within your app.

Embed Events

Listen for signing events from the embedded form using window.addEventListener('message', ...). Events include:

EventDescription
completedSubmitter finished signing the document
declinedSubmitter declined to sign
loadedSigning form fully loaded in iframe

Submissions

Signature requests are initiated with the Submissions API. Submissions can contain one or multiple submitters. Creating a submission sends the document for signing.

GET /api/submissions List all submissions
ParameterTypeDescription
template_idIntegerFilter by template
statusStringFilter: pending, completed, declined, expired
qStringSearch by name, email, or phone
slugStringFilter by unique submission slug
template_folderStringFilter by folder name
archivedBooleanReturn only archived submissions when true
limitIntegerResults per page (default: 10, max: 100)
afterIntegerCursor ID — returns submissions with ID greater than this value
beforeIntegerCursor ID — returns submissions with ID less than this value
✓ 200 OK
GET /api/submissions/{id} Get a submission
ParameterTypeDescription
idrequiredIntegerThe submission ID

Returns the submission with full submitter details, document URLs, field values, and audit events. Document URLs are signed and expire after the configured period.

✓ 200 OK
GET /api/submissions/{id}/documents Download signed documents
ParameterTypeDescription
idrequiredIntegerThe submission ID
✓ 200 OK
POST /api/submissions Create a submission
ParameterTypeDescription
template_idrequiredIntegerTemplate to send for signing
submittersrequiredArrayList of submitters with email, role, name, phone
send_emailBooleanSend invitation emails (default: true). Set false for embedding.
send_smsBooleanSend via SMS (default: false)
orderStringpreserved (sequential) or random (parallel)
completed_redirect_urlStringRedirect URL after completion
expire_atStringExpiration date (ISO 8601)
messageObjectCustom email subject and body
bcc_completedStringBCC email for signed documents
reply_toStringReply-to email for invitation messages
external_idStringYour application-specific unique key

Submitter Properties

PropertyTypeDescription
emailStringSubmitter email address
roleStringRole name (e.g. "First Party")
nameStringSubmitter full name
phoneStringPhone number (E.164 format)
valuesObjectPre-filled field values
metadataObjectCustom key-value metadata
completedBooleanAuto-sign (mark as completed)
fieldsArrayPer-field config: name, default_value, readonly, required
✓ 200 OK
POST /api/submissions/pdf Create from PDF

Upload a PDF and create a submission in one step — no pre-existing template required. The PDF is parsed and a template is created automatically with text field tags.

ParameterTypeDescription
submittersrequiredArrayList of submitters with email, name, role, phone
filesrequiredArrayArray of PDF file URLs or base64-encoded file contents
send_emailBooleanSend invitation emails (default: true)
send_smsBooleanSend via SMS (default: false)
orderStringpreserved or random
completed_redirect_urlStringRedirect URL after completion
expire_atStringExpiration date (ISO 8601)
messageObjectCustom email subject and body
✓ 200 OK
POST /api/submissions/docx Create from DOCX

Upload a DOCX file and create a submission in one step. The document is converted to PDF and parsed for embedded text field tags. Supports the same field tag syntax as PDF submissions.

ParameterTypeDescription
submittersrequiredArrayList of submitters with email, name, role, phone
filesrequiredArrayArray of DOCX file URLs or base64-encoded file contents
send_emailBooleanSend invitation emails (default: true)
send_smsBooleanSend via SMS (default: false)
orderStringpreserved or random
completed_redirect_urlStringRedirect URL after completion
expire_atStringExpiration date (ISO 8601)
messageObjectCustom email subject and body
✓ 200 OK
POST /api/submissions/html Create from HTML

Create a submission from raw HTML content. The HTML is rendered to a PDF document for signing. Supports standard HTML/CSS with embedded field tags for dynamic form fields.

ParameterTypeDescription
submittersrequiredArrayList of submitters with email, name, role, phone
htmlrequiredStringHTML content to render as the document. Supports CSS styling.
send_emailBooleanSend invitation emails (default: true)
send_smsBooleanSend via SMS (default: false)
orderStringpreserved or random
completed_redirect_urlStringRedirect URL after completion
expire_atStringExpiration date (ISO 8601)
messageObjectCustom email subject and body
✓ 200 OK
POST /api/submissions/emails Send by email (simplified)

Simplified endpoint for sending signature requests via email. Pass submitter email addresses directly.

✓ 200 OK
DELETE /api/submissions/{id} Archive a submission
ParameterTypeDescription
idrequiredIntegerThe submission ID (in URL path)

Archives the submission. Archived submissions can be restored from the dashboard. Returns the archived submission object.

✓ 200 OK

Templates

Manage reusable document templates. Templates define the structure of your documents including signature fields, text inputs, and form elements.

GET /api/templates List all templates
ParameterTypeDescription
qStringSearch templates by name
folderStringFilter by folder name
archivedBooleanReturn archived templates only
external_idStringFilter by external ID
limitIntegerResults per page (default: 10, max: 100)
afterIntegerCursor ID — returns templates with ID greater than this value
beforeIntegerCursor ID — returns templates with ID less than this value
✓ 200 OK
GET /api/templates/{id} Get template details
ParameterTypeDescription
idrequiredIntegerThe template ID

Returns the full template object including name, fields, schema, documents, submitter roles, and configuration. Document URLs are signed and expire after the configured period.

✓ 200 OK
POST /api/templates/pdf Create from PDF

Create a new template by uploading a PDF document. Use embedded text field tags in the PDF to define form fields, or add fields later via the template builder.

ParameterTypeDescription
filesrequiredArrayArray of PDF file URLs or base64-encoded file contents
nameStringTemplate name
folder_nameStringFolder to organize the template in
external_idStringYour application-specific unique key
rolesArrayArray of submitter role names (e.g. ["First Party", "Second Party"])
fieldsArrayArray of field definitions with name, type, role, areas
✓ 200 OK
POST /api/templates/docx Create from DOCX

Create a new template by uploading a Word document (DOCX). The document is automatically converted to PDF. Supports embedded text field tags for automatic field creation.

ParameterTypeDescription
filesrequiredArrayArray of DOCX file URLs or base64-encoded file contents
nameStringTemplate name
folder_nameStringFolder to organize the template in
external_idStringYour application-specific unique key
rolesArrayArray of submitter role names
fieldsArrayArray of field definitions with name, type, role, areas
✓ 200 OK
POST /api/templates/html Create from HTML

Create a template from raw HTML content. The HTML is rendered to a PDF document. Use standard HTML/CSS with embedded field tags for dynamic form fields. Ideal for programmatic template generation.

ParameterTypeDescription
htmlrequiredStringHTML content with CSS styling to render as the template document
nameStringTemplate name
folder_nameStringFolder to organize the template in
external_idStringYour application-specific unique key
rolesArrayArray of submitter role names
✓ 200 OK
PUT /api/templates/{id} Update a template

Update template properties including name, folder, external ID, roles, and field configurations.

ParameterTypeDescription
idrequiredIntegerThe template ID (in URL path)
nameStringUpdated template name
folder_nameStringMove template to this folder
external_idStringYour application-specific unique key
rolesArrayUpdate submitter role names
fieldsArrayUpdate field definitions
✓ 200 OK
PUT /api/templates/{id}/documents Add documents to template

Add additional documents (pages) to an existing template. New documents are appended after existing ones.

ParameterTypeDescription
idrequiredIntegerThe template ID (in URL path)
filesrequiredArrayArray of PDF/DOCX file URLs or base64-encoded file contents
✓ 200 OK
POST /api/templates/{id}/clone Clone a template

Creates a full duplicate of the template including all documents, fields, and configuration.

ParameterTypeDescription
idrequiredIntegerThe template ID to clone (in URL path)
nameStringName for the cloned template
folder_nameStringFolder for the cloned template
external_idStringExternal ID for the cloned template
✓ 200 OK
DELETE /api/templates/{id} Archive a template
ParameterTypeDescription
idrequiredIntegerThe template ID (in URL path)

Archives the template. Archived templates can be restored from the dashboard. Returns the archived template object.

✓ 200 OK

Submitters

View and manage individual signers within a submission. Each submitter represents a person who needs to sign or fill out parts of the document.

GET /api/submitters List all submitters
ParameterTypeDescription
submission_idIntegerFilter by submission
qStringSearch by name, email, or phone
completed_afterStringFilter submitters completed after this date (ISO 8601)
completed_beforeStringFilter submitters completed before this date (ISO 8601)
external_idStringFilter by external ID
limitIntegerResults per page (default: 10, max: 100)
afterIntegerCursor ID — returns submitters with ID greater than this value
beforeIntegerCursor ID — returns submitters with ID less than this value
✓ 200 OK
GET /api/submitters/{id} Get submitter details
ParameterTypeDescription
idrequiredIntegerThe submitter ID

Returns the submitter with status, field values, document URLs, metadata, and audit events. Document URLs are signed and expire after the configured period.

✓ 200 OK
PUT /api/submitters/{id} Update a submitter
ParameterTypeDescription
idrequiredIntegerThe submitter ID (in URL path)
nameStringSubmitter full name
emailStringUpdated email address
phoneStringUpdated phone number (E.164 format)
external_idStringYour application-specific unique key
valuesObjectPre-filled field values
metadataObjectCustom key-value metadata
send_emailBooleanRe-send invitation email after update
send_smsBooleanRe-send invitation via SMS after update
completedBooleanMark submitter as completed (auto-sign)
✓ 200 OK

Tools & Utilities

Utility endpoints for document operations like merging templates, verifying PDF signatures, and sending documents in bulk.

POST /api/tools/merge Merge multiple templates

Combine multiple templates into a single template. Useful for creating document packages.

ParameterTypeDescription
template_idsrequiredArrayArray of template IDs to merge
nameStringName for the merged template
✓ 200 OK
POST /api/tools/verify Verify PDF signature

Verify the digital signature on a signed PDF document. Returns signature validity and signer details.

✓ 200 OK
POST /api/bulk_send Bulk send to multiple recipients

Send a template to multiple recipients in a single API call. Each recipient gets their own submission.

ParameterTypeDescription
template_idrequiredIntegerTemplate to send
submittersrequiredArrayArray of submitter arrays, one per recipient
✓ 200 OK

Events API

Retrieve event logs for form and submission activity. Useful for audit trails, debugging, and monitoring your integration.

GET /api/events/form/{type} List form events

Retrieve form events filtered by type: viewed, started, completed, declined.

GET /api/events/submission/{type} List submission events

Retrieve submission events filtered by type: created, completed, archived, expired.

Webhooks

Receive real-time HTTP POST notifications when events occur. Configure webhook URLs and secrets in Settings → Webhooks.

submission.created
New submission was created
submission.completed
All submitters finished signing
submission.expired
Submission expired before completion
submission.archived
Submission was archived
form.viewed
Signing form was opened
form.started
Submitter started filling fields
form.completed
Submitter completed and signed
form.declined
Submitter declined to sign
template.created
New template was created
template.updated
Template was modified

Webhook payloads include the full object data. Verify webhook authenticity using your webhook secret with HMAC-SHA256 signature in the X-Hmac-Sha256 header.

SDKs & Libraries

Use the Zignature API with your preferred language. All code examples use standard HTTP libraries — no SDK installation required.

JavaScript
📜TypeScript
🐍Python
🔴Ruby
PHP
Java
🖥C#
🐧Go
API Pricing $0.20 per document · Volume discounts from $0.10/doc · Sandbox always free
View Full Pricing →