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.


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
NameTypeRequiredDescription
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 needed
Try in Testbed

E-Signature (BYOK)

POST /api/RequestSignatureBYOK 1 token

E-signature with your own DocuSign credentials.

Parameters
NameTypeRequiredDescription
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
Try in Testbed