Envelopes API
Envelope (signing workflow) management endpoints.
List Envelopes
Get all envelopes.
http
GET /api/v1/envelopes
Authorization: Bearer <access_token>Query Parameters
| Parameter | Type | Description |
|---|---|---|
| limit | int | Items per page (default: 20) |
| cursor | string | Pagination cursor |
| status | string | Filter by status |
| folder | string | inbox, sent, drafts, completed |
Response (200 OK)
json
{
"success": true,
"data": [
{
"id": "env-uuid",
"name": "Contract Signing",
"document": {
"id": "doc-uuid",
"name": "Contract 2026"
},
"status": "in_progress",
"routing_type": "sequential",
"recipients": [
{
"id": "rec-uuid",
"email": "signer@example.com",
"name": "Jane Smith",
"role": "signer",
"status": "pending"
}
],
"sent_at": "2026-01-24T10:00:00Z",
"expires_at": "2026-02-24T10:00:00Z",
"created_at": "2026-01-24T09:00:00Z"
}
],
"meta": {
"limit": 20,
"has_more": false
}
}Create Envelope
Create a new envelope.
http
POST /api/v1/envelopes
Authorization: Bearer <access_token>Request
json
{
"document_id": "doc-uuid",
"name": "Contract Signing",
"message": "Please sign this contract",
"routing_type": "sequential",
"expires_in_days": 30,
"recipients": [
{
"email": "signer@example.com",
"name": "Jane Smith",
"role": "signer",
"routing_order": 1
},
{
"email": "approver@example.com",
"name": "Bob Johnson",
"role": "approver",
"routing_order": 2
}
],
"fields": [
{
"type": "signature",
"recipient_index": 0,
"page": 1,
"x": 100,
"y": 500,
"width": 200,
"height": 50,
"required": true
},
{
"type": "date",
"recipient_index": 0,
"page": 1,
"x": 100,
"y": 560,
"width": 100,
"height": 20
}
]
}Response (201 Created)
json
{
"success": true,
"data": {
"id": "env-uuid",
"name": "Contract Signing",
"status": "draft",
"created_at": "2026-01-24T10:00:00Z"
}
}Get Envelope
Get envelope details.
http
GET /api/v1/envelopes/:id
Authorization: Bearer <access_token>Response (200 OK)
json
{
"success": true,
"data": {
"id": "env-uuid",
"name": "Contract Signing",
"document": {
"id": "doc-uuid",
"name": "Contract 2026",
"page_count": 5
},
"status": "in_progress",
"routing_type": "sequential",
"message": "Please sign this contract",
"recipients": [
{
"id": "rec-uuid",
"email": "signer@example.com",
"name": "Jane Smith",
"role": "signer",
"routing_order": 1,
"status": "completed",
"signed_at": "2026-01-24T11:00:00Z"
},
{
"id": "rec-uuid-2",
"email": "approver@example.com",
"name": "Bob Johnson",
"role": "approver",
"routing_order": 2,
"status": "pending"
}
],
"fields": [
{
"id": "field-uuid",
"type": "signature",
"page": 1,
"x": 100,
"y": 500,
"status": "completed"
}
],
"sent_at": "2026-01-24T10:00:00Z",
"expires_at": "2026-02-24T10:00:00Z",
"created_at": "2026-01-24T09:00:00Z"
}
}Send Envelope
Send envelope to recipients.
http
POST /api/v1/envelopes/:id/send
Authorization: Bearer <access_token>Response (200 OK)
json
{
"success": true,
"data": {
"id": "env-uuid",
"status": "sent",
"sent_at": "2026-01-24T10:00:00Z"
}
}Void Envelope
Cancel an envelope.
http
POST /api/v1/envelopes/:id/void
Authorization: Bearer <access_token>Request
json
{
"reason": "Contract terms changed"
}Response (200 OK)
json
{
"success": true,
"data": {
"id": "env-uuid",
"status": "voided",
"voided_at": "2026-01-24T12:00:00Z"
}
}Download Signed Document
Download the completed signed document.
http
GET /api/v1/envelopes/:id/download
Authorization: Bearer <access_token>Response
Returns the signed PDF with embedded signatures.
Envelope Status
| Status | Description |
|---|---|
| draft | Not yet sent |
| sent | Sent to recipients |
| in_progress | Signing in progress |
| completed | All signatures collected |
| declined | Recipient declined |
| voided | Cancelled by sender |
| expired | Past expiration date |
Recipient Roles
| Role | Description |
|---|---|
| signer | Must sign the document |
| approver | Must approve (no signature) |
| cc | Receives copy only |
| in_person | Signs in person with host |
Routing Types
| Type | Description |
|---|---|
| sequential | Sign in order |
| parallel | Any order |
| hybrid | Mixed order |