Everything an AI agent can do with the DocuSign API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints24
API versionv2.1
Last updated23 June 2026
Orientation

How the DocuSign API works.

The DocuSign API is how an app or AI agent works with a DocuSign account: creating an envelope from documents, sending it to recipients for signature, checking who has signed, downloading the completed file, and building reusable templates. Access is granted through an OAuth access token whose scopes decide what it can do, and because one broad scope covers nearly every signing action, the real boundary is the account and which user the token represents. DocuSign can also push an event to a registered endpoint when an envelope or recipient changes.

24Endpoints
7Capability groups
12Read
12Write
2Permissions
Authentication
DocuSign uses OAuth 2.0. An app gets an access token through the Authorization Code Grant, where a user signs in and consents, or through JWT Grant, where the app signs a token with its private key and impersonates a chosen user with no person present. The token is sent as 'Authorization: Bearer ' and expires one hour after it is issued. The account ID and the regional base URI to call come from the OAuth userinfo response, not from a fixed host.
Permissions
DocuSign's OAuth scopes are coarse. A single 'signature' scope covers nearly every eSignature action, reading and writing alike, so it cannot be narrowed to read-only or to one envelope at the DocuSign layer. The 'impersonation' scope is what lets a JWT integration act as a user without that user present. A few areas need their own scope, such as 'user_read' to read the account's user list. Because one scope spans so much, the meaningful access boundary is the account and which user the token represents.
Versioning
The eSignature API carries its version in the request path, and v2.1 is the current version. It was released in June 2019 as an additive update over v2.0: it added bulk send improvements, richer envelope search, template folders, and include and exclude parameters, without breaking existing v2.0 calls. An integration moves between path versions deliberately rather than receiving silent changes.
Data model
The core object is the envelope, the container that holds the documents to be signed, the recipients who sign or receive them, and the tabs (fields) placed on the pages. An envelope moves through statuses such as created (draft), sent, delivered, completed, declined, and voided. Templates are reusable envelope blueprints, folders group envelopes, and embedded views return short-lived URLs that drop the DocuSign signing or sending screen inside another app. A status change can be pushed to a webhook through Connect.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to DocuSign determines what it can reach. There is a route for making calls, a route for receiving events, and a hosted server that exposes DocuSign actions to agents, and each is governed by the token behind it and the scopes that token carries.

Ways to connect

eSignature REST API

The eSignature REST API answers under the account's regional host, with the version carried in the path as v2.1 (for example /restapi/v2.1/accounts/{accountId}/envelopes). A call authenticates with an OAuth 2.0 access token in a Bearer header, and the account ID and base URI come from the OAuth userinfo response.

Best forConnecting an app or AI agent to DocuSign.
Governed byThe OAuth access token and the scopes it carries.
Docs ↗

MCP server (Model Context Protocol)

DocuSign publishes an official Model Context Protocol server, in open beta on developer and production accounts, at https://mcp-d.docusign.com/mcp. It lets an agent create and send envelopes, send from templates, check envelope and recipient status, manage bulk send lists, and query agreement context through Intelligent Agreement Management, all over OAuth.

Best forConnecting an AI agent to DocuSign through MCP.
Governed byThe OAuth grant and the scopes it carries.
Docs ↗

Connect (webhooks)

DocuSign Connect POSTs an event payload to a registered HTTPS endpoint when an envelope or recipient changes. The endpoint can be configured account-wide in DocuSign Admin or set per envelope through the eventNotification object, and the receiver can require an HMAC signature to confirm the payload came from DocuSign.

Best forReceiving DocuSign events at an app or AI agent.
Governed byThe Connect configuration and the HMAC signing key on the endpoint.
Docs ↗
Authentication

Authorization Code Grant

The standard OAuth 2.0 authorization-code flow, where a user signs in to DocuSign and consents, and the integration exchanges the returned code for an access token that acts as that user. It suits an app where a real person is present to grant access.

TokenOAuth user access token (Bearer)
Best forUser-present apps where a person signs in
Docs ↗

JWT Grant

A service-integration flow where the app signs a JSON Web Token with its private key and impersonates a chosen user, with no person present. It needs the signature and impersonation scopes, and one-time consent from each user it impersonates. It suits an unattended agent or backend job.

TokenOAuth access token via signed JWT (Bearer)
Best forUnattended service integrations and agents
Docs ↗
Capability map

What an AI agent can do in DocuSign.

The DocuSign API is split into areas an agent can act on, like envelopes, recipients, documents, templates, and the embedded signing and sending views. Most of these share one broad scope, so the boundary that matters is set at the account and the access token, not by separate per-area permissions.

Endpoint reference

Every DocuSign API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Envelopes

Create, send, read, and update envelopes, the container for the documents and recipients in a signing request, and list envelopes by status.5

The signature scope covers nearly every eSignature write, so it cannot be narrowed to read-only or to a single envelope at the DocuSign layer. Setting status to 'sent' sends immediately; 'created' makes a draft.

Acts onenvelope
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventenvelope-sent
Rate limitStandard limits apply

The signature scope grants both reading and writing; DocuSign does not offer a read-only eSignature scope.

Acts onenvelope
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires at least one of from_date, envelope_ids, or transaction_ids; omitting all of them returns an INVALID_REQUEST_PARAMETER error. Subject to the per-account burst limit on repeated polling.

Acts onenvelope
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only despite the PUT verb; the body carries the envelope IDs to look up rather than changing data.

Acts onenvelope
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Setting status to 'voided' cancels a sent envelope and notifies recipients; setting a draft to 'sent' sends it.

Acts onenvelope
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventenvelope-voided
Rate limitStandard limits apply

Recipients

List, add, update, and remove the people who receive an envelope, and resend the notification to them.4

Returns each recipient's routing order, status, and identity details.

Acts onrecipient
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

On a sent envelope, adding a recipient with resend_envelope set emails them straight away.

Acts onrecipient
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Passing resend_envelope=true re-sends real email notifications to the named recipients.

Acts onrecipient
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removing a recipient from a sent envelope changes who is required to sign.

Acts onrecipient
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Documents

List the documents on an envelope, download a single document or the combined PDF, and add or replace documents on a draft.3

Returns document metadata, not the file content; use getDocument to download a file.

Acts ondocument
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns the full document content, including signed pages once the envelope is complete.

Acts ondocument
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The Content-Type must name the file's real type, such as application/pdf.

Acts ondocument
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Signing & sending views

Generate the short-lived URLs that embed the DocuSign signing, sending, correcting, or console screens inside another app.3

The returned URL lets the holder sign the real envelope, so it is single-use and expires within minutes.

Acts onview
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Used on a draft envelope before it is sent.

Acts onview
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns a signed-in session into the full DocuSign UI for the named user.

Acts onview
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Templates

List, read, and create reusable templates, and apply a template to an envelope.4

Returns shared and personal templates the authenticated user can see.

Acts ontemplate
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns the template's documents, recipient roles, and fields.

Acts ontemplate
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A new template can be shared with other users on the account.

Acts ontemplate
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Adds the template's documents, recipients, and fields onto the envelope.

Acts ontemplate
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Folders

List folders and the envelopes inside them, and move envelopes between folders.3

Folders organize envelopes and templates for the account.

Acts onfolder
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns the envelopes contained in the named folder.

Acts onfolder
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Moving an envelope changes where it is filed for the whole account.

Acts onfolder
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Account

Read account information, settings, and the list of users on the account.2

Returns account-level configuration; reading the full user list needs the user_read scope on top of signature.

Acts onaccount
Permission (capability)signature
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reading the user directory needs the user_read scope, separate from the signature scope used for envelopes.

Acts onuser
Permission (capability)user_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

DocuSign Connect can notify an app or AI agent when something happens to an envelope or a recipient, instead of the app repeatedly asking. It posts a payload describing the change to a registered HTTPS endpoint for the events that have been chosen.

EventWhat it signalsTriggered by
envelope-sentFires when an envelope is sent and the notification email goes to the first recipient in the routing order./restapi/v2.1/accounts/{accountId}/envelopes
envelope-deliveredFires when a recipient opens an envelope and views the documents for the first time.In-app only
envelope-completedFires when every recipient has finished their action and the envelope is complete.In-app only
envelope-declinedFires when a recipient declines to sign, which ends the envelope.In-app only
envelope-voidedFires when an envelope is voided, either by a sender or automatically on expiry./restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}
recipient-sentFires when the notification email is sent to a particular recipient.In-app only
recipient-completedFires when a recipient finishes their action on the envelope, usually by signing.In-app only
recipient-declinedFires when a recipient declines to sign the envelope.In-app only
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

DocuSign limits how fast an app or AI agent can call, through an hourly request quota set per account and a separate short-window burst limit on top.

Request rate

DocuSign meters requests per account, not per method. The default ceiling is 3,000 requests per hour across every app on the account, with a separate burst limit of 500 calls in any 30-second window in production. Each response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, where the reset value is a Unix epoch time, though the headers are not present on every response. Going over returns HTTP 429. Repeated polling of the same envelope can trip a separate burst polling limit, so DocuSign recommends Connect webhooks instead of tight status polling. An account that meets the prerequisites can raise the hourly ceiling through the API limit management tool.

Pagination

List endpoints page through results with start_position and count, where count sets the page size and the response reports result_set_size, total_set_count, and the next and previous positions. Envelope and template searches also take filters such as a from_date and to_date range, a status filter, and a search_text term to narrow the set rather than page through everything.

Request size

Envelopes have document and recipient ceilings rather than a single payload size: an envelope holds up to about 2,000 documents and 1,000 recipients, an individual document is capped at roughly 25 MB, and an envelope totals up to about 50 MB of documents. A document download returns the full file content, and the combined download merges every document into one PDF.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400INVALID_REQUEST_PARAMETERThe request held an invalid or malformed parameter, like an ID in the wrong format, a body that does not match the expected JSON, or a required filter left out (for example listing status changes with none of from_date, envelope_ids, or transaction_ids).Read the message naming the parameter, correct it, and resend. The request is not retryable as-is.
401USER_AUTHENTICATION_FAILEDThe access token is missing, invalid, or expired. Tokens expire one hour after they are issued, so a long gap between getting a token and using it triggers this.Get a fresh access token and send it in the Authorization Bearer header.
403USER_LACKS_PERMISSIONSThe token is valid but the user or integration does not have permission for the action, or the access token lacks the required scope.Grant the user the needed permission, or request the missing scope, then retry.
404ENVELOPE_DOES_NOT_EXISTThe envelope ID does not exist on this account, or the token cannot see it. The same shape applies to other missing resources, such as a template or folder.Confirm the ID and that the account and base URI match the one the token was issued for.
429HOURLY_APIINVOCATION_LIMIT_EXCEEDEDThe account passed its hourly request quota, or a short-window burst limit. The X-RateLimit-Reset header gives the time the quota refreshes, in Unix epoch seconds.Wait until the reset time, then resume. Spread polling out and prefer Connect webhooks over repeated status calls.
Versioning & freshness

Version history.

DocuSign carries the eSignature API version in the request path, and v2.1 is the current version, an additive update over v2.0 that did not break existing calls.

Version history

What changed, and when

Latest versionv2.1
v2.1Current version
Current version, additive update over v2.0

The eSignature REST API v2.1 was released at DocuSign's Momentum conference in June 2019. It is an additive, backward-compatible update that did not break existing v2.0 calls: integrations could keep calling v2.0 and adopt v2.1 features at their own pace. It carries the version in the request path, so moving up is a deliberate path change rather than a silent one.

What changed
  • Bulk send was substantially expanded, with per-recipient customization, custom fields, and recipient-list validation.
  • Envelope search gained new filters for more precise listing of envelope sets.
  • Templates can be organized into folders and shared as groups.
  • Added include, exclude, and include_metadata parameters to cut the number of calls needed.
  • Many responses return more standardized and useful data than v2.0.
v2
Previous version (v2.0)

Version 2.0 was the prior eSignature REST API version. It remains callable on its own path, and DocuSign published an upgrade guide for moving from v2.0 to v2.1. Because v2.1 is additive, an integration on v2.0 was not forced to change.

What changed
  • The established envelope, recipient, document, template, and view model that v2.1 extended.
  • Still reachable on its v2 path alongside v2.1.

An integration pins v2.1 in the path and moves up only when a new path version ships.

DocuSign eSignature API release notes ↗
Questions

DocuSign API, answered.

Authorization Code Grant or JWT Grant, which should I use?+
Use Authorization Code Grant when a real person is present to sign in to DocuSign and consent, such as a user connecting their own account to an app. Use JWT Grant for an unattended integration or agent that acts on its own, with no person present: the app signs a token with its private key and impersonates a chosen user. JWT needs the signature and impersonation scopes and one-time consent from each user it impersonates.
What scopes does the eSignature API need, and how granular are they?+
Most eSignature work needs only the 'signature' scope, which covers reading and writing envelopes, recipients, documents, templates, and views together. There is no separate read-only scope, so 'signature' grants both. JWT integrations also need 'impersonation' to act as a user. Reading the account user list needs 'user_read'. Because one scope spans so much, fine-grained control over what an integration can do has to come from a layer in front of DocuSign rather than from the scopes themselves.
What are the rate limits?+
By default an account can make 3,000 requests per hour across all of its apps, plus a burst limit of 500 calls in any 30-second window in production. Exceeding either returns HTTP 429, and the X-RateLimit-Reset header gives the Unix epoch time the quota refreshes. Repeatedly polling one envelope's status can trip a separate burst polling limit. The fix for status checks is Connect webhooks rather than tight polling, and eligible accounts can raise the hourly ceiling through API limit management.
How do I get notified when an envelope is signed, instead of polling?+
Use DocuSign Connect. It POSTs a payload to a registered HTTPS endpoint when an envelope or recipient changes, for events such as envelope-sent, envelope-completed, recipient-completed, and envelope-declined. Connect can be set account-wide in DocuSign Admin or per envelope through the eventNotification object on the create call, and the receiver can require an HMAC signature to confirm the payload came from DocuSign. This avoids the polling that trips burst limits.
How do I send an envelope versus save it as a draft?+
Both use the same create call. Set the envelope's status to 'sent' to send it immediately, which emails the first recipient and starts the signing process, or set it to 'created' to save it as a draft. A draft can later be sent by updating its status to 'sent', or by opening it in an embedded sender view. Sending is the point where real recipients are notified, so it is the action worth gating most tightly.
What does an embedded signing or sending URL give access to?+
An embedded view call returns a short-lived URL that drops a DocuSign screen inside another app. A recipient view URL lets its holder sign a real envelope, a sender view URL opens the sending screen for a draft, and a console view URL opens the full DocuSign UI for a user. These URLs are single-use and expire within minutes, because anyone holding one can act on the envelope or account.
Related

More legal API guides for agents

What is Bollard AI?

Control what every AI agent can do in DocuSign.

Bollard AI sits between a team's AI agents and DocuSign. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared DocuSign key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
DocuSign
Contracts Agent
Read envelope status ResourceOffReadFull use
Send for signature ActionOffReadFull use
Void envelopes ActionOffReadFull use
Per-agent access, set in Bollard AI, not in DocuSign