Authentication
All API endpoints require bearer token authentication:Base URL
Session Management
List Signing Sessions
/esign/sessions
Retrieve all signing sessions with optional filtering.
Valid Status Values:
pending, in_progress, completed, expired, cancelled, declined
Get Session Details
/esign/sessions/:sessionId
Returns comprehensive session information including signer statuses, document hashes, e-sign fields with positions, and completion timestamps.
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:
Get Signing Links
/esign/sessions/:sessionId/links
Retrieves signing links for all signers when using manual delivery mode.
Get Audit Trail
/esign/sessions/:sessionId/audit
Returns chronological event log for the signing session.
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.
Resend Invitation
/esign/sessions/:sessionId/resend/:signerIndex
Resends invitation email to a specific signer (indexed 1, 2, 3, etc.).
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 withdeliveryMethod: "manual". Use to retrieve and distribute signing links manually.
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.
Passing Additional Parameters
IncludewebhookParams in document creation requests to receive custom data in webhook notifications:
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 withcloseType: "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.