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.

See DocuSign template API.

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

IntentDocuSign RESTAtlas REST
Upload + createPOST /envelopes with base64POST /api/envelope JSON or multipart
Send draftPUT status sentPOST /api/envelope/{id}/send
ListGET /envelopesGET /api/envelopes
StatusGET /envelopes/{id}GET /api/envelope/{id}/status
VoidPUT voidedPOST /api/envelope/{id}/void
RemindPOST remindersPOST /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.