The Signable API provides secure and efficient access to Signable's electronic signature platform. With this RESTful API, you can send documents for signature, manage templates, track envelope status, and automate your document workflows from within your own applications.
Signable API (1.0.0)
https://developers.signable.app/_mock/openapi/
https://api.signable.co.uk/v1/
The maximum number of envelopes to return. If more than 50
is requested, 10
will be returned instead.
Filter by a single envelope status. See Envelope status values for more info →
- Mock server
https://developers.signable.app/_mock/openapi/envelopes
- Production server
https://api.signable.co.uk/v1/envelopes
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes?offset=0&limit=10&status=processing&q=string'
A paginated list of envelopes.
Unique identifier for the envelope.
Current status of the envelope. See Envelope status values for more info →
Redirect URL after signing. Empty string if not set.
Timestamp when the envelope was created (ISO 8601).
Timestamp when the envelope was sent. Null if not yet sent.
Timestamp when the envelope was processed. Null if not yet processed.
If true, the envelope is sent to all parties at the same time. If false, the envelope is sent to parties one at a time, starting with the first. For more info on "One at a time" signing sequence, see Setting the signing sequence
Whether a one-time-password (OTP) verification is enabled for this envelope. For more info on OTPs, see Enabling Two-Factor Authentication for Signers
Unique identifier for the party in the envelope.
Label for the party, typically their name.
Last 4 digits of the party’s mobile number (if OTP is enabled).
{ "http": 200, "offset": 0, "limit": 10, "total_envelopes": "3", "envelopes": [ { … }, { … }, { … } ] }
Request
Creates and queues a new envelope for sending, using one of the following methods for attaching documents:
Option 1 – Upload or link a document directly in the request body
Option 2 – Reference a single Signable template
Option 3 – Reference multiple Signable templates
⚠️ Note: Only one document input method can be used per request.
ID of the user sending the envelope. If omitted, it won’t be linked to a user and email notifications will be sent to the company email address.
Where to redirect the signer after completion. Defaults to Signable’s confirmation page if not provided.
If true, sends to all parties at once. If false, sends sequentially (one-at-a-time).
Enables one-time-password (OTP) signing for all signers. Requires party_mobile
and disallows envelope_password_protect
.
Enables password protection. System generates a password or use party_password
per party.
Number of hours before the envelope expires automatically.
Frequency in hours for automatic reminder emails to signers.
Custom metadata stored alongside the envelope.
List of parties involved in the envelope. Each party can be a signer or a copy recipient. If envelope_all_at_once_enabled
is set to false
, signers will be notified sequentially based on the order they appear in this array. Copy recipients (with role copy
) are notified only after all signers have completed their actions.
Email address of the party.
Role tag corresponding to tags in the document, or 'copy' for non-signing parties. Signer tags must start with the string signer
.
Optional message included in the email sent to the party.
Mobile number in E.164 format (required for signers if envelope_requires_otp
is true).
List of documents to be sent in the envelope. Each record must either include a URL to the file, or a combination of base64-encoded content and filename.
Title of the document for internal use and audit trail.
- Mock server
https://developers.signable.app/_mock/openapi/envelopes
- Production server
https://api.signable.co.uk/v1/envelopes
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
-u <username>:<password> \
https://developers.signable.app/_mock/openapi/envelopes \
-H 'Content-Type: application/json' \
-d '{
"envelope_title": "Singer Road 23/06/25",
"user_id": 838180,
"envelope_redirect_url": "https://www.example.com",
"envelope_all_at_once_enabled": false,
"envelope_requires_otp": true,
"envelope_password_protect": false,
"envelope_auto_expire_hours": 144,
"envelope_auto_remind_hours": 72,
"envelope_meta": {
"internal_id": "ABC123",
"VIP": false
},
"envelope_parties": [
{
"party_name": "Alex Mitchell",
"party_email": "abby+alex@signable.co.uk",
"party_role": "signer2",
"party_message": "Hello Alex, Please review and sign",
"party_mobile": "+447510417059"
},
{
"party_name": "Abby Signers",
"party_email": "abby@signable.co.uk",
"party_role": "signer1",
"party_message": "Hello, Please sign pronto!",
"party_mobile": "+447510417059"
},
{
"party_name": "Spectator",
"party_email": "abby+spectator@signable.co.uk",
"party_role": "copy",
"party_message": "Hello Alex, Please have a read"
},
{
"party_name": "Tim Matthews",
"party_email": "abby@signable.co.uk",
"party_role": "signer3",
"party_message": "Hello, Please sign pronto!",
"party_mobile": "+447510417059"
}
],
"envelope_documents": [
{
"document_url": "https://yellow-della-30.tiiny.site/Tenancy-Contract-2025-v2.pdf",
"document_title": "Test Agreement"
},
{
"document_title": "Validation Contract",
"document_file_name": "ValidationContract.pdf",
"document_file_content": "JVBERi0xLjQKJdPr6...Zgo2MDE3MwolJUVPRgo="
}
]
}'
Envelope successfully created and queued
A human-readable message confirming the envelope is queued.
URL to retrieve envelope details.
Title of the envelope that was submitted.
Unique identifier (hash) for the envelope.
An embeddable HTML <iframe>
snippet that renders the signing page within your application. This field is only returned if embed signing has been enabled on your account by the Signable Support team. To request access, please contact us.
⚠️ Notes
- This field is only available when sending envelopes using templates (single or multiple).
- This field is only returned in the POST response, it will not be returned in GET
/envelopes/{envelope_fingerprint}
.
Indicates if password protection was enabled on the envelope.
URL the signer will be redirected to after completing the envelope.
Timestamp when the envelope was successfully queued.
Whether the envelope was sent to all parties simultaneously (true
) or sequentially (false
).
List of parties associated with the envelope, including signer and copy recipients.
Last 4 digits of the party’s mobile number (if OTP is enabled).
{ "http": 202, "message": "Your envelope with title Singer Road 23/06/25 will be processed and sent out.", "href": "https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "Singer Road 23/06/25", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_password_protect": false, "envelope_requires_otp": true, "envelope_redirect_url": "https://www.example.com", "envelope_queued": "2025-07-16T14:39:02+0000", "envelope_all_at_once_enabled": false, "envelope_parties": [ { … }, { … }, { … }, { … } ] }
- Mock server
https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}
- Production server
https://api.signable.co.uk/v1/envelopes/{envelope_fingerprint}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}'
Details of the requested envelope.
Unique identifier for the envelope.
Current status of the envelope. See Envelope status values for more info →
Timestamp when the envelope was created (ISO 8601).
Timestamp when the envelope was sent. Null if not yet sent.
Timestamp when the envelope was processed. Null if not yet processed.
If true, the envelope is sent to all parties at the same time. If false, the envelope is sent to parties one at a time, starting with the first. For more info on "One at a time" signing sequence, see Setting the signing sequence
Whether a one-time-password (OTP) verification is enabled for this envelope. For more info on OTPs, see Enabling Two-Factor Authentication for Signers
Unique identifier for the party in the envelope.
Label for the party, typically their name.
Last 4 digits of the party’s mobile number (if OTP is enabled).
Password assigned for accessing the envelope, if applicable.
ID of the contact linked to the party.
Email address of the party.
Status of the party's signing progress.
Indicates how the party will sign the envelope. Only remote
value is supported.
Unique identifier for the document.
Title of the document.
Total number of pages in the document.
Direct download link to the original PDF.
List of thumbnail image URLs for the document pages.
List of full-size image URLs for the document pages.
List of fields assigned to parties in the document.
Unique identifier for the field.
The label or title of the field.
Type of the field. Signature fields are not returned.
Value filled in the field. May be empty.
ID of the party this field is assigned to.
Direct download link to the signed PDF (if the envelope is signed).
Description of the event that occurred.
IP address from where the action was triggered.
Browser or device info from where the event occurred.
Optional metadata to associate with the envelope. These key-value pairs are stored by Signable and returned in the response and all envelope related webhooks. Useful for attaching internal IDs, status flags, tags, or any contextual information relevant to your system.
{ "http": 200, "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "17 John Street Tenancy Contract - 25th Jun 2025", "envelope_status": "sent", "envelope_redirect_url": null, "envelope_created": "2025-07-08T14:58:54+0000", "envelope_sent": "2025-07-08T15:02:49+0000", "envelope_processed": null, "envelope_all_at_once_enabled": true, "envelope_requires_otp": false, "envelope_parties": [ { … }, { … }, { … } ], "envelope_documents": [ { … }, { … } ], "envelope_history": [ { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … } ], "envelope_meta": { "internal_id": "ABC123", "VIP": false } }
- Mock server
https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}
- Production server
https://api.signable.co.uk/v1/envelopes/{envelope_fingerprint}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}'
{ "http": 200, "message": "The envelope has been deleted", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "Test Envelope", "envelope_status": "deleted" }
- Mock server
https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/remind
- Production server
https://api.signable.co.uk/v1/envelopes/{envelope_fingerprint}/remind
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/remind'
Reminder successfully triggered
Human-readable status message.
Unique fingerprint of the envelope.
The title of the envelope at the time of the reminder.
{ "http": 200, "message": "The signing parties for this envelope have been reminded.", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "17 John Street Tenancy Contract - 25th Jun 2025", "envelope_all_at_once_enabled": true }
- Mock server
https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/cancel
- Production server
https://api.signable.co.uk/v1/envelopes/{envelope_fingerprint}/cancel
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/cancel'
Envelope successfully cancelled
Human-readable confirmation message.
Unique identifier for the cancelled envelope.
Title of the envelope at the time of cancellation.
The new status of the envelope after cancellation.
{ "http": 200, "message": "The envelope has been cancelled", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "Contract Settlement", "envelope_status": "cancelled", "envelope_processed": "2025-07-14T13:34:34+0000" }
- Mock server
https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/expire
- Production server
https://api.signable.co.uk/v1/envelopes/{envelope_fingerprint}/expire
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
-u <username>:<password> \
'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/expire'
{ "http": 200, "message": "The envelope has been expired", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "Industrial Contract", "envelope_status": "expired", "envelope_processed": "2025-07-14T14:37:34+0000" }