DocuSign REST API
---
title: DocuSign REST API
description: Developers search 'docusign rest api' when they want HTTP verbs, path templates, and JSON payloads without SDK abstraction. DocuSign eSignature REST API v2.1.
date: 2026-06-24
updated: 2026-06-24
---
Developers search "docusign rest api" when they want HTTP verbs, path templates, and JSON payloads without SDK abstraction. DocuSign eSignature REST API v2.1 is the canonical surface. This guide summarizes REST patterns and maps them to Atlas routes for engineers building parallel integrations.
Share: DocuSign REST is envelopes plus tabs. Atlas REST is envelope plus review plus send.
DocuSign REST API base paths
DocuSign REST API uses account-scoped URLs:
POST /restapi/v2.1/accounts/{accountId}/envelopes
GET /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}
PUT /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}
GET /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/combined
POST /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/recipient
Demo host: demo.docusign.net. Production: www.docusign.net or region-specific hosts per DocuSign account settings.
Every call needs Authorization Bearer token from OAuth or JWT grant tied to a DocuSign user seat.
Atlas base:
https://atlaswork.ai/api/
Bearer API key from dashboard. No accountId in path.
REST create envelope
DocuSign REST POST body includes documents, recipients, optional tabs, and status.
curl -X POST "https://demo.docusign.net/restapi/v2.1/accounts/$ACCOUNT_ID/envelopes" \
-H "Authorization: Bearer $DS_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"emailSubject": "Please sign",
"status": "sent",
"documents": [{
"documentId": "1",
"name": "nda.pdf",
"documentBase64": "..."
}],
"recipients": {
"signers": [{
"email": "signer@example.com",
"name": "Signer",
"recipientId": "1",
"routingOrder": "1",
"tabs": {
"signHereTabs": [{
"documentId": "1",
"pageNumber": "1",
"xPosition": "100",
"yPosition": "200"
}]
}
}]
}
}'
Atlas REST create without coordinate tabs:
curl -X POST https://atlaswork.ai/api/envelope \
-H "Authorization: Bearer $ATLAS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: docusign-rest-demo-1" \
-d '{
"document_url": "https://example.com/nda.pdf",
"parties": [{"email": "signer@example.com", "name": "Signer", "role": "Customer"}]
}'
Atlas returns review_url. POST /api/envelope/{id}/send dispatches after field review.
REST status and documents
DocuSign GET envelope returns status, recipients, customFields, and purgeState.
Atlas GET /api/envelope/{id}/status for poll-heavy jobs:
{
"status": "pending",
"signed_count": 1,
"total": 2,
"next_signer_email": "second@example.com"
}
Signed PDF: DocuSign GET combined document. Atlas signed download via envelope routes or webhook.
REST void and remind
DocuSign PUT envelope with status voided cancels in-flight sends.
Atlas POST /api/envelope/{id}/void on pending envelopes with refund rules when no signer completed.
DocuSign POST reminders on recipientId. Atlas POST /api/envelope/{id}/remind targets next unsigned party in sequential order.
REST templates
DocuSign POST /envelopes with templateId and templateRoles.
Atlas POST /api/templates/{id}/send with prefill object for text fields by key.
REST webhooks (Connect)
DocuSign Connect REST configuration lives in admin console. Payloads can be JSON or XML.
Atlas webhook_url on create. Verify X-Atlas-Signature HMAC before updating your database.
Event map:
- envelope-sent → envelope.sent
- recipient-completed → per-party progress
- completed → envelope.signed when all parties done
- voided → envelope.voided
REST error handling
DocuSign REST returns errorCode and message in JSON body with HTTP 4xx.
Common codes: USER_AUTHENTICATION_FAILED, ENVELOPE_DOES_NOT_EXIST, TAB_OUT_OF_BOUNDS.
Atlas returns 402 credits exhausted, 409 version conflicts, 400 malformed parties.
Retry idempotent creates only. Use Idempotency-Key on Atlas POST /api/envelope.
REST rate limits
DocuSign publishes burst and hourly limits per account. Back off on 429 with jitter.
See DocuSign API limits.
Atlas serverless routes use fair-use limits. Contact support for high-volume enterprise.
Side-by-side REST map
| Intent | DocuSign REST | Atlas REST |
|---|---|---|
| Upload + create | POST /envelopes with base64 | POST /api/envelope JSON or multipart |
| Send draft | PUT status sent | POST /api/envelope/{id}/send |
| List | GET /envelopes | GET /api/envelopes |
| Status | GET /envelopes/{id} | GET /api/envelope/{id}/status |
| Void | PUT voided | POST /api/envelope/{id}/void |
| Remind | POST reminders | POST /api/envelope/{id}/remind |
REST vs SDK
DocuSign ships SDKs that wrap the same REST paths. Atlas documents OpenAPI at /openapi.json. Generate typed clients or use curl directly.
MCP callers use ten lifecycle tools instead of maintaining OAuth refresh for agents.
When to keep DocuSign REST
- Envelope IDs are embedded in CRM custom objects org-wide
- Recipient authentication options require DocuSign-specific REST flags
- Connect listeners are registered in production admin with strict change control
When Atlas REST fits
- Bots and cron jobs should not consume DocuSign seats
- Review before send prevents misaddressed contracts on ad-hoc uploads
- Agents need MCP without iframe wrappers
DocuSign API tutorial mindset
Searchers typing "docusign api tutorial" want a ordered path from auth to first signed PDF. DocuSign tutorials on developers.docusign.com walk OAuth consent, accountId lookup, envelope create with tabs, then Connect webhook setup. Budget a full day for sandbox OAuth alone if JWT is new to your team.
Atlas tutorial path is shorter for API-first teams: generate API key, POST /api/envelope with document_url, open review_url, POST send, verify webhook on signed. No tab arrays on create. See E-signature API for the full sequence.
DocuSign API example (minimal create)
A canonical DocuSign API example mirrors the REST create block above: one PDF, one signer, optional signHere tab coordinates. Production examples add customFields for your CRM id and routingOrder for sequential parties.
Atlas minimal example:
curl -X POST https://atlaswork.ai/api/envelope \
-H "Authorization: Bearer $ATLAS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: docusign-example-1" \
-d '{
"document_url": "https://example.com/nda.pdf",
"parties": [{"email": "signer@example.com", "name": "Jane Signer", "role": "Customer"}],
"webhook_url": "https://your-app.com/hooks/atlas"
}'
Poll GET /api/envelope/{id}/status until signed_count matches total.
DocuSign REST API in Node.js
Node teams search "docusign api nodejs" for the official docusign-esign SDK or raw fetch against demo.docusign.net. Typical pattern: load integration key JSON, exchange JWT for access token, call envelopesApi.createEnvelope, store envelopeId in Postgres.
Atlas Node pattern uses fetch or axios with Bearer API key only:
const res = await fetch('https://atlaswork.ai/api/envelope', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ATLAS_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': `node-create-${Date.now()}`,
},
body: JSON.stringify({
document_url: pdfUrl,
parties: [{ email, name, role: 'Customer' }],
}),
});
const { envelope_id, review_url } = await res.json();
Open review_url in browser or hand to ops for Send before signers get email.
DocuSign REST API in JavaScript (browser caution)
"docusign api javascript" often means front-end embed or SPA integration. DocuSign supports embedded signing views via POST recipient view requests. Never put DocuSign integration secrets in browser bundles.
Atlas create and send belong on your server. Signers open atlaswork.ai/sign links. If you need embedded UX, link out from your portal with party tokens rather than exposing API keys client-side.
Further reading:
FAQ
JSON only? DocuSign REST v2.1 uses JSON. Legacy SOAP exists for older integrations.
Impersonation? JWT grant impersonates a user for server apps. Atlas API keys are not tied to human seats.
Simultaneous signing? DocuSign supports parallel routing orders. Atlas signing is sequential only.
Idempotency? Atlas Idempotency-Key on create and send. DocuSign relies on client reference fields.
OpenAPI? Atlas publishes /openapi.json. DocuSign publishes Swagger on developer portal.
Logging and support traces
Log envelopeId or envelope_id plus event type only. Redact PDF bytes and signer email from application logs on both platforms.
When support opens a ticket, include accountId and envelopeId for DocuSign, or envelope_id for Atlas, plus UTC timestamp of the failed API call.