Envelope
An **envelope** is a container that holds **documents** to be sent to **recipients** for signature. It defines and manages the signing process for those documents. ### Lifecycle An envelope moves through five statuses: 1. `processing` -- The envelope is being prepared. Documents are validated and recipients are notified. 2. `in_progress` -- The envelope has been sent to recipients and is waiting for all participants to complete their part. 3. `completed` -- All recipients have completed their part (for example, signed). A **deliverable** is generated and sent to the recipients. 4. `failed` -- An internal error occurred during processing. This is rare and triggers an automatic alert. 5. `canceled` -- The signing process was intentionally stopped before completion via the Cancel Envelope endpoint. ### Relationships An envelope: - Has one or more **recipients** (signers, preparers, or approvers). - Has one or more **documents** (PDF or DOCX format). - Has one or more **deliverables** generated upon completion.
Properties
| Name | Type | Description |
|---|---|---|
| label | object | |
| metadata | object | |
| message | object | |
| title | object | |
| topics | object | |
| branding | object | |
| timezone | object | |
| timestamp_format | object | |
| language | object | |
| routing | object | |
| deliverable | object | Defines the default deliverable configuration for the envelope. The deliverable is the final signed document package generated when all recipients complete the envelope. It is sent to all recipients u |
| attestation | object | |
| documents | object | |
| recipients | object | |
| sender | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/signatureapi-com/json-schema/signatureapi-com-envelope-envelope-input-schema.json",
"title": "Envelope",
"description": "An **envelope** is a container that holds **documents** to be sent to **recipients** for signature. It defines and manages the signing process for those documents.\n\n### Lifecycle\n\nAn envelope moves through five statuses:\n\n1. `processing` -- The envelope is being prepared. Documents are validated and recipients are notified.\n2. `in_progress` -- The envelope has been sent to recipients and is waiting for all participants to complete their part.\n3. `completed` -- All recipients have completed their part (for example, signed). A **deliverable** is generated and sent to the recipients.\n4. `failed` -- An internal error occurred during processing. This is rare and triggers an automatic alert.\n5. `canceled` -- The signing process was intentionally stopped before completion via the Cancel Envelope endpoint.\n\n### Relationships\n\nAn envelope:\n\n- Has one or more **recipients** (signers, preparers, or approvers).\n- Has one or more **documents** (PDF or DOCX format).\n- Has one or more **deliverables** generated upon completion.",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/signatureapi-com-openapi.yml#/components/schemas/Envelope.EnvelopeInput",
"x-schema-role": "model",
"x-schema-direction": "input",
"type": "object",
"additionalProperties": false,
"properties": {
"label": {
"$ref": "#/$defs/Envelope.Label"
},
"metadata": {
"$ref": "#/$defs/Envelope.Metadata"
},
"message": {
"$ref": "#/$defs/Envelope.Message"
},
"title": {
"$ref": "#/$defs/Envelope.Title"
},
"topics": {
"$ref": "#/$defs/Envelope.Topics"
},
"branding": {
"$ref": "#/$defs/Envelope.BrandingInput"
},
"timezone": {
"$ref": "#/$defs/Envelope.Timezone"
},
"timestamp_format": {
"$ref": "#/$defs/Envelope.TimestampFormat"
},
"language": {
"$ref": "#/$defs/Envelope.Language"
},
"routing": {
"$ref": "#/$defs/Envelope.Routing"
},
"deliverable": {
"description": "Defines the default deliverable configuration for the envelope. The deliverable is the final signed document package generated when all recipients complete the envelope. It is sent to all recipients unless their `recipient.delivery_type` is set to `none`.\n\nTwo types are available:\n\n- `standard` -- Includes signed documents and an audit log.\n- `simple` -- Includes signed documents only, without an audit log.\n\nIf no deliverable is provided, a `standard` deliverable is automatically generated.",
"allOf": [
{
"$ref": "#/$defs/Deliverable.DeliverableInput"
}
]
},
"attestation": {
"$ref": "#/$defs/Envelope.Attestation"
},
"documents": {
"$ref": "#/$defs/Envelope.DocumentsInput"
},
"recipients": {
"$ref": "#/$defs/Envelope.RecipientsInput"
},
"sender": {
"$ref": "#/$defs/Envelope.SenderInput"
}
},
"required": [
"title",
"documents",
"recipients"
],
"$defs": {
"Ceremony.AuthenticationInput": {
"x-schema-role": "property",
"x-schema-direction": "input",
"title": "Ceremony Authentication",
"description": "The authentication methods the recipient must complete before accessing the ceremony. This is an ordered array. The recipient completes each method in sequence.\n\nFour authentication types are available:\n\n- **email_link** -- SignatureAPI sends the recipient an email with a clickable link to the ceremony.\n- **email_code** -- SignatureAPI sends the recipient a 9-digit verification code by email.\n- **custom** -- Your application handles authentication and shares the ceremony URL directly.\n- **identity_verification** -- The recipient proves their identity with an identity verification provider.\n\nThe first method decides who delivers the ceremony URL. When the first method is `email_link`, SignatureAPI emails the link and the `url` property is `null`. When it is `email_code` or `custom`, the `url` property is returned and your application delivers it. Methods after the first are challenges the recipient completes inside the ceremony, and they never change who delivers the URL.\n\nYou can combine multiple types for added security. For example:\n\n- `[email_link, email_code]` -- SignatureAPI emails the invitation link, and the recipient must also enter an emailed verification code to open the ceremony. Both emails come from SignatureAPI, so your application sends none.\n- `[custom, email_code]` -- your application authenticates the recipient and delivers the URL, and the recipient must also enter an emailed verification code.\n\nSee the constraints below:\n\n- `email_link` can only be the first step.\n- `custom` can only be the first step.\n- `email_link` and `custom` cannot be combined together.\n- `email_code` can appear at most once.\n- `identity_verification` can never be the first step, and can appear at most once. It is enabled per account.\n",
"type": "array",
"minItems": 1,
"maxItems": 5,
"items": {
"oneOf": [
{
"$ref": "#/$defs/Ceremony.EmailLinkAuthenticationInput"
},
{
"$ref": "#/$defs/Ceremony.EmailCodeAuthenticationInput"
},
{
"$ref": "#/$defs/Ceremony.CustomAuthenticationInput"
},
{
"$ref": "#/$defs/Ceremony.IdentityVerificationAuthenticationInput"
}
]
}
},
"Ceremony.AuthenticationType": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"title": "Ceremony Authentication Type",
"description": "The type of authentication for the ceremony.\n\n- `email_link` -- SignatureAPI sends the recipient an email with a direct link to the ceremony.\n- `email_code` -- SignatureAPI sends the recipient a 9-digit verification code by email. The recipient requests the code from the ceremony and enters it there.\n- `custom` -- Your application handles authentication and shares the ceremony URL directly.\n- `identity_verification` -- The recipient proves their identity with an identity verification provider. This is a challenge that follows a main type, so it cannot be the first item of the array.\n\nAuthentication is an ordered array, and the **first** method decides who delivers the ceremony URL:\n\n- `email_link` first -- SignatureAPI emails the link, and the `url` property is `null`. This still holds when other methods follow it, so `[email_link, email_code]` sends both the invitation email and the code by email, and your application sends nothing.\n- `email_code` or `custom` first -- the `url` property is returned in the response, and your application delivers it.\n",
"enum": [
"email_link",
"email_code",
"custom",
"identity_verification"
]
},
"Ceremony.CeremonyInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Ceremony",
"description": "A **ceremony** is the interactive session where a **recipient** authenticates and performs their actions on an **envelope**. Depending on the recipient type, these actions include signing, approving, or preparing documents.\n\nEach recipient can have one active ceremony at a time. When you create a new ceremony for a recipient, any previous ceremonies are automatically revoked.\n\n### Lifecycle\n\nA ceremony moves through the following statuses:\n\n- **pending** -- The ceremony is created but the envelope is not yet active.\n- **active** -- The ceremony is ready for the recipient to access.\n- **completed** -- The recipient finished their actions.\n- **declined** -- The recipient declined to act.\n- **revoked** -- The ceremony was replaced by a new one or canceled.\n\n### Authentication\n\nEvery ceremony requires at least one authentication method. You can combine multiple methods that the recipient must complete in sequence before accessing the ceremony.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"authentication": {
"$ref": "#/$defs/Ceremony.AuthenticationInput"
},
"embeddable_in": {
"$ref": "#/$defs/Ceremony.EmbeddableIn"
},
"redirect_url": {
"$ref": "#/$defs/Ceremony.RedirectUrl"
},
"redirect_delay": {
"$ref": "#/$defs/Ceremony.RedirectDelay"
},
"url_variant": {
"$ref": "#/$defs/Ceremony.UrlVariant"
}
},
"required": [
"authentication"
]
},
"Ceremony.CustomAuthenticationData": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "object",
"title": "Custom Authentication Data",
"description": "Key-value pairs that link the ceremony to your authentication records. This data appears in the envelope audit log.\n\nInclude information that can verify how the recipient was authenticated, such as session IDs, timestamps, or user identifiers. Avoid including unnecessary sensitive details.\n",
"minProperties": 1,
"maxProperties": 10,
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"unevaluatedProperties": false
},
"Ceremony.CustomAuthenticationInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Custom Authentication",
"description": "Custom authentication lets your application handle recipient verification. SignatureAPI provides a ceremony URL that you share with the recipient through your preferred channel.\n\nUse this method when recipients are already authenticated in your system, or when you need full control over the authentication flow. This is common for embedded signing experiences.\n\nYou must provide a `provider` name and a `data` object with key-value pairs that link the ceremony to your authentication records. Both appear in the envelope audit log.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"allOf": [
{
"$ref": "#/$defs/Ceremony.AuthenticationType"
},
{
"const": "custom"
}
]
},
"provider": {
"$ref": "#/$defs/Ceremony.CustomAuthenticationProvider"
},
"data": {
"$ref": "#/$defs/Ceremony.CustomAuthenticationData"
}
},
"required": [
"type",
"provider",
"data"
]
},
"Ceremony.CustomAuthenticationProvider": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"minLength": 1,
"maxLength": 100,
"title": "Custom Authentication Provider",
"description": "The name of your company or application that authenticated the recipient. This value appears in the envelope audit log as the authentication provider.\n"
},
"Ceremony.EmailCodeAuthenticationInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Email Code Authentication",
"description": "Email code authentication sends the recipient a 9-digit verification code by email. The recipient requests the code from the ceremony and enters it to continue.\n\nUse this method to add an extra layer of verification to a ceremony. Where it sits in the `authentication` array decides who delivers the ceremony URL:\n\n- **First in the array** -- the `url` property is returned in the response and your application delivers it through the channel of your choice. SignatureAPI sends no invitation email, only the code email.\n- **After `email_link`** -- SignatureAPI emails the invitation link as usual and the `url` property is `null`. The code becomes a second step inside the ceremony, and SignatureAPI sends both emails.\n- **After `custom`** -- your application authenticates the recipient and delivers the returned URL, and the code is a second step.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"allOf": [
{
"$ref": "#/$defs/Ceremony.AuthenticationType"
},
{
"const": "email_code"
}
]
}
},
"required": [
"type"
]
},
"Ceremony.EmailLinkAuthenticationInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Email Link Authentication",
"description": "Email link authentication sends the recipient an email with a direct link to the ceremony. The recipient clicks the link to authenticate and access the signing session.\n\nThis is the default authentication method. If you create an envelope without specifying a ceremony, SignatureAPI uses email link authentication automatically.\n\nBecause SignatureAPI delivers the link itself, the ceremony's `url` property is `null`. This holds when other methods follow it in the array: `[email_link, email_code]` still has SignatureAPI send the invitation email, and adds an emailed verification code as a second step.\n\nYou can customize the email subject and message body per recipient using `subject_override` and `message_override`. If not set, the envelope title and message are used.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"allOf": [
{
"$ref": "#/$defs/Ceremony.AuthenticationType"
},
{
"const": "email_link"
}
]
},
"subject_override": {
"$ref": "#/$defs/Ceremony.EmailLinkSubjectOverride"
},
"message_override": {
"$ref": "#/$defs/Ceremony.EmailLinkMessageOverride"
}
},
"required": [
"type"
]
},
"Ceremony.EmailLinkMessageOverride": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": [
"string",
"null"
],
"title": "Email Message Override",
"description": "A custom message body for the ceremony invitation email sent to this recipient. Supports basic Markdown: `**bold**`, `*italic*`, and `\\n\\n` for paragraph breaks.\n\nIf not set, the envelope message is used. Set to an empty string `\"\"` to send the email with no message body.\n",
"maxLength": 2000
},
"Ceremony.EmailLinkSubjectOverride": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": [
"string",
"null"
],
"title": "Email Subject Override",
"description": "A custom subject line for the ceremony invitation email sent to this recipient.\n\nIf not set, the envelope title is used as the subject line.\n",
"minLength": 1,
"maxLength": 500
},
"Ceremony.EmbeddableIn": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "array",
"title": "Embeddable In",
"description": "Origins allowed to embed the ceremony in an iframe.\n\nThese values set the `frame-ancestors` directive in the ceremony's Content Security Policy (CSP) header.\n\nEach source is typically a scheme and host, like `https://app.example.com`. Wildcards are supported, like `https://*.example.com`. Only the origin (scheme and host) is used; the path is ignored.\n\nIf empty, the ceremony cannot be embedded in an iframe.\n\nSet to `['*']` to allow embedding from any origin. This is recommended only for development.\n",
"maxItems": 10,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"default": []
},
"Ceremony.IdentityVerificationAuthenticationInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Identity Verification Authentication",
"description": "Identity verification sends the recipient to an identity verification provider before they can access the ceremony. The recipient proves who they are with the `method` you choose, and returns to the ceremony once the provider reports a result.\n\nUse this method when a signature needs a verified identity behind it, for example for qualified or advanced electronic signatures.\n\nIdentity verification is a challenge, not a main authentication type. It always follows a main type such as `email_link` or `custom`, so it cannot be the first item of the `authentication` array, and it can appear at most once.\n\nYou must provide a `method`. The `provider` is optional and defaults to `stub`.\n\nIdentity verification is enabled per account. Contact support to turn it on before using it.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"allOf": [
{
"$ref": "#/$defs/Ceremony.AuthenticationType"
},
{
"const": "identity_verification"
}
]
},
"method": {
"$ref": "#/$defs/Ceremony.IdentityVerificationMethod"
},
"provider": {
"$ref": "#/$defs/Ceremony.IdentityVerificationProvider"
}
},
"required": [
"type",
"method"
]
},
"Ceremony.IdentityVerificationMethod": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"title": "Identity Verification Method",
"description": "The identity verification the recipient must complete. Required — there is no automatic selection.\n\n- `document_selfie` -- The recipient photographs a government-issued identity document and takes a selfie for a liveness and face match.\n- `eid` -- The recipient authenticates with a national or government-issued electronic identity scheme.\n- `video_ident` -- The recipient completes a video session with an agent who checks their identity document.\n- `reuse_credential` -- The recipient reuses an identity credential they already hold with the provider, without verifying again.\n",
"x-enum-descriptions": {
"document_selfie": "Identity document photo plus a selfie liveness and face match.",
"eid": "National or government-issued electronic identity scheme.",
"video_ident": "Live video session with an agent.",
"reuse_credential": "Reuse of an identity credential the recipient already holds with the provider."
},
"enum": [
"document_selfie",
"eid",
"video_ident",
"reuse_credential"
]
},
"Ceremony.IdentityVerificationProvider": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"title": "Identity Verification Provider",
"description": "The identity verification provider that performs the check. Optional — defaults to `stub`.\n\n- `stub` -- A built-in test provider that simulates the verification without contacting a real identity service.\n",
"x-enum-descriptions": {
"stub": "Built-in test provider that simulates the verification."
},
"default": "stub",
"enum": [
"stub"
]
},
"Ceremony.RedirectDelay": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": [
"integer",
"null"
],
"title": "Redirect Delay",
"minimum": 0,
"maximum": 20,
"description": "The delay in seconds before the ceremony redirects to `redirect_url` (standalone) or emits completion events (embedded).\n\nSet to `0` for an immediate redirect. Defaults to `3` seconds. Maximum is `20` seconds.\n",
"default": 3
},
"Ceremony.RedirectUrl": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": [
"string",
"null"
],
"title": "Redirect URL",
"format": "uri",
"pattern": "^https://.*$",
"description": "The URL the recipient is redirected to after the ceremony ends. Must use HTTPS. Embedded ceremonies ignore this redirect.\n\nSignatureAPI appends these query parameters to the URL:\n- `ceremony_result` -- The outcome: `ceremony.completed`, `ceremony.declined`, or `ceremony.failed`.\n- `envelope_id` -- The ID of the envelope.\n- `recipient_id` -- The ID of the recipient.\n\nFor example: `https://example.com/?ceremony_result=ceremony.completed&envelope_id=...&recipient_id=...`\n\nIf not set, the ceremony does not redirect.\n",
"default": null
},
"Ceremony.UrlVariant": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"title": "URL Variant",
"description": "The format of the ceremony URL.\n\n- `standard` -- Full-length URL. Works for most use cases.\n- `short` -- Shortened URL. Useful for space-constrained channels like SMS or push notifications.\n\nDefaults to `standard`.\n",
"enum": [
"standard",
"short"
],
"default": "standard"
},
"Deliverable.DeliverableInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Deliverable",
"description": "A **deliverable** is the final PDF output generated after an envelope is completed. It contains the signed documents and may include an audit trail, depending on the type.\n\nThe `type` field determines the deliverable variant:\n\n- `standard` -- Includes signed documents and an audit log with a certificate of completion.\n- `simple` -- Includes signed documents only, without an audit log.\n\n### Lifecycle\n\nA deliverable moves through these statuses:\n\n1. `pending` -- Waiting for the envelope to complete.\n2. `processing` -- The envelope is completed and the deliverable is being generated. This usually takes a few seconds.\n3. `generated` -- The deliverable is ready. The `url` field contains a download link.\n4. `failed` -- Generation failed. This is rare and triggers an automatic alert to support.\n\n### Default behavior\n\nWhen an envelope is created without an explicit deliverable configuration, a `standard` deliverable is generated automatically upon completion. You can also create additional deliverables after the envelope completes using the Create Deliverable endpoint.\n",
"oneOf": [
{
"$ref": "#/$defs/Deliverable.StandardInput"
},
{
"$ref": "#/$defs/Deliverable.SimpleInput"
},
{
"type": "null"
}
]
},
"Deliverable.IncludedDocuments": {
"x-schema-role": "model",
"x-schema-direction": "any",
"title": "Included Documents",
"type": "array",
"description": "The keys of the documents to include in the deliverable.\n\nBy default, all documents in the envelope are included. Use this field to create a deliverable with only a subset of documents, for example to generate separate deliverables for different recipients.",
"items": {
"$ref": "#/$defs/Document.Key"
},
"minItems": 1,
"maxItems": 10
},
"Deliverable.Language": {
"x-schema-role": "property",
"x-schema-direction": "any",
"allOf": [
{
"title": "Language",
"description": "The language used for system-generated text in the audit log, such as labels and the certificate of completion. This does not affect the signed document content.\n\nIf not specified, the language of the envelope is used.\n"
},
{
"$ref": "#/$defs/Envelope.Language"
}
]
},
"Deliverable.Name": {
"x-schema-role": "property",
"x-schema-direction": "any",
"title": "Deliverable Name",
"description": "A user-provided name for this deliverable. Use this to identify deliverables when an envelope has more than one.\n\nMust start with a lowercase letter and contain only lowercase letters, numbers, and underscores.",
"type": [
"string",
"null"
],
"pattern": "^[a-z][a-z0-9_]*$",
"minLength": 1,
"maxLength": 32
},
"Deliverable.Password": {
"x-schema-role": "property",
"x-schema-direction": "input",
"type": "string",
"title": "Deliverable Password",
"minLength": 4,
"maxLength": 32,
"pattern": "^[A-Za-z0-9]+$",
"description": "A password used to encrypt the deliverable PDF with AES-128 encryption. Recipients must enter this password to open the file.\n\nThe password must be between 4 and 32 characters long and contain only uppercase letters (A-Z), lowercase letters (a-z), and numbers (0-9). Special characters are not supported due to PDF reader compatibility.\n\nFor strong protection, use at least 12 characters with a random mix of uppercase, lowercase, and numbers.\n\nIn API responses, the password is masked as `********`.\n\nTo use this feature, contact support to enable it on your account.\n"
},
"Deliverable.SimpleInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Simple Deliverable",
"description": "A **simple deliverable** is a PDF that contains only the signed documents. No audit log pages are included in the output.\n\nThe audit trail is still embedded as metadata within the PDF for verification purposes. Use a simple deliverable when you want a clean document without the audit log visible in the PDF pages.\n\nYou can customize which documents are included using the `included_documents` field. Password protection is also available.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/$defs/Deliverable.Name"
},
"type": {
"allOf": [
{
"$ref": "#/$defs/Deliverable.Type"
},
{
"const": "simple"
}
]
},
"included_documents": {
"$ref": "#/$defs/Deliverable.IncludedDocuments"
},
"password": {
"$ref": "#/$defs/Deliverable.Password"
}
},
"required": [
"type"
]
},
"Deliverable.StandardInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Standard Deliverable",
"description": "A **standard deliverable** is a PDF that contains the signed documents and an audit log. The audit log records each action taken during the signing process and includes a certificate of completion.\n\nThe `language`, `timezone`, and `timestamp_format` fields control how system-generated text and timestamps appear in the audit log. These settings do not affect the signed document content.\n\nIf not specified, these values default to the envelope's settings.\n\nYou can customize which documents are included using the `included_documents` field. Password protection is also available.\n",
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/$defs/Deliverable.Name"
},
"type": {
"allOf": [
{
"$ref": "#/$defs/Deliverable.Type"
},
{
"const": "standard"
}
]
},
"timezone": {
"$ref": "#/$defs/Deliverable.Timezone"
},
"timestamp_format": {
"$ref": "#/$defs/Deliverable.TimestampFormat"
},
"language": {
"$ref": "#/$defs/Deliverable.Language"
},
"included_documents": {
"$ref": "#/$defs/Deliverable.IncludedDocuments"
},
"password": {
"$ref": "#/$defs/Deliverable.Password"
}
},
"required": [
"type"
]
},
"Deliverable.TimestampFormat": {
"x-schema-role": "property",
"x-schema-direction": "any",
"allOf": [
{
"title": "Timestamp Format",
"description": "The format used for timestamps in the audit log. This controls how dates and times appear in the system-generated pages of the deliverable.\n\nIf not specified, the timestamp format of the envelope is used.\n"
},
{
"$ref": "#/$defs/Envelope.TimestampFormat"
}
]
},
"Deliverable.Timezone": {
"x-schema-role": "property",
"x-schema-direction": "any",
"allOf": [
{
"title": "Deliverable Timezone",
"description": "The timezone used for timestamps in the audit log. This does not affect the signed document content or the `created_at` and `generated_at` API fields.\n\nIf not specified, the timezone of the envelope is used.\n"
},
{
"$ref": "#/$defs/Envelope.Timezone"
}
]
},
"Deliverable.Type": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "string",
"title": "Deliverable Type",
"enum": [
"simple",
"standard"
],
"description": "The type of the deliverable.\n\n- `standard` -- Includes signed documents and an audit log with a certificate of completion.\n- `simple` -- Includes signed documents only, without an audit log.\n"
},
"Document.Data": {
"x-schema-role": "property",
"x-schema-direction": "any",
"type": "object",
"title": "Document Data",
"description": "Template data used to fill dynamic fields in a DOCX template. Each key corresponds to a `{{key}}` placeholder in the template file.\n\nKeys must be alphanumeric and at most 32 characters. Values can be strings, booleans, or nested objects. Nested keys map to dot-notation placeholders (e.g., a key `person` with nested key `name` fills `{{person.name}}`).",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"pattern": "^[a-zA-Z0-9]+$",
"description": "Keys must be up to 32 alphanumeric characters."
},
"unevaluatedProperties": false,
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
}
]
}
}
]
},
"default": {}
},
"Document.DocumentInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Document",
"description": "A **document** is a file within an envelope that recipients interact with. Each document is either a PDF or a DOCX file.\n\nThe `format` field determines the document type:\n\n- **`pdf`** -- A PDF file. Supports places positioned by placeholders or fixed coordinates.\n- **`docx`** -- A DOCX file. Supports template fields for dynamic content in addition to places.\n\n### Document source\n\nProvide a publicly accessible URL when creating a document. You can host files yourself or use the **Upload** endpoint to upload files to SignatureAPI first.\n\n### Places\n\nEach document can have **places** -- interactive fields like signatures, text inputs, and checkboxes that recipients fill in. Places can also display information such as dates and static text.\n\nPlaces are positioned in two ways:\n\n- **Placeholders** embedded in the document text (e.g., `[[place_key]]`).\n- **Fixed positions** specified by page number and coordinates in points.\n\n### Relationships\n\nA document:\n\n- Belongs to one **envelope**.\n- Has zero or more **places**.\n",
"oneOf": [
{
"$ref": "#/$defs/Document.DocxDocumentInput"
},
{
"$ref": "#/$defs/Document.PdfDocumentInput"
}
]
},
"Document.DocxDocumentInput": {
"x-schema-role": "model",
"x-schema-direction": "input",
"title": "Docx Document",
"description": "A DOCX document within an envelope.\n\nDOCX documents support **templates** -- dynamic content generation from a static template combined with data you provide. Use double curly braces in your DOCX file to mark template fields (e.g., `{{name}}`). Nested objects
# --- truncated at 32 KB (113 KB total) ---
# Full source: https://artifacts.apis.io/signatureapi-com/json-schema/signatureapi-com-envelope-envelope-input-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/signatureapi-com-envelope-envelope-input"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.