Send a one-off document that is not set up as a template, such as a bespoke contract, NDA, or custom agreement. This method allows you to upload a document directly or provide a URL to a hosted file.
Ensure you have:
- Completed the Authentication guide
- API credentials configured
- A document prepared with Signable tags (see below)
- Prepare your document with Signable tags.
- Convert your document to base64 or host it at a public URL.
- Create an envelope with the document.
Your document must include Signable tags. These tags tell Signable where each field should appear and which signer it belongs to.
Tags follow this structure:
{Type:Who:Name}| Component | Description |
|---|---|
Type | The kind of field to place. Supported values: signature, text, date, check, upload |
Who | The party_role this field belongs to, such as signer1 or signer2. Each party in your API request must match the roles used in your tags. |
Name | The label for the field. This is how the field appears to the signer. Use + for spaces. |
{text:signer1:Full+Name}This creates a text field assigned to signer1 with the label "Full Name".
For more details on tag syntax, see Use Signable tags.
Include one or more of your documents in the request, using one of the following methods:
| Field | Description |
|---|---|
document_file_content | The document encoded as a base64 string |
document_url | A URL to a publicly accessible document |
Send a POST request to create the envelope:
POST https://api.signable.co.uk/v1/envelopesExample request body:
{
"envelope_title": "Singer Road 23/06/25",
"envelope_parties": [
{
"party_name": "Alex Mitchell",
"party_email": "alex@example.co.uk",
"party_role": "signer1"
}
],
"envelope_documents": [
{
"document_url": "https://example.com/documents/Tenancy-Contract-2025.pdf",
"document_title": "Test Agreement"
},
{
"document_title": "Validation Contract",
"document_file_name": "ValidationContract.pdf",
"document_file_content": "JVBERi0xLjQKJdPr6...Zgo2MDE3MwolJUVPRgo="
}
]
}This request creates an envelope with two documents:
- The first document is retrieved from a URL
- The second document is provided as a base64-encoded string
The party_role: signer1 maps to any tags in the documents that specify signer1. For example, {signature:signer1:Please+Sign+Here} creates a signature field for Alex Mitchell.
For full endpoint details, see Send an envelope.
A successful request returns the envelope fingerprint in the response.
If the envelope processes successfully, Signable emails each signer with their signing link.
Envelopes that include uploaded documents are processed asynchronously. In rare cases, processing can fail.
If this happens, Signable sends an envelope send failed webhook event.
Track envelope status programmatically by subscribing to webhook endpoints.
- Send an envelope using a template — Use a pre-configured template instead of uploading a document
- Tags — Full reference for Signable tag syntax and field types
- Webhooks — Configure notifications to track when signers complete documents