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.
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.
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.
Go to Settings → API in your dashboard and copy your token.
Upload a PDF or build from scratch in the template editor. Note the template ID.
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
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.
Embed Events
Listen for signing events from the embedded form using window.addEventListener('message', ...). Events include:
| Event | Description |
|---|---|
| completed | Submitter finished signing the document |
| declined | Submitter declined to sign |
| loaded | Signing 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.
| Parameter | Type | Description |
|---|---|---|
| template_id | Integer | Filter by template |
| status | String | Filter: pending, completed, declined, expired |
| q | String | Search by name, email, or phone |
| slug | String | Filter by unique submission slug |
| template_folder | String | Filter by folder name |
| archived | Boolean | Return only archived submissions when true |
| limit | Integer | Results per page (default: 10, max: 100) |
| after | Integer | Cursor ID — returns submissions with ID greater than this value |
| before | Integer | Cursor ID — returns submissions with ID less than this value |
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The 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.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The submission ID |
| Parameter | Type | Description |
|---|---|---|
| template_idrequired | Integer | Template to send for signing |
| submittersrequired | Array | List of submitters with email, role, name, phone |
| send_email | Boolean | Send invitation emails (default: true). Set false for embedding. |
| send_sms | Boolean | Send via SMS (default: false) |
| order | String | preserved (sequential) or random (parallel) |
| completed_redirect_url | String | Redirect URL after completion |
| expire_at | String | Expiration date (ISO 8601) |
| message | Object | Custom email subject and body |
| bcc_completed | String | BCC email for signed documents |
| reply_to | String | Reply-to email for invitation messages |
| external_id | String | Your application-specific unique key |
Submitter Properties
| Property | Type | Description |
|---|---|---|
| String | Submitter email address | |
| role | String | Role name (e.g. "First Party") |
| name | String | Submitter full name |
| phone | String | Phone number (E.164 format) |
| values | Object | Pre-filled field values |
| metadata | Object | Custom key-value metadata |
| completed | Boolean | Auto-sign (mark as completed) |
| fields | Array | Per-field config: name, default_value, readonly, required |
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.
| Parameter | Type | Description |
|---|---|---|
| submittersrequired | Array | List of submitters with email, name, role, phone |
| filesrequired | Array | Array of PDF file URLs or base64-encoded file contents |
| send_email | Boolean | Send invitation emails (default: true) |
| send_sms | Boolean | Send via SMS (default: false) |
| order | String | preserved or random |
| completed_redirect_url | String | Redirect URL after completion |
| expire_at | String | Expiration date (ISO 8601) |
| message | Object | Custom email subject and body |
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.
| Parameter | Type | Description |
|---|---|---|
| submittersrequired | Array | List of submitters with email, name, role, phone |
| filesrequired | Array | Array of DOCX file URLs or base64-encoded file contents |
| send_email | Boolean | Send invitation emails (default: true) |
| send_sms | Boolean | Send via SMS (default: false) |
| order | String | preserved or random |
| completed_redirect_url | String | Redirect URL after completion |
| expire_at | String | Expiration date (ISO 8601) |
| message | Object | Custom email subject and body |
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.
| Parameter | Type | Description |
|---|---|---|
| submittersrequired | Array | List of submitters with email, name, role, phone |
| htmlrequired | String | HTML content to render as the document. Supports CSS styling. |
| send_email | Boolean | Send invitation emails (default: true) |
| send_sms | Boolean | Send via SMS (default: false) |
| order | String | preserved or random |
| completed_redirect_url | String | Redirect URL after completion |
| expire_at | String | Expiration date (ISO 8601) |
| message | Object | Custom email subject and body |
Simplified endpoint for sending signature requests via email. Pass submitter email addresses directly.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The submission ID (in URL path) |
Archives the submission. Archived submissions can be restored from the dashboard. Returns the archived submission object.
Templates
Manage reusable document templates. Templates define the structure of your documents including signature fields, text inputs, and form elements.
| Parameter | Type | Description |
|---|---|---|
| q | String | Search templates by name |
| folder | String | Filter by folder name |
| archived | Boolean | Return archived templates only |
| external_id | String | Filter by external ID |
| limit | Integer | Results per page (default: 10, max: 100) |
| after | Integer | Cursor ID — returns templates with ID greater than this value |
| before | Integer | Cursor ID — returns templates with ID less than this value |
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The 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.
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.
| Parameter | Type | Description |
|---|---|---|
| filesrequired | Array | Array of PDF file URLs or base64-encoded file contents |
| name | String | Template name |
| folder_name | String | Folder to organize the template in |
| external_id | String | Your application-specific unique key |
| roles | Array | Array of submitter role names (e.g. ["First Party", "Second Party"]) |
| fields | Array | Array of field definitions with name, type, role, areas |
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.
| Parameter | Type | Description |
|---|---|---|
| filesrequired | Array | Array of DOCX file URLs or base64-encoded file contents |
| name | String | Template name |
| folder_name | String | Folder to organize the template in |
| external_id | String | Your application-specific unique key |
| roles | Array | Array of submitter role names |
| fields | Array | Array of field definitions with name, type, role, areas |
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.
| Parameter | Type | Description |
|---|---|---|
| htmlrequired | String | HTML content with CSS styling to render as the template document |
| name | String | Template name |
| folder_name | String | Folder to organize the template in |
| external_id | String | Your application-specific unique key |
| roles | Array | Array of submitter role names |
Update template properties including name, folder, external ID, roles, and field configurations.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The template ID (in URL path) |
| name | String | Updated template name |
| folder_name | String | Move template to this folder |
| external_id | String | Your application-specific unique key |
| roles | Array | Update submitter role names |
| fields | Array | Update field definitions |
Add additional documents (pages) to an existing template. New documents are appended after existing ones.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The template ID (in URL path) |
| filesrequired | Array | Array of PDF/DOCX file URLs or base64-encoded file contents |
Creates a full duplicate of the template including all documents, fields, and configuration.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The template ID to clone (in URL path) |
| name | String | Name for the cloned template |
| folder_name | String | Folder for the cloned template |
| external_id | String | External ID for the cloned template |
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The template ID (in URL path) |
Archives the template. Archived templates can be restored from the dashboard. Returns the archived template object.
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.
| Parameter | Type | Description |
|---|---|---|
| submission_id | Integer | Filter by submission |
| q | String | Search by name, email, or phone |
| completed_after | String | Filter submitters completed after this date (ISO 8601) |
| completed_before | String | Filter submitters completed before this date (ISO 8601) |
| external_id | String | Filter by external ID |
| limit | Integer | Results per page (default: 10, max: 100) |
| after | Integer | Cursor ID — returns submitters with ID greater than this value |
| before | Integer | Cursor ID — returns submitters with ID less than this value |
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The 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.
| Parameter | Type | Description |
|---|---|---|
| idrequired | Integer | The submitter ID (in URL path) |
| name | String | Submitter full name |
| String | Updated email address | |
| phone | String | Updated phone number (E.164 format) |
| external_id | String | Your application-specific unique key |
| values | Object | Pre-filled field values |
| metadata | Object | Custom key-value metadata |
| send_email | Boolean | Re-send invitation email after update |
| send_sms | Boolean | Re-send invitation via SMS after update |
| completed | Boolean | Mark submitter as completed (auto-sign) |
Tools & Utilities
Utility endpoints for document operations like merging templates, verifying PDF signatures, and sending documents in bulk.
Combine multiple templates into a single template. Useful for creating document packages.
| Parameter | Type | Description |
|---|---|---|
| template_idsrequired | Array | Array of template IDs to merge |
| name | String | Name for the merged template |
Verify the digital signature on a signed PDF document. Returns signature validity and signer details.
Send a template to multiple recipients in a single API call. Each recipient gets their own submission.
| Parameter | Type | Description |
|---|---|---|
| template_idrequired | Integer | Template to send |
| submittersrequired | Array | Array of submitter arrays, one per recipient |
Events API
Retrieve event logs for form and submission activity. Useful for audit trails, debugging, and monitoring your integration.
Retrieve form events filtered by type: viewed, started, completed, declined.
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.
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.