Skip to content

Signable API (1.0.0)

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.

Download OpenAPI description
Languages
Servers
Mock server

https://developers.signable.app/_mock/openapi/

Production server

https://api.signable.co.uk/v1/

Partners

Manage partner integrations.

Operations

Envelopes

Send, track, and manage documents for e-signature.

Operations

Request

Returns a paginated list of envelopes. You can filter by status or search by title using optional query parameters.

Security
basicAuth
Query
offsetinteger

The index of the first envelope to retrieve.

Default 0
Example: offset=0
limitinteger[ 1 .. 50 ]

The maximum number of envelopes to return. If more than 50 is requested, 10 will be returned instead.

Default 10
statusstring

Filter by a single envelope status. See Envelope status values for more info →

Enum"processing""failed""draft""sent""signed""cancelled""expired""rejected""verify"
qstring

Case-insensitive keyword filter on the envelope title. Matches partial words. Null values return unfiltered results.

curl -i -X GET \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes?offset=0&limit=10&status=processing&q=string'

Responses

A paginated list of envelopes.

Bodyapplication/json
httpintegerrequired

HTTP status code of the response.

Example: 200
offsetintegerrequired

The index of the first envelope in the result set.

Example: 0
limitintegerrequired

The number of envelopes returned in this response.

Example: 10
total_envelopesstringrequired

The total number of envelopes matching the query.

Example: "3"
envelopesArray of objects(EnvelopeSignedSummary)required
envelopes[].​envelope_fingerprintstringrequired

Unique identifier for the envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelopes[].​envelope_titlestringrequired

The title of the envelope.

Example: "Another Test"
envelopes[].​envelope_statusstringrequired

Current status of the envelope. See Envelope status values for more info →

Enum"processing""failed""draft""sent""signed""cancelled""expired""rejected""verify"
Example: "draft"
envelopes[].​envelope_redirect_urlstringrequired

Redirect URL after signing. Empty string if not set.

Example: ""
envelopes[].​envelope_createdstring(date-time)required

Timestamp when the envelope was created (ISO 8601).

Example: "2025-07-07T11:30:27+0000"
envelopes[].​envelope_sentstring or null(date-time)required

Timestamp when the envelope was sent. Null if not yet sent.

Example: null
envelopes[].​envelope_processedstring or null(date-time)required

Timestamp when the envelope was processed. Null if not yet processed.

Example: null
envelopes[].​envelope_all_at_once_enabledbooleanrequired

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

Example: true
envelopes[].​envelope_requires_otpbooleanrequired

Whether a one-time-password (OTP) verification is enabled for this envelope. For more info on OTPs, see Enabling Two-Factor Authentication for Signers

Example: false
envelopes[].​envelope_partiesArray of objects(EnvelopeParty)required
envelopes[].​envelope_parties[].​party_idstringrequired

Unique identifier for the party in the envelope.

Example: "45631119"
envelopes[].​envelope_parties[].​party_titlestringrequired

Label for the party, typically their name.

Example: "Abby Signable"
envelopes[].​envelope_parties[].​party_mobile_last4string or nullrequired

Last 4 digits of the party’s mobile number (if OTP is enabled).

Example: null
envelopes[].​envelope_parties[].​party_passwordstring or nullrequired

Password assigned for accessing the envelope, if applicable.

Example: "Test123"
envelopes[].​envelope_signed_pdfstring or null(uri)(EnvelopeSignedPdfLink)

Direct download link to the signed PDF (if the envelope is signed).

Response
application/json
{ "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.

Security
basicAuth
Bodyapplication/jsonrequired
One of:
envelope_titlestringrequired

Title of the envelope.

Example: "Ashbrook Road 10/06/25"
user_idinteger

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.

Example: 838180
envelope_redirect_urlstring(uri)

Where to redirect the signer after completion. Defaults to Signable’s confirmation page if not provided.

Example: "https://www.example.com"
envelope_all_at_once_enabledboolean

If true, sends to all parties at once. If false, sends sequentially (one-at-a-time).

Example: false
envelope_requires_otpboolean

Enables one-time-password (OTP) signing for all signers. Requires party_mobile and disallows envelope_password_protect.

Example: true
envelope_password_protectboolean

Enables password protection. System generates a password or use party_password per party.

Example: false
envelope_auto_expire_hoursinteger>= 12

Number of hours before the envelope expires automatically.

Example: 144
envelope_auto_remind_hoursinteger>= 12

Frequency in hours for automatic reminder emails to signers.

Example: 72
envelope_metaobject

Custom metadata stored alongside the envelope.

Example: {"internal_id":"ABC123","VIP":false}
envelope_partiesArray of objects(EnvelopeSendPartyDoc)required

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.

envelope_parties[].​party_namestringrequired

Full name of the party.

Example: "Abby Signers"
envelope_parties[].​party_emailstring(email)required

Email address of the party.

Example: "abby@signable.co.uk"
envelope_parties[].​party_rolestringrequired

Role tag corresponding to tags in the document, or 'copy' for non-signing parties. Signer tags must start with the string signer.

Example: "signer1"
envelope_parties[].​party_messagestring

Optional message included in the email sent to the party.

Example: "Please sign as soon as you can."
envelope_parties[].​party_mobilestring

Mobile number in E.164 format (required for signers if envelope_requires_otp is true).

Example: "+447510417059"
envelope_parties[].​party_passwordstring

Custom password for accessing the envelope (used only if envelope_password_protect is true).

Example: "secret123"
envelope_documentsArray of objects(EnvelopeSendDocument)required

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.

One of:
envelope_documents[].​document_titlestringrequired

Title of the document for internal use and audit trail.

Example: "Test Agreement"
envelope_documents[].​document_urlstring(uri)required

URL to the hosted document (PDF, Word, or Excel).

Example: "https://yellow-della-30.tiiny.site/Tenancy-Contract-2025-v2.pdf"
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="
      }
    ]
  }'

Responses

Envelope successfully created and queued

Bodyapplication/json
httpintegerrequired

HTTP status code indicating success.

Example: 202
messagestringrequired

A human-readable message confirming the envelope is queued.

Example: "Your envelope with title Ashbrook Road 10/06/25 will be processed and sent out."
hrefstring(uri)required

URL to retrieve envelope details.

Example: "https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

Title of the envelope that was submitted.

Example: "Ashbrook Road 10/06/25"
envelope_fingerprintstringrequired

Unique identifier (hash) for the envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_signing_embedstring

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}.
Example: "<iframe src=\"https://sign.signable.app/#yXqPrm7HVOaiQUNM4NZI34BocfDWB69lf68lHq90R0s\" width=\"100%\" height=\"95%\" frameborder=\"0\" style=\"border: 0; overflow: hidden\"></iframe>\n"
envelope_password_protectboolean

Indicates if password protection was enabled on the envelope.

Example: false
envelope_requires_otpboolean

Indicates if one-time-password verification was enabled.

Example: true
envelope_redirect_urlstring(uri)

URL the signer will be redirected to after completing the envelope.

Example: "https://www.example.com"
envelope_queuedstring(date-time)required

Timestamp when the envelope was successfully queued.

Example: "2025-07-16T09:58:21+0000"
envelope_all_at_once_enabledboolean

Whether the envelope was sent to all parties simultaneously (true) or sequentially (false).

Example: false
envelope_partiesArray of objectsrequired

List of parties associated with the envelope, including signer and copy recipients.

envelope_parties[].​party_idstring

Unique identifier for the party.

Example: "45831671"
envelope_parties[].​party_titlestring

Name of the party.

Example: "Alex Mitchell"
envelope_parties[].​party_mobile_last4string or null

Last 4 digits of the party’s mobile number (if OTP is enabled).

Example: "7059"
envelope_parties[].​party_passwordstring or null

Password for party access if password protection was enabled.

Example: null
Response
application/json
{ "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": [ {}, {}, {}, {} ] }

Request

Returns the full details of a specific envelope, including document data, party information, field data, and envelope history.

Security
basicAuth
Path
envelope_fingerprintstringrequired

Unique identifier of the envelope.

curl -i -X GET \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}'

Responses

Details of the requested envelope.

Bodyapplication/json
envelope_fingerprintstringrequired

Unique identifier for the envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

The title of the envelope.

Example: "Another Test"
envelope_statusstringrequired

Current status of the envelope. See Envelope status values for more info →

Enum"processing""failed""draft""sent""signed""cancelled""expired""rejected""verify"
Example: "draft"
envelope_redirect_urlstringrequired

Redirect URL after signing. Empty string if not set.

Example: ""
envelope_createdstring(date-time)required

Timestamp when the envelope was created (ISO 8601).

Example: "2025-07-07T11:30:27+0000"
envelope_sentstring or null(date-time)required

Timestamp when the envelope was sent. Null if not yet sent.

Example: null
envelope_processedstring or null(date-time)required

Timestamp when the envelope was processed. Null if not yet processed.

Example: null
envelope_all_at_once_enabledbooleanrequired

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

Example: true
envelope_requires_otpbooleanrequired

Whether a one-time-password (OTP) verification is enabled for this envelope. For more info on OTPs, see Enabling Two-Factor Authentication for Signers

Example: false
httpintegerrequired

HTTP status code of the response.

Example: 200
envelope_partiesArray of objects(EnvelopeDetailParty)required
envelope_parties[].​party_idstringrequired

Unique identifier for the party in the envelope.

Example: "45631119"
envelope_parties[].​party_titlestringrequired

Label for the party, typically their name.

Example: "Abby Signable"
envelope_parties[].​party_mobile_last4string or nullrequired

Last 4 digits of the party’s mobile number (if OTP is enabled).

Example: null
envelope_parties[].​party_passwordstring or nullrequired

Password assigned for accessing the envelope, if applicable.

Example: "Test123"
envelope_parties[].​contact_idstringrequired

ID of the contact linked to the party.

Example: "17225983"
envelope_parties[].​contact_emailstringrequired

Email address of the party.

Example: "abby@signable.co.uk"
envelope_parties[].​party_statusstringrequired

Status of the party's signing progress.

Enum"pending""in progress""signed"
Example: "in progress"
envelope_parties[].​party_signature_typestringrequired

Indicates how the party will sign the envelope. Only remote value is supported.

Example: "remote"
Value "remote"
envelope_parties[].​party_rolestringrequired

Role of the party, they are either a signer or they are copied into the document with read-only permission.

Enum"signer""copy"
Example: "signer"
envelope_documentsArray of objects(EnvelopeDocument)required
envelope_documents[].​document_fingerprintstringrequired

Unique identifier for the document.

Example: "8ab4248168761318178b5c747c643a27"
envelope_documents[].​document_titlestringrequired

Title of the document.

Example: "Sample Tenancy Contract"
envelope_documents[].​document_page_totalstringrequired

Total number of pages in the document.

Example: "2"
envelope_documents[].​document_pdf_urlstring(uri)required

Direct download link to the original PDF.

Example: "https://docs.signable.co.uk/original/8ab4248168761318178b5c747c643a27.pdf"
envelope_documents[].​document_thumbnailsArray of strings(uri)required

List of thumbnail image URLs for the document pages.

Example: ["https://docs.signable.co.uk/small/8ab4248168761318178b5c747c643a27-0.jpg","https://docs.signable.co.uk/small/8ab4248168761318178b5c747c643a27-1.jpg"]
envelope_documents[].​document_pagesArray of strings(uri)required

List of full-size image URLs for the document pages.

Example: ["https://docs.signable.co.uk/large/8ab4248168761318178b5c747c643a27-0.jpg","https://docs.signable.co.uk/large/8ab4248168761318178b5c747c643a27-1.jpg"]
envelope_documents[].​document_fieldsArray of objects(EnvelopeField)required

List of fields assigned to parties in the document.

envelope_documents[].​document_fields[].​field_idstringrequired

Unique identifier for the field.

Example: "452902787"
envelope_documents[].​document_fields[].​field_titlestringrequired

The label or title of the field.

Example: "First Name"
envelope_documents[].​document_fields[].​field_typestringrequired

Type of the field. Signature fields are not returned.

Enum"text""date""checkbox""upload""dropdown"
Example: "text"
envelope_documents[].​document_fields[].​field_valuestringrequired

Value filled in the field. May be empty.

Example: "Abby Sackson"
envelope_documents[].​document_fields[].​party_idstringrequired

ID of the party this field is assigned to.

Example: "45631119"
envelope_documents[].​document_fields[].​field_mergestring or null

Merge field label used to pre-fill values.

Example: "Sender Name"
envelope_signed_pdfstring or null(uri)(EnvelopeSignedPdfLink)

Direct download link to the signed PDF (if the envelope is signed).

envelope_historyArray of objects(EnvelopeHistoryEvent)required
envelope_history[].​history_detailstringrequired

Description of the event that occurred.

Example: "Sent the envelope to Abby Signable (abby@signable.co.uk) for signing"
envelope_history[].​history_ipstringrequired

IP address from where the action was triggered.

Example: "147.147.97.34"
envelope_history[].​history_user_agentstringrequired

Browser or device info from where the event occurred.

Example: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
envelope_history[].​history_datestring(date-time)required

Date and time when the event occurred.

Example: "2025-07-08T15:02:48+0000"
envelope_metaobject

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.

Example: {"internal_id":"ABC123","VIP":false}
Response
application/json
{ "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 } }

Request

Deletes an envelope. Only available for envelopes in draft, signed, expired or cancelled status. No notification email is sent to signers when an envelope is deleted.

Security
basicAuth
Path
envelope_fingerprintstringrequired

The unique identifier of the envelope.

curl -i -X DELETE \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}'

Responses

Envelope successfully deleted

Bodyapplication/json
httpintegerrequired

HTTP status code of the response.

Example: 200
messagestringrequired

Human-readable confirmation message.

Example: "The envelope has been deleted"
envelope_fingerprintstringrequired

Unique identifier for the deleted envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

Title of the envelope at the time of deletion.

Example: "Industrial Contract"
envelope_statusstringrequired

The new status of the envelope after deletion.

Example: "deleted"
Value "deleted"
Response
application/json
{ "http": 200, "message": "The envelope has been deleted", "envelope_fingerprint": "584ea8b41b0d4c17a96b967433b211e6", "envelope_title": "Test Envelope", "envelope_status": "deleted" }

Request

Sends a reminder email to all outstanding signing parties for the specified envelope. If automatic reminders are enabled, this also resets the countdown timer for the next scheduled reminder.

Security
basicAuth
Path
envelope_fingerprintstringrequired

The unique identifier of the envelope to remind signers for.

curl -i -X PUT \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/remind'

Responses

Reminder successfully triggered

Bodyapplication/json
httpintegerrequired

HTTP status code of the response.

Example: 200
messagestringrequired

Human-readable status message.

Example: "The signing parties for this envelope have been reminded."
envelope_fingerprintstringrequired

Unique fingerprint of the envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

The title of the envelope at the time of the reminder.

Example: "17 John Street Tenancy Contract - 25th Jun 2025"
envelope_all_at_once_enabledbooleanrequired

Indicates if the envelope is configured for all-at-once signing.

Example: true
Response
application/json
{ "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 }

Request

Cancels a sent envelope. A cancellation email will be sent to all signing parties, and the envelope will no longer be available for signing.

Security
basicAuth
Path
envelope_fingerprintstringrequired

The unique identifier of the envelope to cancel.

curl -i -X PUT \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/cancel'

Responses

Envelope successfully cancelled

Bodyapplication/json
httpintegerrequired

HTTP status code of the response.

Example: 200
messagestringrequired

Human-readable confirmation message.

Example: "The envelope has been cancelled"
envelope_fingerprintstringrequired

Unique identifier for the cancelled envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

Title of the envelope at the time of cancellation.

Example: "Contract Settlement"
envelope_statusstringrequired

The new status of the envelope after cancellation.

Example: "cancelled"
Value "cancelled"
envelope_processedstring(date-time)required

Timestamp when the cancellation was processed.

Example: "2025-07-14T13:34:34+0000"
Response
application/json
{ "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" }

Request

Expires a sent envelope, preventing any further signing interaction. No notification email is sent to signers when an envelope expires.

Security
basicAuth
Path
envelope_fingerprintstringrequired

The unique identifier of the envelope.

curl -i -X PUT \
  -u <username>:<password> \
  'https://developers.signable.app/_mock/openapi/envelopes/{envelope_fingerprint}/expire'

Responses

Envelope successfully expired

Bodyapplication/json
httpintegerrequired

HTTP status code of the response.

Example: 200
messagestringrequired

Human-readable confirmation message.

Example: "The envelope has been deleted"
envelope_fingerprintstringrequired

Unique identifier for the expired envelope.

Example: "584ea8b41b0d4c17a96b967433b211e6"
envelope_titlestringrequired

Title of the envelope at the time of deletion.

Example: "Test Envelope"
envelope_statusstringrequired

The new status of the envelope after deletion.

Example: "deleted"
Value "deleted"
Response
application/json
{ "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" }

Templates

Create and reuse predefined document templates.

Operations

Contacts

Manage contact details for signers and stakeholders.

Operations

Users

Control user accounts and roles.

Operations

Branding

Customize visual and branding settings for emails.

Operations

Settings

Configure account-wide preferences and defaults.

Operations

Webhooks

Receive real-time notifications about document events.

OperationsWebhooks