Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Signatureapi Com Deliverables API
version: 1.18.0
contact:
name: Signature API, Inc.
email: support@signatureapi.com
termsOfService: https://signatureapi.com/terms
description: 'Operations tagged Deliverables across 2 of this provider''s published API definitions: spec_openapi.yaml, signatureapi-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- description: SignatureAPI Global Server.
url: https://api.signatureapi.com/v1
security:
- ApiKeyAuth: []
tags:
- name: Deliverables
description: A **deliverable** is the final signed PDF generated after an envelope completes. It contains the signed documents and an audit trail.
paths:
/envelopes/{envelopeId}/deliverables:
parameters:
- $ref: '#/components/parameters/EnvelopeId'
post:
operationId: CreateDeliverable
summary: Create a deliverable
x-audience: public
tags:
- Deliverables
description: 'Creates a new deliverable from a completed envelope. The envelope must have a status of `completed`.
Use this endpoint to generate additional deliverables after an envelope completes. For example, you might create a simple deliverable containing only specific documents, or a password-protected copy for secure distribution.
The deliverable starts in `processing` status and transitions to `generated` once the PDF is ready. This usually takes a few seconds. Subscribe to the `deliverable.generated` webhook to be notified when the deliverable is available for download.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Deliverable.DeliverableInput'
responses:
'201':
description: The deliverable was created successfully.
headers:
Location:
$ref: '#/components/headers/Location'
content:
application/json:
schema:
$ref: '#/components/schemas/Deliverable.Deliverable'
'422':
$ref: '#/components/responses/Shared.ValidationError'
4XX:
$ref: '#/components/responses/Shared.ClientError'
5XX:
$ref: '#/components/responses/Shared.ServerError'
get:
operationId: ListEnvelopeDeliverables
summary: List deliverables
x-audience: public
tags:
- Deliverables
description: 'Returns a list of deliverables for an envelope. Each envelope has at least one deliverable created automatically when the envelope completes. Additional deliverables may exist if created via the Create Deliverable endpoint.
The deliverables are sorted chronologically by creation date, with the earliest created deliverable appearing first.'
parameters:
- $ref: '#/components/parameters/PaginationLimit'
responses:
'200':
description: The list of deliverables was retrieved successfully.
content:
application/json:
schema:
type: object
properties:
links:
$ref: '#/components/schemas/Shared.PaginationLinks'
data:
type: array
description: An array of deliverables.
items:
$ref: '#/components/schemas/Deliverable.Deliverable'
4XX:
$ref: '#/components/responses/Shared.ClientError'
5XX:
$ref: '#/components/responses/Shared.ServerError'
servers:
- description: SignatureAPI Global Server.
url: https://api.signatureapi.com/v1
/deliverables/{deliverableId}:
parameters:
- $ref: '#/components/parameters/DeliverableId'
get:
operationId: GetDeliverable
summary: Retrieve a deliverable
x-audience: public
tags:
- Deliverables
description: 'Retrieves the details of a deliverable, including its current status and download URL.
When the deliverable status is `generated`, the response includes a `url` field with a download link. By default, this is a pre-signed URL that expires after 1 hour. Call this endpoint again to get a fresh URL if the previous one has expired.'
responses:
'200':
description: The deliverable was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Deliverable.Deliverable'
4XX:
$ref: '#/components/responses/Shared.ClientError'
5XX:
$ref: '#/components/responses/Shared.ServerError'
servers:
- description: SignatureAPI Global Server.
url: https://api.signatureapi.com/v1
components:
schemas:
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.
By 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.'
examples:
- - contract
- addendum
items:
$ref: '#/components/schemas/Document.Key'
minItems: 1
maxItems: 10
Document.Key:
x-schema-role: property
x-schema-direction: any
title: Document Key
description: 'A user-provided identifier for this document within the envelope. Must be unique within the envelope. Use the key to reference this document in other parts of the API.
Only lowercase letters, numbers, and underscores are allowed. Must start with a letter.
If not provided, a key is generated automatically.'
type: string
pattern: ^[a-z][a-z0-9_]*$
minLength: 1
maxLength: 32
examples:
- agreement
- byod_policy
Envelope.Id:
x-schema-role: property
x-schema-direction: output
type: string
format: uuid
title: Envelope Id
description: The unique identifier of the envelope, in UUID format.
examples:
- 5e5ace5e-bd1e-4d5a-bb1f-6a2b2e42cd13
Envelope.TimestampFormat:
x-schema-role: property
x-schema-direction: any
type: string
title: Timestamp Format
description: 'The date and time format used for timestamps in the deliverable''s audit log. Uses MomentJS format tokens (e.g., `MM/DD/YYYY HH:mm:ss`).
If not specified, the account''s default timestamp format is used.
'
example: MM/DD/YYYY HH:mm:ss
Deliverable.Deliverable:
x-schema-role: model
x-schema-direction: output
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.
The `type` field determines the deliverable variant:
- `standard` -- Includes signed documents and an audit log with a certificate of completion.
- `simple` -- Includes signed documents only, without an audit log.
### Lifecycle
A deliverable moves through these statuses:
1. `pending` -- Waiting for the envelope to complete.
2. `processing` -- The envelope is completed and the deliverable is being generated. This usually takes a few seconds.
3. `generated` -- The deliverable is ready. The `url` field contains a download link.
4. `failed` -- Generation failed. This is rare and triggers an automatic alert to support.
### Default behavior
When 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.
'
oneOf:
- $ref: '#/components/schemas/Deliverable.Standard'
- $ref: '#/components/schemas/Deliverable.Simple'
- type: 'null'
discriminator:
propertyName: type
mapping:
standard: '#/components/schemas/Deliverable.Standard'
simple: '#/components/schemas/Deliverable.Simple'
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.
If not specified, the language of the envelope is used.
'
- $ref: '#/components/schemas/Envelope.Language'
Envelope.Language:
x-schema-role: property
x-schema-direction: any
type: string
title: Language
enum:
- en
- es
- fr
- it
- pt
- de
- zh
- hu
- nl
description: 'The language used for the signing ceremony, recipient emails, and the audit log in deliverables.
Supported languages: `en` (English), `es` (Spanish), `fr` (French), `it` (Italian), `pt` (Portuguese), `de` (German), `zh` (Chinese Simplified), `hu` (Hungarian), `nl` (Dutch).
If not specified, the account''s default language will be used instead.
'
examples:
- en
Deliverable.Standard:
x-schema-role: model
x-schema-direction: output
type: object
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.
The `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.
If not specified, these values default to the envelope''s settings.
You can customize which documents are included using the `included_documents` field. Password protection is also available.
'
properties:
id:
$ref: '#/components/schemas/Deliverable.Id'
name:
$ref: '#/components/schemas/Deliverable.Name'
envelope_id:
$ref: '#/components/schemas/Deliverable.EnvelopeId'
type:
allOf:
- $ref: '#/components/schemas/Deliverable.Type'
- const: standard
status:
$ref: '#/components/schemas/Deliverable.Status'
url:
$ref: '#/components/schemas/Deliverable.Url'
timezone:
$ref: '#/components/schemas/Deliverable.Timezone'
timestamp_format:
$ref: '#/components/schemas/Deliverable.TimestampFormat'
language:
$ref: '#/components/schemas/Deliverable.Language'
included_documents:
$ref: '#/components/schemas/Deliverable.IncludedDocuments'
password:
$ref: '#/components/schemas/Deliverable.MaskedPassword'
created_at:
$ref: '#/components/schemas/Deliverable.CreatedAt'
generated_at:
$ref: '#/components/schemas/Deliverable.GeneratedAt'
required:
- id
- name
- envelope_id
- type
- status
- url
- timezone
- timestamp_format
- language
- included_documents
- password
- created_at
- generated_at
Deliverable.Type:
x-schema-role: property
x-schema-direction: any
type: string
title: Deliverable Type
enum:
- simple
- standard
description: 'The type of the deliverable.
- `standard` -- Includes signed documents and an audit log with a certificate of completion.
- `simple` -- Includes signed documents only, without an audit log.
'
examples:
- standard
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.
If not specified, the timestamp format of the envelope is used.
'
- $ref: '#/components/schemas/Envelope.TimestampFormat'
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.
The 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.
For strong protection, use at least 12 characters with a random mix of uppercase, lowercase, and numbers.
In API responses, the password is masked as `********`.
To use this feature, contact support to enable it on your account.
'
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.
Must 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
examples:
- hr_pack
- compliance_acceptance
Deliverable.EnvelopeId:
x-schema-role: property
x-schema-direction: output
allOf:
- title: Envelope ID
description: The unique identifier of the envelope that this deliverable belongs to.
- $ref: '#/components/schemas/Envelope.Id'
Deliverable.GeneratedAt:
x-schema-role: property
x-schema-direction: output
type:
- string
- 'null'
format: date-time
title: Deliverable Generated At
description: Time at which the deliverable was successfully generated. This is `null` until the deliverable reaches `generated` status.
examples:
- '2024-01-01T00:01:00Z'
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.
If not specified, the timezone of the envelope is used.
'
- $ref: '#/components/schemas/Envelope.Timezone'
Shared.PaginationLinks:
x-schema-role: property
x-schema-direction: output
title: Pagination Links
description: 'Navigation links for cursor-based pagination. All list endpoints return results in reverse chronological order. Use the `next` and `previous` URLs to move between pages. Treat these URLs as opaque strings — do not parse or construct them yourself.
'
type: object
additionalProperties: false
properties:
next:
type:
- string
- 'null'
format: uri
description: 'A pre-built URL for fetching the next page of results. Returns `null` when you are on the last page. Send a GET request to this URL to load more results.
'
example: https://api.signatureapi.com/v1/envelopes?cursor=seq_0thJdKRhN4&limit=20
previous:
type:
- string
- 'null'
format: uri
description: 'A pre-built URL for fetching the previous page of results. Returns `null` when you are on the first page. Send a GET request to this URL to go back.
'
example: https://api.signatureapi.com/v1/envelopes?cursor=seq_7yNl3c0t&limit=20
required:
- next
- previous
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.
The `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.
If not specified, these values default to the envelope''s settings.
You can customize which documents are included using the `included_documents` field. Password protection is also available.
'
type: object
additionalProperties: false
properties:
name:
$ref: '#/components/schemas/Deliverable.Name'
type:
allOf:
- $ref: '#/components/schemas/Deliverable.Type'
- const: standard
timezone:
$ref: '#/components/schemas/Deliverable.Timezone'
timestamp_format:
$ref: '#/components/schemas/Deliverable.TimestampFormat'
language:
$ref: '#/components/schemas/Deliverable.Language'
included_documents:
$ref: '#/components/schemas/Deliverable.IncludedDocuments'
password:
$ref: '#/components/schemas/Deliverable.Password'
required:
- type
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.
The 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.
You can customize which documents are included using the `included_documents` field. Password protection is also available.
'
type: object
additionalProperties: false
properties:
name:
$ref: '#/components/schemas/Deliverable.Name'
type:
allOf:
- $ref: '#/components/schemas/Deliverable.Type'
- const: simple
included_documents:
$ref: '#/components/schemas/Deliverable.IncludedDocuments'
password:
$ref: '#/components/schemas/Deliverable.Password'
required:
- type
Envelope.Timezone:
x-schema-role: property
x-schema-direction: any
type: string
title: Time Zone
description: 'The time zone applied to timestamps in the deliverable''s audit log. Must be a valid IANA Time Zone Database identifier (e.g., `America/New_York`, `Europe/London`).
If not specified, the account''s default timezone is used.
'
example: America/New_York
Deliverable.MaskedPassword:
x-schema-role: property
x-schema-direction: output
title: Deliverable Password
description: 'A password used to encrypt the deliverable PDF with AES-128 encryption. Recipients must enter this password to open the file.
The 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.
For strong protection, use at least 12 characters with a random mix of uppercase, lowercase, and numbers.
In API responses, the password is masked as `********`.
To use this feature, contact support to enable it on your account.
'
oneOf:
- type: string
const: '********'
- type: 'null'
Deliverable.Url:
x-schema-role: property
x-schema-direction: output
type:
- string
- 'null'
title: Deliverable Url
format: uri
description: 'The URL to download the deliverable once it has been generated. If the deliverable has not yet been generated, this will be `null`.
## Pre-signed URLs (Default)
By default, this is a short-lived, pre-signed URL that requires no further authentication to download.
The URL expires after 1 hour. If the link has expired, you can generate a new one by retrieving the deliverable again.
## Authenticated URLs
If you requested authenticated URLs, for example to achieve HIPAA compliance, the URL must be accessed using the API key, in the same way as other requests to this API.
Authenticated URLs do not expire.
'
examples:
- https://www.example.com/repository/audit-log.pdf
Deliverable.Status:
x-schema-role: property
x-schema-direction: output
type: string
title: Deliverable Status
description: 'The current status of the deliverable.
- **`pending`**: The deliverable is pending generation. This occurs while the envelope is not yet completed.
- **`processing`**: The envelope is completed and the deliverable is being generated. This usually takes a few seconds.
- **`generated`**: The deliverable has been generated. The deliverable object includes a URL where the deliverable can be downloaded. This is the final status of the deliverable.
- **`failed`**: The deliverable has failed to be generated. This is a rare event and support is notified automatically.
'
enum:
- pending
- processing
- generated
- failed
examples:
- generated
Deliverable.Simple:
x-schema-role: model
x-schema-direction: output
type: object
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.
The 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.
You can customize which documents are included using the `included_documents` field. Password protection is also available.
'
properties:
id:
$ref: '#/components/schemas/Deliverable.Id'
name:
$ref: '#/components/schemas/Deliverable.Name'
envelope_id:
$ref: '#/components/schemas/Deliverable.EnvelopeId'
type:
allOf:
- $ref: '#/components/schemas/Deliverable.Type'
- const: simple
status:
$ref: '#/components/schemas/Deliverable.Status'
url:
$ref: '#/components/schemas/Deliverable.Url'
included_documents:
$ref: '#/components/schemas/Deliverable.IncludedDocuments'
password:
$ref: '#/components/schemas/Deliverable.MaskedPassword'
created_at:
$ref: '#/components/schemas/Deliverable.CreatedAt'
generated_at:
$ref: '#/components/schemas/Deliverable.GeneratedAt'
required:
- id
- name
- envelope_id
- type
- status
- url
- included_documents
- password
- created_at
- generated_at
Shared.Problem:
x-schema-role: property
x-schema-direction: output
type: object
description: 'An error response following the RFC 9457 Problem Details format. The API returns this object with a `application/problem+json` content type when a request fails. Use the `type` URL to identify the error programmatically and the `detail` field to understand what went wrong.
'
additionalProperties: false
properties:
type:
type: string
description: A URL that identifies the problem type. Points to documentation explaining the error.
format: uri
example: https://signatureapi.com/docs/v1/errors/invalid-api-key
title:
type: string
description: A short, human-readable summary of the problem type.
example: Invalid API Key
status:
type: integer
description: The HTTP status code for this error. Matches the status code in the HTTP response.
minimum: 100
maximum: 599
example: 401
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem.
example: Please provide a valid API key in the X-API-Key header.
required:
- type
- title
- status
- detail
Deliverable.CreatedAt:
x-schema-role: property
x-schema-direction: output
type: string
format: date-time
title: Deliverable Created At
description: Time at which the deliverable was created. This is set when the envelope is created or when a deliverable is created via the API.
examples:
- '2024-01-01T00:00:00Z'
Shared.ValidationProblem:
x-schema-role: property
x-schema-direction: output
description: 'A validation error response following the RFC 9457 Problem Details format. The API returns this object with HTTP status 422 when a request body fails validation. The `errors` array lists each field-level problem so you can fix them all in one pass.
'
properties:
type:
type: string
description: A URL pointing to the validation error documentation. Always `https://signatureapi.com/docs/v1/errors/validation-error`.
format: uri
const: https://signatureapi.com/docs/v1/errors/validation-error
example: https://signatureapi.com/docs/v1/errors/validation-error
title:
type: string
description: A short summary of the problem type. Always `Validation Error`.
const: Validation Error
example: Validation Error
status:
type: integer
description: The HTTP status code. Always `422` for validation errors.
const: 422
example: 422
errors:
type: array
description: A list of human-readable messages describing each validation failure.
items:
type: string
example:
- documents[0].url protocol must be HTTPS
- recipients[0].email must be a valid email address
required:
- type
- title
- status
- errors
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.
The `type` field determines the deliverable variant:
- `standard` -- Includes signed documents and an audit log with a certificate of completion.
- `simple` -- Includes signed documents only, without an audit log.
### Lifecycle
A deliverable moves through these statuses:
1. `pending` -- Waiting for the envelope to complete.
2. `processing` -- The envelope is completed and the deliverable is being generated. This usually takes a few seconds.
3. `generated` -- The deliverable is ready. The `url` field contains a download link.
4. `failed` -- Generation failed. This is rare and triggers an automatic alert to support.
### Default behavior
When 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.
'
oneOf:
- $ref: '#/components/schemas/Deliverable.StandardInput'
- $ref: '#/components/schemas/Deliverable.SimpleInput'
- type: 'null'
discriminator:
propertyName: type
mapping:
standard: '#/components/schemas/Deliverable.StandardInput'
simple: '#/components/schemas/Deliverable.SimpleInput'
Deliverable.Id:
x-schema-role: property
x-schema-direction: output
type: string
title: Deliverable Id
description: The unique identifier of the deliverable.
examples:
- del_LXRDwyTeJDVrWXmjwxsAGPq
headers:
Location:
required: true
description: The URL of the created resource
schema:
type: string
format: uri
parameters:
PaginationLimit:
name: limit
in: query
description: The maximum number of objects to return in the response.
schema:
type: integer
minimum: 1
maximum: 20
default: 20
EnvelopeId:
name: envelopeId
in: path
description: The unique identifier of an envelope.
required: true
schema:
$ref: '#/components/schemas/Envelope.Id'
DeliverableId:
name: deliverableId
in: path
description: The unique identifier of a deliverable.
required: true
schema:
$ref: '#/components/schemas/Deliverable.Id'
responses:
Shared.ValidationError:
description: 'The request cannot be processed due to validation errors. This typically involves issues like missing required fields, invalid data formats, or value constraints not being met.
'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Shared.ValidationProblem'
example:
type: https://signatureapi.com/docs/v1/errors/validation-error
title: Validation Error
status: 422
errors:
- The title is required
- The sender.email is not a valid email address
- The value of recipients[0].key is too long
Shared.ClientError:
description: 'The request cannot be processed due to an issue on the client''s side. This may include invalid request format, insufficient permissions, or requesting non-existent resources. The client should review and correct the request.
This error covers HTTP status codes in the 400 to 499 range. The most common are:
- 401 Unauthorized
- 402 Payment Required (`live-mode-paused`: live API access is paused because an invoice is unpaid; test keys keep working)
- 403 Forbidden
- 409 Conflict
- 410 Gone
- 404 Not Found
- 422 Unprocessable Content.
'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Shared.Problem'
example:
type: https://signatureapi.com/docs/v1/errors/api-key-required
title: The API Key is required
status: 401
detail: A valid API key is required in the X-API-Key header of all requests.
Shared.ServerError:
description: 'The request cannot be processed due to an issue on the server''s side. The client can retry the request in a few minutes, or contact support if the error persists.
'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Shared.Problem'
example:
type: https://signatureapi.com/docs/v1/errors/server-error
title: Internal Server Error
status: 500
detail: 'There was a problem in our server and your request was not fulfilled. Try again later. If the error persists, please contact support.
'
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: 'Authentication to the API is performed via an API key in the `X-API-Key` header.
Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
'
x-refined-from:
- spec_openapi.yaml
- signatureapi-com-openapi.yml