A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.
The Adobe Acrobat Sign API is how an app or AI agent works with a signing account: uploading a document, sending an agreement out for signature, fetching a signer's link, downloading the signed file, or reusing a library template. Access is granted through an OAuth access token, and each token carries scopes that name an area and an operation plus a modifier that limits its reach to the signed-in user, their group, or the whole account. A state change emits an event that Acrobat Sign can deliver to a registered endpoint.
How an app or AI agent connects to Adobe Acrobat Sign determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the access token behind it and the OAuth scopes that token carries.
The REST API v6 lives under /api/rest/v6 on the account's regional host, which an app discovers with the baseUris call before making requests. It takes JSON request bodies, except for file upload which uses multipart form data, returns JSON, and pages lists with a cursor. A call authenticates with an OAuth 2.0 Bearer access token whose scopes set what it can reach.
Acrobat Sign POSTs a JSON event to an HTTPS endpoint registered through the webhookEndpoints API or the admin console. The receiver proves ownership by echoing back the X-AdobeSign-ClientId header value, in a response header or a JSON field, and returning a 2XX status. OAuth 2.0 webhookEndpoints can be scoped to a single application or to the whole account.
An app sends the user to Adobe's authorization page with the scopes it needs, receives an authorization code on the redirect, and exchanges it for an access token and a refresh token. The access token is short-lived and sent as a Bearer token; the refresh token is used to obtain a new access token without sending the user through again. The scopes requested must match those enabled on the application exactly.
The Adobe Acrobat Sign API is split into areas an agent can act on, like agreements, the documents uploaded to send them, reusable library templates, web forms, and the people and webhooks an account manages. Each area has its own methods and its own scope, and a write in some areas sends a document out for legally binding signature.
Methods for creating, reading, downloading, and cancelling agreements sent for signature.
Method for uploading a source file to reference when creating an agreement, web form, or template.
Methods for creating and reading reusable library templates.
Methods for creating and reading web forms that collect signatures from a hosted page.
Methods for registering, reading, updating, and deleting webhook endpoints for event delivery.
Methods for reading and managing the users and groups in an account.
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.
| Method | Endpoint | What it does | Access | Permission | Version | |
|---|---|---|---|---|---|---|
AgreementsMethods for creating, reading, downloading, and cancelling agreements sent for signature.8 | ||||||
| POST | /api/rest/v6/agreements | Create an agreement, optionally sending it out for signature, and return the agreementId. | write | agreement_write | Current | |
References a transientDocumentId, library template, or another agreement as the file source. Sending for signature is the core write. Acts onagreement Permission (capability) agreement_writeVersionAvailable since the API’s base version Webhook event AGREEMENT_CREATEDRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/agreements | Retrieve agreements for the user, paginated and filterable by group. | read | agreement_read | Current | |
Served from a microservice since May 2025 with a maximum page size of 500. Acts onagreement Permission (capability) agreement_readVersionAvailable since the API’s base version Webhook eventNone Rate limitMax page size 500 SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/agreements/{agreementId} | Retrieve the current status and details of an agreement. | read | agreement_read | Current | |
Read-only. Acts onagreement Permission (capability) agreement_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/agreements/{agreementId}/signingUrls | Retrieve the signing URL for each participant once the agreement is ready to sign. | read | agreement_read | Current | |
Available only after the agreement is out for signature; clients poll this endpoint for the URL. Acts onagreement Permission (capability) agreement_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/agreements/{agreementId}/documents | Retrieve the IDs of the documents that make up an agreement. | read | agreement_read | Current | |
Read-only. Use GET /agreements/{agreementId}/combinedDocument to download the signed PDF. Acts onagreement Permission (capability) agreement_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| PUT | /api/rest/v6/agreements/{agreementId}/state | Transition an agreement's state, including cancelling (recalling) one that is out for signature. | write | agreement_write | Current | |
Setting state to CANCELLED recalls the agreement and ends the signing process. Acts onagreement Permission (capability) agreement_writeVersionAvailable since the API’s base version Webhook event AGREEMENT_RECALLEDRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /api/rest/v6/agreements/{agreementId}/reminders | Create a reminder on specified participants of an agreement. | write | agreement_write | Current | |
A reminder can be created for any participant at any time before their action. Acts onreminder Permission (capability) agreement_writeVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/agreements/{agreementId}/formData | Retrieve the data entered into an agreement's form fields, as CSV. | read | agreement_read | Current | |
Read-only; returns the merged field data collected from signers. Acts onagreement Permission (capability) agreement_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Transient documentsMethod for uploading a source file to reference when creating an agreement, web form, or template.1 | ||||||
| POST | /api/rest/v6/transientDocuments | Upload a source file and obtain a transientDocumentId, valid for 7 days, to reference when creating an agreement, web form, or template. | write | agreement_write | Current | |
Takes multipart form data. The agreement_write scope (with a self, group, or account modifier) covers upload; the id expires after 7 days. Acts ontransientDocument Permission (capability) agreement_writeVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Library templatesMethods for creating and reading reusable library templates.3 | ||||||
| POST | /api/rest/v6/libraryDocuments | Create a reusable library template placed in the user's library. | write | library_write | Current | |
References a transientDocumentId as the file source. Acts onlibraryDocument Permission (capability) library_writeVersionAvailable since the API’s base version Webhook event LIBRARY_DOCUMENT_CREATEDRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/libraryDocuments | Retrieve the library templates available to a user. | read | library_read | Current | |
Read-only. Acts onlibraryDocument Permission (capability) library_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/libraryDocuments/{libraryDocumentId} | Retrieve the details of a library template. | read | library_read | Current | |
Read-only. Acts onlibraryDocument Permission (capability) library_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Web forms (widgets)Methods for creating and reading web forms that collect signatures from a hosted page.3 | ||||||
| POST | /api/rest/v6/widgets | Create a web form (widget) that collects signatures from a hosted page, and return the widgetId. | write | widget_write | Current | |
References a transientDocumentId or library template as the file source. Acts onwidget Permission (capability) widget_writeVersionAvailable since the API’s base version Webhook event WIDGET_CREATEDRate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/widgets | Retrieve all web forms (widgets) for a user. | read | widget_read | Current | |
Read-only. Acts onwidget Permission (capability) widget_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/widgets/{widgetId}/agreements | List the agreements created from a web form (widget). | read | widget_read | Current | |
Read-only. Acts onwidget Permission (capability) widget_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
WebhooksMethods for registering, reading, updating, and deleting webhook endpoints for event delivery.5 | ||||||
| POST | /api/rest/v6/webhookEndpoints | Register a webhook endpoint to receive events, scoped to an application or, if applicationIDs is omitted, to the whole account. | write | webhook_write | Current | |
On registration the endpoint must pass the X-AdobeSign-ClientId verification handshake. Acts onwebhookEndpoint Permission (capability) webhook_writeVersionIntroduced 2024-01-01 Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/webhookEndpoints | List the active webhook endpoints. | read | webhook_read | Current | |
Read-only; returns paginated results. Acts onwebhookEndpoint Permission (capability) webhook_readVersionIntroduced 2024-01-01 Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/webhookEndpoints/{webhookEndpointId} | Retrieve a specific webhook endpoint. | read | webhook_read | Current | |
Read-only. Acts onwebhookEndpoint Permission (capability) webhook_readVersionIntroduced 2024-01-01 Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| PUT | /api/rest/v6/webhookEndpoints/{webhookEndpointId} | Update a webhook endpoint. | write | webhook_write | Current | |
Returns an empty 204 on success. Acts onwebhookEndpoint Permission (capability) webhook_writeVersionIntroduced 2024-01-01 Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| DELETE | /api/rest/v6/webhookEndpoints/{webhookEndpointId} | Delete a webhook endpoint so it stops receiving events. | write | webhook_retention | Current | |
Deletion requires the webhook_retention scope rather than webhook_write. Acts onwebhookEndpoint Permission (capability) webhook_retentionVersionIntroduced 2024-01-01 Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Users & groupsMethods for reading and managing the users and groups in an account.4 | ||||||
| GET | /api/rest/v6/users | Retrieve all the users in an account. | read | user_read | Current | |
Read-only; paginated. Acts onuser Permission (capability) user_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/users/{userId} | Retrieve detailed information about a user in the caller's account. | read | user_read | Current | |
Read-only. Acts onuser Permission (capability) user_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| PUT | /api/rest/v6/users/{userId} | Update a user's details. | write | user_write | Current | |
A separate PUT /users/{userId}/state activates or deactivates a user. Acts onuser Permission (capability) user_writeVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /api/rest/v6/groups | Retrieve all the groups in an account. | read | user_read | Current | |
Read-only; groups are read with the user_read scope. Acts ongroup Permission (capability) user_readVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Adobe Acrobat Sign can notify an app when something happens to an agreement, a web form, or a library template, like an agreement being created or every signer completing their action. It POSTs a JSON event to a registered endpoint, so an integration learns about activity without polling.
| Event | What it signals | Triggered by |
|---|---|---|
AGREEMENT_CREATED | An agreement was created, for example when a document is sent out for signature. | /api/rest/v6/agreements |
AGREEMENT_ACTION_COMPLETED | A participant completed their required action on an agreement, like signing or approving. | /api/rest/v6/agreements |
AGREEMENT_WORKFLOW_COMPLETED | Every participant has completed their action and the agreement is fully signed and finished. | /api/rest/v6/agreements |
AGREEMENT_RECALLED | An agreement was cancelled (recalled) before completion, ending the signing process. | /api/rest/v6/agreements/{agreementId}/state |
AGREEMENT_REJECTED | A participant declined to sign, rejecting the agreement. | /api/rest/v6/agreements |
AGREEMENT_EXPIRED | An agreement reached its deadline without being completed and expired. | /api/rest/v6/agreements |
LIBRARY_DOCUMENT_CREATED | A reusable library template was created. | /api/rest/v6/libraryDocuments |
WIDGET_CREATED | A web form (widget) was created. | /api/rest/v6/widgets |
Adobe Acrobat Sign limits how fast an app can call, by a throttling model that varies with the account's service tier and the cost of each endpoint.
Acrobat Sign meters requests with a throttling model rather than a fixed published number. The threshold depends on the account's service plan (small business, business, or enterprise) and on how resource-intensive each endpoint is, so different endpoints throttle at different rates. Going over returns HTTP 429 with a body coded THROTTLING_TOO_MANY_REQUESTS and a retryAfter value, plus a Retry-After header naming the seconds to wait. The guidance is to wait that long and retry with exponential backoff. A May 2025 change tightened throttling rules and the 429 behaviour, and an October 2025 change applied a minimum polling interval to GET endpoints used to check status.
List endpoints page with a cursor and a client-set pageSize. A response returns a page of results plus a cursor for the next page, which is passed back on the following call until no further cursor is returned. As of May 2025 the GET /agreements list is served from a microservice with a maximum page size of 500.
A transient document is stored for 7 days, after which its id can no longer be referenced. GET endpoints that report status are subject to a minimum polling interval, so a status loop must respect the recommended wait between calls rather than poll continuously.
The status codes an agent should handle, and what to do about each.
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 400 | BAD_REQUEST / MISSING_REQUIRED_PARAM | The request was malformed or a required parameter is missing or invalid, for example an unknown transientDocumentId in fileInfos. | Read the message field, fix the request body or parameters, and resend. The request is not retryable as-is. |
| 401 | UNAUTHORIZED / INVALID_ACCESS_TOKEN | No valid access token was provided, or the token has expired. | Refresh the access token with the refresh token, or restart the OAuth flow, then resend. |
| 403 | PERMISSION_DENIED / INVALID_OAUTH_SCOPE | The token lacks the scope this call needs, or the caller is not allowed to act on the resource, for example a scope with a self modifier reaching another user's data. | Enable and request the needed scope with the right modifier (self, group, or account), or act as a permitted user. |
| 404 | INVALID_AGREEMENT_ID / RESOURCE_NOT_FOUND | The requested object does not exist or is not visible to this token, account, or scope modifier. | Verify the resource ID and confirm the token's scope reaches it. |
| 429 | THROTTLING_TOO_MANY_REQUESTS | Too many requests arrived too quickly for the account's tier and the endpoint's cost. | Wait the seconds given in the Retry-After header or retryAfter field, then retry with exponential backoff. |
| 500 | MISC_SERVER_ERROR | An error on the Acrobat Sign side. It is rare. | Retry with backoff, and contact Adobe support if it persists. |
Adobe Acrobat Sign carries one current major REST version, v6, and ships dated changes to it through API release notes rather than minting a new version string for each addition.
v6 is the current major version of the Acrobat Sign REST API, reached under /api/rest/v6 after a baseUris lookup. It added pagination across resources with a client-set page size, made resource-intensive operations asynchronous, and made resource IDs stable across callers and over time. Adobe ships dated additions through the API release notes rather than minting a new version string.
Additive changes to webhooks and polling.
A minimum polling interval was applied to GET endpoints.
OAuth 2.0 reach extended and a webhook payload field scheduled for removal.
Throttling rules tightened and the agreements list moved to a microservice.
OAuth 2.0 webhooks and the webhookEndpoints APIs launched.
Build against v6 and track the API release notes for new fields, webhooks, and limits.
Acrobat Sign API release notes ↗Bollard AI sits between a team's AI agents and Adobe Acrobat Sign. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.