Skip to main content
The DocsAutomator eSign API enables programmatic management of signing sessions, retrieval of signing links, progress tracking, and audit trail access.

Authentication

All API endpoints require bearer token authentication:

Base URL


Session Management

List Signing Sessions

/esign/sessions
Retrieve all signing sessions with optional filtering.
Query Parameters: Valid Status Values: pending, awaiting_approval, in_progress, completed, expired, cancelled, declined A session that waits for approval has the status awaiting_approval and an approval summary: { "status", "rule", "approvers": [{ "name", "email", "decision" }] }.
Response:

Get Session Details

/esign/sessions/:sessionId
Returns comprehensive session information including signer statuses, document hashes, e-sign fields with positions, and completion timestamps.
Per-signer fields include declinedAt and declineReason for any signer who declined. When the session status is declined, the response additionally includes top-level declinedAt, declinedBy (email, name, signerIndex), and declineReason so you can read refusal details without inspecting the signers array. closeType tells you how the session closes: signature (the default) or acceptance. An acceptance session has no esignFields. A recipient who accepted has the signer status signed, and the signer object carries typedName when the recipient typed their name before accepting. Both the list and the detail endpoints return closeType. Response:
webhookParams echoes the custom parameters from the original document creation request, plus the identifier of the triggering record, folded in automatically per data source: recId (Airtable, SmartSuite, Notion — pageId and Notion Button payloads are normalized to recId), taskId (ClickUp), or rowNumber (Google Sheets — positional at trigger time, so treat it as “which row triggered this”, not a durable key). Your own webhookParams keys are never overwritten by the folded identifier. Use it to correlate signing sessions with records in your data source — for example, when polling sessions periodically to reconcile signing status against your own records. It is null when no identifier or parameters were passed. When status is declined, the response also includes:

/esign/sessions/:sessionId/links
Retrieves signing links for all signers when using manual delivery mode.
Returns expiration dates and signer status for each link. While a session waits for internal approval (status: "awaiting_approval"), no signing links exist yet: signingLink is null for every signer. The links appear after approval. The same applies to the session details. Response:

Get Audit Trail

/esign/sessions/:sessionId/audit
Returns chronological event log for the signing session.
Event Types: invite_sent, invite_resent, reminder_sent, email_sent and email_send_failed carry the delivery record in metadata.delivery. See Email Delivery Outcomes. Response:
reconstructed: true indicates that some events were inferred from the session document because the original audit events were missing (e.g., pruned from an older session).

Cancel Session

/esign/sessions/:sessionId/cancel
Cancel an active signing session.
Request body:
Response:
Cannot cancel completed sessions.

Resend Invitation

/esign/sessions/:sessionId/resend/:signerIndex
Resends invitation email to a specific signer (indexed 1, 2, 3, etc.).
Response:

Webhook Events

See eSign overview — Webhook Integration for the full payload of each event. Acceptance sessions fire the same events with the same payload keys. closeType is "signature" or "acceptance" on every session event. On an acceptance session, esign.signer_signed fires when a recipient clicks Accept, and the signer entries carry two extra fields: typedName (the name the recipient typed, or null) and acceptedAt.

Session Created (Manual Delivery)

Triggered when signing session created with deliveryMethod: "manual". Use to retrieve and distribute signing links manually. With internal approval on, it fires after approval, when the links exist.

Session Completed

Triggered when all signers complete signing and final PDF is generated. Payload:
The googleDriveFileId, googleDriveUrl, and googleDriveFolderId fields are only present when “Save to Google Drive” is enabled in the Signed PDF Delivery settings.

Signer Signed

Fires once per signer as they complete, including the final signer. Use to track progress for multi-party documents.
For the final signer, progress.allSigned is true but the session status is still in_progress. The separate Session Completed webhook fires afterwards, once the signed PDF is ready.

Session Expired

Fires when a signing session expires before all signers complete. An expiration email is also sent to workspace notification recipients.
If a session is already declined, cancelled, or completed before its expiration time, this webhook does not fire.

Approval Events

Fire for automations with approval switched on. esign.approval_requested fires when the session is created and the approvers are asked:
approval.requestedBy names the team member who created the document in the app. It is null when the document came from the API, a trigger or another integration, and its name is null when the email is not a team member. sourceData, webhookParams and additionalParams are included when set, as in the other e-sign events. esign.approval_approved fires once, when the approval completes the rule and the request goes out. status is pending, approval.status is approved, and approval.decidedBy names the approver whose decision completed the rule. When an owner or admin decided on behalf of an approver, decidedBy names the owner or admin and forApprover names the approver.
esign.approval_rejected fires when an approver rejects the document. The session is cancelled, and approval.reason holds the reason the approver gave:
An approval that does not complete the rule (for example the first of two approvals under “all must approve”) sends no webhook. An approval that expires fires the existing esign.session_expired event.

Passing Additional Parameters

Include webhookParams in document creation requests to receive custom data in webhook notifications:
Parameters are returned in all webhook notifications under webhookParams, together with the automatically included trigger record identifier (recId, taskId, or rowNumber depending on the data source). An identical additionalParams key is also present — it exists only for legacy reasons, so use webhookParams in new integrations.

Status Reference

Session Statuses

Signer Statuses

Acceptance Sessions

Sessions with closeType: "acceptance" use the same session and signer statuses. A recipient who clicked Accept has the signer status signed. The session is completed when every recipient has accepted. The audit trail records the click as a document_accepted event, with the typed name in metadata.typedName when the recipient typed one.

Error Responses


Rate Limits

Rate limits apply to the public signing page routes (not the authenticated admin API endpoints):

Code Examples

Node.js — List and Monitor Sessions

Python — Webhook Handler

Last modified on October 14, 2026