We are in official beta.
E-Signature
DocuSign e-signature integration — on our account, or with your own DocuSign credentials
2 endpoints in this category. All require X-API-Key header.
Jump to:
E-Signature (Managed)
E-Signature (BYOK)
E-Signature (Managed)
POST
/api/RequestSignature
50 tokens
Sends a document out for signature on our DocuSign account — no DocuSign subscription of your own required. Returns the envelope id immediately; DocuSign emails each signer in routing order.
50 tokens against the BYOK route's 1, because this one buys the DocuSign envelope for you — use RequestSignatureBYOK instead if you already have a DocuSign account. Sending an envelope is a real-world action, so a call that fails after DocuSign accepted it is never auto-retried on your behalf; check envelopeId before resending. Returns 503 until the platform DocuSign settings are configured. Not available in the anonymous playground — it would mail a real envelope.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
document.content |
string | required | Base64-encoded PDF to be signed |
document.name |
string | optional |
File name the signers see
(default: document.pdf)
|
signers |
array | required | Who signs, in order: [{email, name, routingOrder, tabs}]. Every signer needs both email and name |
emailSubject |
string | optional |
Subject line of the DocuSign email
(default: Please sign this document)
|
emailMessage |
string | optional | Body of the DocuSign email |
status |
string | optional |
"sent" mails the signers now; "created" leaves the envelope as a draft in the account
(default: sent)
|
Request Example
JSON
{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John Doe", "routingOrder": 1}], "emailSubject": "Please sign this document", "status": "sent"}
Response Example
JSON
{"success": true, "envelopeId": "0f4a2c11-8d3e-4a77-9a10-2b6c5e77d901", "status": "sent", "statusDateTime": "2026-09-05T14:02:11.000Z", "uri": "/envelopes/0f4a2c11-8d3e-4a77-9a10-2b6c5e77d901", "signers": [{"email": "signer@example.com", "name": "John Doe"}], "mode": "managed", "timing": {"total": 1920}}
Code Examples
curl -X POST "https://api.docbutterfly.com/api/RequestSignature" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John Doe", "routingOrder": 1}], "emailSubject": "Please sign this document", "status": "sent"}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""document"": {""name"": ""contract.pdf"", ""content"": ""<base64-pdf>""}, ""signers"": [{""email"": ""signer@example.com"", ""name"": ""John Doe"", ""routingOrder"": 1}], ""emailSubject"": ""Please sign this document"", ""status"": ""sent""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.docbutterfly.com/api/RequestSignature", content);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);import requests
import json
url = "https://api.docbutterfly.com/api/RequestSignature"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John Doe", "routingOrder": 1}], "emailSubject": "Please sign this document", "status": "sent"}')
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print(json.dumps(data, indent=2))┌─────────────────────────────────────────────┐
│ Power Automate - HTTP Action │
├─────────────────────────────────────────────┤
│ │
│ Method: POST │
│ URI: https://api.docbutterfly.com/api/RequestSignature
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "document": {
│ "name": "contract.pdf",
│ "content": "\u003Cbase64-pdf\u003E"
│ },
│ "signers": [
│ {
│ "email": "signer@example.com",
│ "name": "John Doe",
│ "routingOrder": 1
│ }
│ ],
│ "emailSubject": "Please sign this document",
│ "status": "sent"
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://api.docbutterfly.com/api/RequestSignature"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as neededE-Signature (BYOK)
POST
/api/RequestSignatureBYOK
1 token
E-signature with your own DocuSign credentials.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
document.content |
string | required | Base64 PDF |
signers |
array | required | Array of {email, name} |
byok.accountId |
string | required | Your DocuSign account ID |
byok.accessToken |
string | required | Your DocuSign access token |
emailSubject |
string | optional | Email subject |
status |
string | optional |
sent or created
(default: sent)
|
Request Example
JSON
{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John"}], "byok": {"accountId": "your-id", "accessToken": "your-token"}, "status": "sent"}
Response Example
JSON
{"success": true, "envelopeId": "0f4a2c11-8d3e-4a77-9a10-2b6c5e77d901", "status": "sent", "statusDateTime": "2026-09-05T14:02:11.000Z", "uri": "/envelopes/0f4a2c11-8d3e-4a77-9a10-2b6c5e77d901", "signers": [{"email": "signer@example.com", "name": "John"}], "mode": "byok", "timing": {"total": 1840}}
Code Examples
curl -X POST "https://api.docbutterfly.com/api/RequestSignatureBYOK" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John"}], "byok": {"accountId": "your-id", "accessToken": "your-token"}, "status": "sent"}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""document"": {""name"": ""contract.pdf"", ""content"": ""<base64-pdf>""}, ""signers"": [{""email"": ""signer@example.com"", ""name"": ""John""}], ""byok"": {""accountId"": ""your-id"", ""accessToken"": ""your-token""}, ""status"": ""sent""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.docbutterfly.com/api/RequestSignatureBYOK", content);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);import requests
import json
url = "https://api.docbutterfly.com/api/RequestSignatureBYOK"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"document": {"name": "contract.pdf", "content": "<base64-pdf>"}, "signers": [{"email": "signer@example.com", "name": "John"}], "byok": {"accountId": "your-id", "accessToken": "your-token"}, "status": "sent"}')
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print(json.dumps(data, indent=2))┌─────────────────────────────────────────────┐
│ Power Automate - HTTP Action │
├─────────────────────────────────────────────┤
│ │
│ Method: POST │
│ URI: https://api.docbutterfly.com/api/RequestSignatureBYOK
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "document": {
│ "name": "contract.pdf",
│ "content": "\u003Cbase64-pdf\u003E"
│ },
│ "signers": [
│ {
│ "email": "signer@example.com",
│ "name": "John"
│ }
│ ],
│ "byok": {
│ "accountId": "your-id",
│ "accessToken": "your-token"
│ },
│ "status": "sent"
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://api.docbutterfly.com/api/RequestSignatureBYOK"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed