For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
If an error or warning occurs, we’ll return either an error or warning object in the JSON response. These can also be viewed in the API Reference documentation.
Example Warning
A response may contain one or more warnings. Check out the list of warning names below to learn more about the possible values of warning_name and their meaning. Here is an example of the JSON structure of the response:
1
{
2
"warnings": [
3
{
4
"warning_msg": "This SignatureRequest will be placed on hold until the user confirms their email address.",
5
"warning_name": "unconfirmed"
6
}
7
]
8
}
Warning Names
List and details of possible warnings that can be returned.
Warning
Description
unconfirmed
The email address of the account making the Signature Request has not been confirmed. The Signature Request will be placed on hold until it is confirmed.
custom_field_value_too_long
The value provided for a custom field is too long. The custom field will extend beyond the limits of its container and may not display the way you intended.
custom_field_values_too_long
A summary of all values for custom fields that are too long
parameter_ignored
One of the request parameters was ignored because it wasn’t being used correctly
non_pdf_text_tags
Text Tags were enabled for a file that is not a PDF, which may result in imprecise positioning.
form_fields_overlap
Two or more of the form fields specified are overlapping, which may prevent signers from completing the document.
form_fields_placement
Form fields must be placed within the document.
deprecated_parameter
A parameter was provided which we no longer support. The value will be ignored.
parameter_conflict
Two parameters have been provided which are in conflict. One parameter will be ignored.
parameter_missing
An essential parameter was missing from the request and has been set to a default value.
partial_success
The operation succeeded, but at least one non-essential part of the request failed.
test_mode_only
A parameter was provided which will affect your app in test mode but will not affect it in production. Upgrade your account to use in production.
empty_value
A non-essential parameter was provided but it does not have a value. The parameter will be ignored.
add_member
A warning was generated while attempting to add a user to your team.
parameter_invalid
A parameter was provided with an invalid value. The parameter will be modified or ignored.
oauth_grants_revoked
OAuth user access grants have been revoked from this app due to a scope change.
cc_disabled
The option to email a copy to the other signers and anyone CC’d is disabled for given account.
reassign_unsupported
A template with signer reassignment was used on an endpoint that does not support it (e.g. bulk send with template). The template will still be used, but without signer reassignment enabled.
duplicate_template_ids
Templates can only be used once in a signature request. A duplicated template ids was passed in the request.
value_too_precise
The value for the parameter had a level of precision too high (e.g. expires_at have seconds level of granularity, instead of hour for time)
Example Error
A response may only contain one error at most. Check out the list of error names below to learn more about the possible values of error_name and their meaning. Here is an example of the JSON structure of the response (or error POSTed to your callback url):
1
{
2
"error": {
3
"error_msg": "Unauthorized user.",
4
"error_name": "unauthorized"
5
}
6
}
Error Names
List and details of possible errors that can be returned. Each entry includes the HTTP status code, the likely cause, recommended remediation, and whether the request is safe to retry.
Retryable values:
No — retrying the same request will not succeed; fix the request or state first.
Yes — the request can be retried as-is after waiting.
Conditional — retry only after resolving the underlying state (and with backoff).
Error
HTTP Code
Description
Cause
Remediation
Retryable
Backoff
bad_request
400
The request contained invalid or malformed parameters.
A parameter failed validation, or the request body was malformed.
Inspect error_msg and error_path, correct the offending parameter, and resend.
No
—
unauthorized
401
The credentials supplied are missing or invalid.
Missing, malformed, or invalid API key or OAuth access token.
Verify the API key or OAuth token and the Authorization header, then retry.
No
—
payment_required
402
The account must be credited or upgraded to perform this action.
The action requires a paid plan, additional quota, or API credits.
Upgrade the plan or add the required credits/quota, then retry.
No
—
forbidden
403
The action is not allowed for these credentials or in the current context.
The authenticated account lacks access to the resource or operation.
Confirm the account has access to the resource and the required permissions.
No
—
not_found
404
Nothing matches the requested resource.
The resource id does not exist or is not visible to this account.
Verify the id and that the resource belongs to the authenticated account.
No
—
method_not_supported
405
The HTTP method is not supported for this endpoint.
The request used a verb the endpoint does not accept.
Use the HTTP method documented for the endpoint.
No
—
conflict
409
The request was well-formed but conflicts with the current state.
The target resource is in a state incompatible with the request (e.g. a signature request is still being set up).
Wait briefly and retry, or listen for a callback event confirming the resource is ready.
Conditional
—
deleted
410
The request was cancelled or deleted.
The resource has been cancelled or removed and is no longer available.
Do not retry; the resource is permanently gone.
No
—
unprocessable_entity
422
The request was understood but the target entity cannot be processed.
The resource is still being processed, or it is in an error state.
If the resource is still processing, wait and retry; if it is in an error state, recreate/resend it instead of retrying.
Conditional
If still processing, retry with exponential backoff; if in an error state, do not retry.
exceeded_rate
429
Your account’s API request rate limit has been exceeded.
Too many requests were sent within the rate-limit window for this request type.
Pace requests using the X-RateLimit-* response headers and retry after the window resets.
Yes
Honor X-Ratelimit-Reset (Unix epoch); otherwise exponential backoff with jitter. No Retry-After header is sent.
max_faxes
429
Too many fax transmissions are currently pending or transmitting.
The account has reached the limit of concurrent in-flight fax transmissions.
Wait for outstanding transmissions to complete, then retry.
Yes
Retry with exponential backoff once pending transmissions clear.
unavailable
503
The service is temporarily unavailable.
A downstream dependency or the service itself is temporarily unavailable.
Retry later with exponential backoff.
Yes
Retry later with exponential backoff and jitter.
maintenance
503
The request could not be completed because the site is under maintenance.
The API is in a scheduled maintenance window.
Retry once the maintenance window ends.
Yes
Retry later with exponential backoff.
invalid_recipient
400
The recipient (fax number or email address) is invalid.
A recipient value did not pass validation.
Correct the recipient value and resend.
No
—
invalid_reminder
400
The signature request reminder was invalid.
A reminder was attempted against an ineligible request (e.g. embedded, closed, or expired).
Only send reminders for eligible (non-embedded, open) signature requests.
No
—
team_invite_failed
403
The team invitation could not be completed.
The invitee already belongs to a team, or the invite is otherwise not permitted.
Confirm the invitee is not already on a team before inviting.
No
—
signature_request_cancel_failed
400
The signature request could not be cancelled.
The caller is not the requester, or the request is already fully executed/closed.
Only the requester can cancel, and only before the request is fully executed.
No
—
signature_request_remove_failed
400
Access to the signature request could not be removed.
The signature request has not yet been fully executed, so access cannot be revoked.
Wait until all parties have signed, or call /signature_request/cancel to cancel incomplete requests instead.
No
—
signature_request_expired
400, 403
The signature request has expired.
The operation targets a request whose expiration has passed. Most endpoints return 400; final-copy/download endpoints return 403.
The request can no longer be acted upon; create a new signature request.
No
—
unknown
500
An unexpected error occurred.
An unhandled server-side error, or a status code without a more specific error_name.
Retry transient failures; if it persists, open a support ticket with the request details.
Conditional
For transient 5xx, retry with exponential backoff; otherwise do not retry.
Asynchronous Error Events
Some errors are not returned as an HTTP response. Instead they are delivered asynchronously to your callback URL as a webhook, where the error name arrives as event.event_type. Inspect event.event_metadata.event_message in the callback payload for details. See Events and Callbacks for how to consume these.
Event (event_type)
Description
Cause
Remediation
Retryable
signature_request_invalid
Asynchronous error while processing a signature request.
A signature request could not be processed (e.g. invalid tags, fields, or merge data).
Inspect event.event_metadata.event_message, correct the request, and resend.
Conditional
template_error
Asynchronous error while creating a template.
Template file processing failed (e.g. unsupported or corrupt file).
Recreate the template with a valid file; check status in the API dashboard.
Conditional
file_error
Asynchronous error while processing an uploaded file.
A file attached to a request could not be processed.
Resend the request with a supported, non-corrupt file.
Conditional
sign_url_invalid
An embedded signing URL has expired or become invalid.
The embedded sign_url is no longer valid (e.g. expired).
Generate a fresh embedded sign_url via the embedded sign URL endpoint.
Yes
unknown_error
An unspecified asynchronous processing error occurred.
An unexpected error occurred while processing the request asynchronously.
Check the request status in the API dashboard; retry or contact support if it persists.
Conditional
Machine-readable error catalog
For programmatic use (SDKs, AI agents, retry logic), this catalog is published as structured extensions in the OpenAPI specification, so you can branch on errors without scraping this page:
x-error-codes — a root map keyed by error_name, where each entry carries http_status, summary, cause, remediation, retryable, backoff, and category. Mirrors the Error Names table above.
x-error-events — the asynchronous webhook errors above, keyed by event_type, each with delivery: webhook (no http_status).
The error_name field on the ErrorResponseError schema is a closed enum of the canonical HTTP error names.