Skip to main content

EasyInk API (v1)

The EasyInk Public API allows integration with the e-signature platform to manage signing sessions, participants, documents, and complete signing workflows.

Authentication

All API requests require authentication using JWT Bearer tokens.

Including the token in requests:

Authorization: Bearer {your-jwt-token}

How to obtain a token:

The API uses the Authorization Code Flow (OAuth 2.0) for authentication. This is a three-step process that involves redirecting the user to the Identity Provider and then exchanging an authorization code for an access token.

  1. Step 1: Get Client Secret Contact your EasyInk administrator to get the client ID and client secret.

  2. Step 2: Get Authorization Code Redirect the user to the authorize endpoint in a browser:

    • Production: https://identity.easyink.io/connect/authorize
    • Staging: https://identity-staging.easyink.io/connect/authorize

    Callback URL:

    • Production: https://easyink.io
    • Staging: https://staging.easyink.io

    Query Parameters:

    • response_type: code
    • client_id: {client-id}
    • scope: openid hermes_api hermes_idp profile
    • redirect_uri: {prod-or-staging-callback-url}
    • code_challenge: {random-pkce-challenge}
    • code_challenge_method: S256
  3. Step 3: Exchange Code for Token After successful login, the user is redirected to your redirect_uri with a code parameter. Exchange this code for a token:

    • Production: POST https://identity.easyink.io/connect/token
    • Staging: POST https://identity-staging.easyink.io/connect/token

    Request Body (URL-encoded):

    • grant_type: authorization_code
    • client_id: {client-id}
    • client_secret: {client-secret}
    • code: {received-code}
    • redirect_uri: {prod-or-staging-callback-url}
    • code_verifier: {pkce-verifier-that-was-used-for-generating-pkce-challenge}

Using Postman:

  1. In your request, go to the Authorization tab.
  2. Select Type: OAuth 2.0.
  3. In the Configure New Token section:
    • Grant Type: Authorization Code (With PKCE)
    • Callback URL: https://easyink.io
    • Auth URL: https://identity.easyink.io/connect/authorize
    • Access Token URL: https://identity.easyink.io/connect/token
    • Client ID: {client-id}
    • Client Secret: {client-secret}
    • Code Challenge Method: S256
    • Scope: openid hermes_api hermes_idp profile
  4. Click Get New Access Token.

Token properties:

  • Format: JWT (JSON Web Token)
  • Expiration: Tokens expire after a set period (check exp claim)
  • Scopes: Tokens include scopes defining allowed operations
  • Refresh: Obtain new tokens before expiration

Error Handling

All error responses follow a consistent format using the ApiError model. Errors include:

  • Machine-readable error codes for programmatic handling
  • Human-readable error messages
  • Nested error details for validation failures

Common error codes:

  • ValidationError - Invalid request data
  • NotFound - Resource does not exist
  • Unauthorized - Missing or invalid authentication
  • Forbidden - Insufficient permissions
  • InternalServerError - Server-side error

SigningSessionDrafts

Create signing session draft

Creates a new empty signing session draft that can be configured before sending to participants.

Typical workflow after creation:

  1. Upload documents
  2. Add participants
  3. Add signature fields
  4. Optionally configure signing order
  5. Validate consistency
  6. Start the session to send to participants

What you get:

  • Empty draft container with specified subject
  • Unique signing session ID for subsequent operations
  • Default settings from initiator's organization
Authorizations:
bearerAuth
Request Body schema: application/json
required

Basic information for creating the draft

object or null

Information about the user creating the draft and their preferences. If not provided, defaults to the authenticated user's settings.

subject
string or null <= 500 characters

Subject/title of the signing session shown to participants in emails and the signing interface. Should clearly identify the purpose of the signing (e.g., "Employment Contract - John Smith").

Responses

Response Schema: application/json
string <uuid>

Request samples

Content type
application/json
Example
{
  • "subject": "Employment Agreement - John Smith"
}

Response samples

Content type
application/json
"3fa85f64-5717-4562-b3fc-2c963f66afa6"

Upload document to draft

Uploads a document file and adds it as a document for signing to the session draft.

Supported formats:

  • PDF (.pdf) - Recommended, no conversion needed
  • Microsoft Word (.docx, .doc) - Converted to PDF automatically

What happens:

  1. File is uploaded to blob storage
  2. Document is converted to PDF (if needed)
  3. Document internal processing
  4. Document ID is returned for adding signature fields

File requirements:

  • Maximum file size: typically 50 MB
  • Valid, non-corrupted file
  • Readable and processable format

After upload:

  • Check document status (Processing → ProcessingReady)
  • Use returned ID to add signature fields to pages
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: multipart/form-data
required

Document file to upload as multipart form data

fileContent
required
string <binary>

Binary content of the PDF or Word document

Responses

Response Schema: application/json
string <uuid>

Response samples

Content type
application/json
"7c9e6679-7425-40de-944b-e07fc1f90ae7"

Add participant to draft

Adds a new signer participant to a signing session draft.

Prerequisites:

  • Draft session must exist
  • At least one delivery method (Email or Sms) must be specified
  • Corresponding contact information must be provided (email for Email, phone for Sms)

What happens:

  1. Participant is added to the session with a unique ID
  2. Participant will receive signing invitation when the session is started
  3. Participant can be assigned to signature fields

Note: This is for regular signing sessions. For bulk sessions, use the bulk participants endpoint.

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Participant information including name, contact details, and delivery preferences

deliveryMethods
Array of strings or null non-empty
Enum: "Email" "Sms"

Methods for delivering the signing link to the participant:

  • Email - Send invitation via email (requires email address)
  • Sms - Send invitation via SMS (requires phone number)

Multiple methods can be specified for better delivery reliability.

email
string or null <email> <= 256 characters

Email address for sending signing invitations. Required if Email is included in deliveryMethods.

firstName
string or null [ 1 .. 100 ] characters

Participant's first (given) name

language
string
Default: "English"
Enum: "English" "Spanish"

Preferred language for the participant's signing interface and notifications:

  • English - English UI and emails
  • Spanish - Spanish UI and emails
lastName
string or null [ 1 .. 100 ] characters

Participant's last (family) name

middleName
string or null <= 100 characters

Participant's middle name or initial (optional)

phone
string or null^\d{10}$

Phone number for sending SMS notifications. Required if Sms is included in deliveryMethods. Must be a 10-digit phone number.

Responses

Response Schema: application/json
string <uuid>

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "middleName": null,
  • "lastName": "Smith",
  • "email": "john.smith@example.com",
  • "phone": null,
  • "deliveryMethods": [
    ],
  • "language": "English"
}

Response samples

Content type
application/json
"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"

Add signature field to draft

Adds a single signature field to a document in the signing session draft.

Prerequisites:

  • Draft session must exist
  • Specified document must exist in the session
  • If participantId is provided, the participant must exist in the session
  • Field placement must be within document page boundaries

Typical workflow:

  1. Create draft session
  2. Upload documents
  3. Add participants
  4. Add signature fields (this operation)
  5. Validate session consistency
  6. Start the session
Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Signature field configuration including type, position, and options

documentId
string <uuid>

ID of the document where the signature field will be placed

object

Declaration of the signature field to create, including type, position, and options. The server will assign a unique ID to the created field.

participantId
string or null <uuid>

ID of the participant who will fill this field.

Responses

Response Schema: application/json
string <uuid>

Request samples

Content type
application/json
Example
{
  • "participantId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  • "documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  • "field": {
    }
}

Response samples

Content type
application/json
"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"

Download document PDF

Downloads the complete document for signing in its original PDF format.

Use cases:

  • Download document for offline review
  • Verify uploaded content before starting session
  • Extract document for external processing

Response:

  • Content-Type: application/pdf
  • Original uploaded file (unmodified)
  • Binary PDF stream
Authorizations:
bearerAuth
path Parameters
documentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the document to download

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Employment_Agreement.pdf\""

Suggested filename for download

Content-Length
integer

Size of the PDF file in bytes

Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove document from draft

Removes a document for signing from the signing session draft.

Important:

  • Document and all its pages are permanently deleted
  • All signature fields on this document are also removed
  • Cannot be undone
  • Can only be performed on draft sessions (not started sessions)

Use cases:

  • Remove incorrect document
  • Replace document with corrected version
  • Simplify multi-document session

Cascade deletions:

  • All signature fields assigned to this document
  • All page labels on this document
Authorizations:
bearerAuth
path Parameters
documentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the document to remove

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Download attachment PDF

Downloads the complete attachment document in PDF format.

Use cases:

  • Download reference materials for offline review
  • Preview full attachment before starting session
  • Verify uploaded document content

Response:

  • Content-Type: application/pdf
  • Binary PDF file stream
  • Original uploaded file (not modified)
Authorizations:
bearerAuth
path Parameters
attachmentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the attachment document

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Employee_Handbook.pdf\""

Filename for download

Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove attachment from draft

Removes an attachment document from the signing session draft.

Important:

  • Only attachments can be removed, not documents for signing. To delete a document for signing, use the Delete Document endpoint.
  • Attachment and all its pages are permanently deleted
  • Cannot be undone
  • Can only be performed on draft sessions (not started sessions)

Use cases:

  • Remove incorrect attachment
  • Replace attachment with updated version
  • Clean up unnecessary reference materials
Authorizations:
bearerAuth
path Parameters
attachmentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the attachment to remove

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Add yourself as participant

Adds the currently authenticated user as a participant to the signing session draft.

Convenience endpoint: This is a shortcut for adding yourself without providing all your details. User information is automatically retrieved from your profile:

  • Name (first, middle, last)
  • Email address
  • Phone number (if available)
  • Language preference
  • Organization settings

Note: This method does not set any delivery methods by default. To specify delivery methods (e.g., Email, SMS), you must use the Update Participant endpoint after adding yourself.

When to use:

  • You are both initiator and signer
  • Self-signing scenarios (sign your own documents)
  • Testing and development

Automatic settings:

  • Role: Initiator
  • Delivery methods: Based on available contact info
  • Language: From user profile
  • Pre-filled signature/initials: From saved preferences (if any)
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response Schema: application/json
deliveryMethods
Array of strings or null
Enum: "Email" "Sms"

Methods for delivering the signing link to the participant. Multiple methods can be specified for redundancy.

email
string or null <email> <= 256 characters

Email address for sending signing invitations and notifications

firstName
string or null <= 100 characters

Participant's first (given) name

id
string <uuid>

Unique identifier of the participant in the signing session

initialsBlobId
string or null <uuid>

Optional reference to a pre-saved initials image blob. If provided, these initials can be automatically applied to initial fields.

language
string
Default: "English"
Enum: "English" "Spanish"

Preferred language for notifications and the signing interface

lastName
string or null <= 100 characters

Participant's last (family) name

middleName
string or null <= 100 characters

Participant's middle name or initial (optional)

phone
string or null^\d{10}$

Phone number for SMS notifications (10 digits)

role
string
Enum: "Initiator" "Signer"

Role of the participant in the signing session:

  • Initiator - User who created the signing session (can be a signer too)
  • Signer - Participant who needs to sign the document
signatureBlobId
string or null <uuid>

Optional reference to a pre-saved signature image blob. If provided, this signature can be automatically applied to signature fields.

userId
string or null <uuid>

Optional link to a registered user account in the system. If specified, pre-fills participant information from their profile.

Response samples

Content type
application/json
{
  • "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  • "firstName": "John",
  • "middleName": "Robert",
  • "lastName": "Smith",
  • "email": "john.smith@example.com",
  • "phone": "2025551234",
  • "role": "Signer",
  • "userId": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  • "deliveryMethods": [
    ],
  • "language": "English",
  • "signatureBlobId": null,
  • "initialsBlobId": null
}

Update participant details

Updates all information for an existing participant in the draft session.

What can be updated:

  • Personal information (name)
  • Contact information (email, phone)
  • Delivery methods
  • Language preference

Important:

  • This is a full update (all fields must be provided)
  • Partial updates are not supported
  • Can only update participants in draft sessions
  • Participant ID and role cannot be changed
Authorizations:
bearerAuth
path Parameters
participantId
required
string <uuid>
Example: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

Unique identifier of the participant to update

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Complete updated participant information

deliveryMethods
Array of strings or null non-empty
Enum: "Email" "Sms"

Updated delivery methods for sending signing invitations. Changing this will trigger a new invitation to be sent.

email
string or null <email> <= 256 characters

Updated email address for the participant. Required if Email is in deliveryMethods.

firstName
string or null [ 1 .. 100 ] characters

Updated first (given) name of the participant

language
string
Default: "English"
Enum: "English" "Spanish"

Updated language preference for UI and notifications

lastName
string or null [ 1 .. 100 ] characters

Updated last (family) name of the participant

middleName
string or null <= 100 characters

Updated middle name or initial (optional)

phone
string or null^\d{10}$

Updated phone number for the participant. Required if Sms is in deliveryMethods. Must be a 10-digit phone number.

Responses

Request samples

Content type
application/json
Example
{
  • "firstName": "John",
  • "middleName": "Robert",
  • "lastName": "Smith",
  • "email": "john.smith@newcompany.com",
  • "phone": null,
  • "deliveryMethods": [
    ],
  • "language": "English"
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Remove participant from draft

Removes a participant from the signing session draft.

Important:

  • Participant is permanently removed
  • All signature fields assigned to this participant are also removed
  • Cannot be undone
  • Can only be performed on draft sessions (not started sessions)
  • Session must have at least one participant remaining

Use cases:

  • Remove participant added by mistake
  • Replace participant with someone else
  • Reduce number of signers

Cascade deletions:

  • All signature fields assigned to this participant
  • Participant's position in signing order (if sequential)
Authorizations:
bearerAuth
path Parameters
participantId
required
string <uuid>
Example: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

Unique identifier of the participant to remove

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Configure sequential signing order

Sets up a one-by-one (sequential) signing order for participants in the draft session.

Sequential Signing Workflow:

  1. First participant in the order receives invitation immediately
  2. After they complete signing, second participant receives invitation
  3. Process continues until all participants have signed

Use cases:

  • Approval chains (employee → manager → HR)
  • Hierarchical signing (subordinate → supervisor → executive)
  • Sequential review (reviewer 1 → reviewer 2 → final approver)

Requirements:

  • All participants in the session must be included in the order array
  • Order of participant IDs determines the signing sequence
  • Cannot be changed after session is started
Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Ordered array of participant IDs defining the signing sequence

participantsOrder
Array of strings or null <uuid> non-empty [ items <uuid > ]

Ordered array of participant IDs defining the signing sequence.

The participant at index 0 signs first, index 1 signs second, etc. All participants in the session must be included in this array.

Example workflow with 3 participants:

  1. Participant A receives invitation immediately
  2. After A signs, Participant B receives invitation
  3. After B signs, Participant C receives invitation
  4. After C signs, session is complete

Responses

Request samples

Content type
application/json
Example
{
  • "participantsOrder": [
    ]
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Enable parallel signing

Configures the signing session for parallel (all-at-once) signing mode where all participants receive invitations simultaneously and can sign in any order.

Parallel Signing Behavior:

  • All participants receive invitation emails at the same time
  • Participants can sign in any order
  • No waiting for previous participants to complete
  • Session completes when all participants have signed

Use cases:

  • Multiple independent signers (no hierarchy)
  • Time-sensitive documents requiring quick completion
  • Peer agreements where order doesn't matter
  • Default mode for most signing sessions

Comparison with Sequential:

  • Faster completion (no waiting)
  • Better for time-critical documents
  • Less control over signing sequence

This is the default mode - only use this endpoint if you previously set one-by-one order and want to switch back to parallel mode.

Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove signature field and all dependent fields

Removes a signature field from the signing session draft.

Important cascade behavior: This operation automatically removes all dependent fields as well. If other fields have dependsOn pointing to this field, they will also be deleted.

Example: If you delete a signature field that has a date field depending on it, both the signature field AND the date field are removed.

Response: Returns an array of all removed field IDs (the requested field plus any dependents).

Use cases:

  • Remove incorrectly placed field
  • Clean up unused fields
  • Restructure field layout

Restrictions:

  • Can only delete fields in draft sessions
  • Cannot be undone
Authorizations:
bearerAuth
path Parameters
signatureFieldId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the signature field to remove

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response Schema: application/json
Array
string <uuid>

Response samples

Content type
application/json
Example
[
  • "7c9e6679-7425-40de-944b-e07fc1f90ae7"
]

Update signature field options

Updates the configuration options for an existing signature field in the draft.

What can be updated:

  • Whether field is required (isRequired)
  • Type-specific options (displayMode for Date, fontSize for FreeText, etc.)

Important:

  • Field type (forType) cannot be changed - it must match the existing field type
  • Can only update fields in draft sessions (not started sessions)
  • Options schema must match the field's type

Use cases:

  • Change required status of a field
  • Adjust date display mode (Date → DateTime)
  • Modify text field formatting (font size, alignment)
Authorizations:
bearerAuth
path Parameters
signatureFieldId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the signature field to update

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Updated options (must match the field type)

Any of
isRequired
boolean
Default: false

Whether the participant must fill this field to complete signing. Required fields prevent session completion until filled.

Responses

Request samples

Content type
application/json
Example
{
  • "isRequired": false,
  • "forType": "Signature"
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Update signature field placement

Updates the position and size of a signature field on the document page.

Use cases:

  • Reposition field to better location
  • Resize field for better visibility
  • Move field to different page
  • Adjust field to avoid overlap with document content

Requirements:

  • Field must remain within page boundaries
  • New position must not create overlapping fields (validation depends on settings)
  • Can only update fields in draft sessions

Coordinate system reminder:

  • Origin (0,0) is at bottom-left corner
  • X increases to the right
  • Y increases upward
  • All values in points (72 points = 1 inch)
Authorizations:
bearerAuth
path Parameters
signatureFieldId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the signature field to reposition

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

New position and size for the signature field

page
integer <int32> >= 1

Page number where the element is placed (1-based index, first page is 1)

positionX
number <double> >= 0

Horizontal position of the element's bottom-left corner in points. Distance from the left edge of the page.

positionY
number <double> >= 0

Vertical position of the element's bottom-left corner in points. Distance from the bottom edge of the page (NOT from top).

sizeX
number <double> >= 0.1

Width of the rectangular area in points

sizeY
number <double> >= 0.1

Height of the rectangular area in points

Responses

Request samples

Content type
application/json
Example
{
  • "page": 1,
  • "positionX": 395,
  • "positionY": 792,
  • "sizeX": 200,
  • "sizeY": 50
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Check draft exists

Checks whether a signing session draft exists without retrieving its full details.

Performance benefit: Returns only HTTP status code without response body, making it faster and more lightweight than GET for existence checks.

Use cases:

  • Validate draft ID before performing operations
  • Check if draft still exists before updates
  • Implement client-side caching with existence verification
  • Lightweight health check for draft availability

Response codes:

  • 204: Draft exists
  • 404: Draft does not exist
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the draft session to check

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get draft details

Retrieves complete details of a signing session draft including all documents, participants, signature fields, and configuration.

Returned information:

  • Session metadata (ID, subject, status flags)
  • All documents with processing status
  • All attachments
  • All participants with contact info
  • All signature fields with placement and options
  • All page labels
  • Signing order settings
  • Reminder frequency

Use cases:

  • Review draft configuration before starting
  • Check document processing status
  • Verify all participants and fields are configured
  • Get current state for UI display

Before starting the session: Use this endpoint to verify the draft is complete and ready.

Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Responses

Response Schema: application/json
Array of objects or null (SigningConfigurationAttachment)

Reference/supporting documents that participants can view but not sign

Array of objects or null (BulkParticipant)

Participants for bulk signing sessions (only used if isBulkSession = true)

Array of objects or null (SigningConfigurationDocument)

Primary documents that participants will sign

initiatorUserId
string <uuid>

ID of the user who created this draft

isBulkSession
boolean

Whether this is a bulk signing session where multiple participants sign identical documents. When true, use bulkParticipants array; when false, use participants array.

isLocked
boolean

Whether the draft is locked from modifications.

isSessionCopyDisabled
boolean

Whether creating copies/duplicates of this session is disabled (organization policy setting)

isValidBulkParticipant
boolean or null

Validation status for bulk participants (only relevant when isBulkSession = true). Null if not a bulk session or not yet validated.

isVoidDisabled
boolean

Whether the void operation is disabled for this session (organization policy setting)

organizationId
string <uuid>

Organization to which this signing session belongs

Array of objects or null (PageLabel)

Auto-generated labels showing metadata like session IDs or timestamps on signed documents

Array of objects or null (SigningConfigurationParticipant)

Participants for regular signing sessions (ignored if isBulkSession = true)

reminderFrequency
string or null
Enum: "Never" "Daily" "Weekly"

How often to send reminder notifications to participants who haven't signed:

  • Never - No automatic reminders
  • Daily - Send daily reminders until signed
  • Weekly - Send weekly reminders until signed
settingsSetId
string <uuid>

Reference to the settings template applied to this session (branding, policies, etc.)

Array of objects or null (SignatureField)

Interactive fields where participants provide signatures, dates, initials, etc.

object

Configuration for the order in which participants receive and complete signing

signingSessionId
string <uuid>

Unique identifier of the signing session draft

subject
string or null <= 500 characters

Subject/title of the signing session shown to participants in notifications and UI

timestampFormat
string
Default: "Usa"
Enum: "Usa" "Spanish"

Format for displaying dates and times in the session

Response samples

Content type
application/json
{
  • "signingSessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  • "organizationId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  • "settingsSetId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  • "initiatorUserId": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  • "timestampFormat": "Usa",
  • "isBulkSession": false,
  • "isLocked": false,
  • "isVoidDisabled": false,
  • "isSessionCopyDisabled": false,
  • "isValidBulkParticipant": null,
  • "subject": "Employment Agreement - John Smith",
  • "documents": [
    ],
  • "attachments": [ ],
  • "participants": [
    ],
  • "bulkParticipants": null,
  • "signatureFields": [ ],
  • "pageLabels": [ ],
  • "reminderFrequency": "Daily",
  • "signingOrderSettings": {
    }
}

Update draft parameters

Updates basic parameters of a signing session draft including subject and reminder settings.

What can be updated:

  • Session subject/title shown to participants
  • Reminder frequency for automatic follow-ups

What cannot be updated via this endpoint:

  • Documents (use document endpoints)
  • Participants (use participant endpoints)
  • Signature fields (use signature field endpoints)
  • Signing order (use signing order endpoint)

Use cases:

  • Fix typo in subject line
  • Change reminder frequency based on urgency
  • Update subject to reflect participant name
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session draft

Request Body schema: application/json
required

Updated session parameters

reminderFrequency
string or null
Enum: "Never" "Daily" "Weekly"

Frequency for sending automatic reminder notifications to participants who haven't signed:

  • Never - No automatic reminders will be sent
  • Daily - Send a reminder every day until the participant signs
  • Weekly - Send a reminder once per week until the participant signs

Reminders are only sent during active signing sessions, not for drafts.

subject
string or null <= 500 characters

Updated subject/title of the signing session. This appears in email notifications and the signing interface header.

Responses

Request samples

Content type
application/json
Example
{
  • "subject": "Employment Agreement - John Smith (Updated)",
  • "reminderFrequency": "Daily"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Duplicate session as draft

Creates a new draft by duplicating an existing signing session without voiding the original.

Use cases:

  • Create similar agreements for different participants
  • Reuse template configuration for new session
  • Create periodic agreements (monthly, quarterly)
  • Test configuration before sending to real participants

What is copied:

  • All documents
  • All participants
  • All signature field configurations
  • Session settings (subject, reminders, etc.)

What is NOT copied:

  • Signatures (new draft starts fresh)
  • Session status (new draft is in Draft status)

After duplication:

  1. Optionally modify documents or fields
  2. Start the new session

Original session: Remains unchanged and can be in any status except Voided or Expired.

Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the session to duplicate

Request Body schema: application/json
required

Optional custom subject for the new draft

subject
string or null <= 500 characters

Optional custom subject/title for the duplicated signing session

Responses

Response Schema: application/json
string <uuid>

Request samples

Content type
application/json
Example
{
  • "subject": "Q1 2025 Review Agreement"
}

Response samples

Content type
application/json
"7c9e6679-7425-40de-944b-e07fc1f90ae7"

Delete draft session

Permanently deletes a signing session draft and all associated data.

What is deleted:

  • The draft session itself
  • All documents and their pages
  • All attachments
  • All participants
  • All signature fields
  • All page labels
  • All uploaded blobs (document files)

Important:

  • This operation is permanent and cannot be undone
  • Can only delete drafts (not started sessions)
  • All associated files are removed from storage

Use cases:

  • Cancel draft creation
  • Clean up test drafts
  • Remove obsolete draft sessions

To cancel a started session: Use the void operation instead of delete.

Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the draft session to delete

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Recreate session with void

Creates a new draft by copying an existing signing session, then voids the original session.

Atomic operation:

  1. Creates new draft with same configuration (documents, participants, fields)
  2. Voids the original session with provided reason
  3. Returns new draft ID for further configuration

Use cases:

  • Document has errors and needs correction (recreate with fixes)
  • Session was declined and needs to be resent with changes
  • Terms changed after session started

What is copied:

  • All documents
  • All participants
  • All signature field configurations
  • Session settings (subject, reminders, etc.)

What is NOT copied:

  • Existing signatures (new draft starts fresh)
  • Session status (new draft is in Draft status)
  • Signed documents

Requirements:

  • Original session must be in InProgress or Declined status
  • Void reason is mandatory
  • User must have permission to void original session
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the session to recreate and void

Request Body schema: application/json
required

Optional new subject and mandatory void reason

subject
string or null <= 500 characters

Optional custom subject/title for the recreated signing session

voidReason
string or null [ 1 .. 1000 ] characters

Reason for voiding the original signing session (required when recreating)

Responses

Response Schema: application/json
string <uuid>

Request samples

Content type
application/json
Example
{
  • "subject": "Employment Agreement - Corrected Version",
  • "voidReason": "Original document contained incorrect salary information"
}

Response samples

Content type
application/json
"7c9e6679-7425-40de-944b-e07fc1f90ae7"

SigningSessions

Check session exists

Lightweight check for signing session existence without retrieving full details.

Performance benefit:

  • No response body (only HTTP status)
  • Faster than GET operation
  • Minimal server processing
  • Reduced bandwidth usage

Use cases:

  • Validate session ID before operations
  • Implement client-side caching with validation
  • Quick health check for session availability

Response interpretation:

  • 204: Session exists
  • 404: Session does not exist
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get session details

Retrieves complete details of an active or completed signing session including all documents, participants, status, and signed document availability.

Returned information:

  • Session metadata (ID, subject, status)
  • Permission flags (canBeVoided, canBeCopied)
  • All documents (original documents list)
  • All participants with signing status and timestamps
  • All signed documents (participant-specific signed copies)
  • All attachments (reference materials)
  • All-in-one document availability

Use cases:

  • Monitor session progress
  • Check participant signing status
  • Download signed documents
  • Display session details in UI
  • Track completion percentage

Performance note: This endpoint returns complete session data. For lightweight existence checks, use the HEAD operation instead.

Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Responses

Response Schema: application/json
object

Combined document merging all participants' signatures into one file. Only available after the session is finished.

Array of objects or null (SigningViewAttachment)

Reference/supporting documents attached to the session

bulkSessionId
string or null <uuid>

ID of the parent bulk session if this is a child session in a bulk signing workflow. Null for regular (non-bulk) signing sessions.

canBeCopied
boolean

Whether the current user has permission to duplicate/copy this session

canBeVoided
boolean

Whether the current user has permission to void (cancel) this session

Array of objects or null (SigningViewDocument)

Primary documents that participants sign

Array of objects or null (SigningViewParticipant)

All participants in the session with their current signing status

Array of objects or null (SignedDocument)

Individual signed document copies generated for each participant after they complete signing. Each participant gets their own copy with their signatures applied.

signingSessionId
string <uuid>

Unique identifier of the signing session

status
string
Enum: "Draft" "ReadyToStart" "Pending" "InProgress" "Finished" "Declined" "Voided" "Expired"

Current status of the signing session lifecycle:

  • Draft - Being configured, not yet sent to participants
  • ReadyToStart - Configured and ready to send
  • Pending - Sent but no participant has opened it yet
  • InProgress - At least one participant is actively signing
  • Finished - All participants have completed signing
  • Declined - A participant declined to sign
  • Voided - Session was cancelled/annulled
  • Expired - Session expired before all signatures collected
subject
string or null

Subject/title of the signing session

Response samples

Content type
application/json
{
  • "signingSessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  • "bulkSessionId": null,
  • "subject": "Employment Agreement - December 2024",
  • "canBeVoided": true,
  • "canBeCopied": true,
  • "status": "Finished",
  • "documents": [
    ],
  • "participants": [
    ],
  • "signedDocuments": [
    ],
  • "attachments": [ ],
  • "allInOneDocument": {
    }
}

Convert draft to ready session

Converts a draft signing session to ReadyToStart status, making it ready to send to participants.

What this operation does:

  • Validates draft configuration
  • Transitions status from Draft to ReadyToStart
  • Locks the session from further structural changes
  • Draft is effectively converted to an active session (but not yet sent)

Prerequisites:

  • Draft must have complete configuration
  • All documents must be ProcessingReady
  • All required fields must be present
  • Configuration must pass validation

After conversion:

  • Use the "Start" endpoint to send invitations to participants
  • Session cannot be converted back to draft
  • Can still be deleted or voided if needed

Typical flow:

  1. Create draft
  2. Configure (documents, participants, fields)
  3. Convert to ready (this operation)
  4. Start sending to participants
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the draft session to convert

Responses

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Start sending to participants

Initiates the signing session by sending invitations to participants. This transitions the session from ReadyToStart to InProgress/Pending status.

Prerequisites - session must have:

  • At least one document with ProcessingReady status
  • At least one participant with valid contact information
  • At least one signature field configured
  • Valid configuration (passes consistency validation)

What happens:

  1. Session status changes to InProgress
  2. Signing invitations sent to participants via configured delivery methods:
    • Sequential mode: Only first participant receives invitation
    • Parallel mode: All participants receive invitations simultaneously
  3. Participants receive emails/SMS with unique signing links
  4. Session becomes unavailable for changes
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session to start

Responses

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Update participant contact info

Updates delivery methods and contact information for a participant in an active signing session.

When to use:

  • Participant's email changed
  • Participant didn't receive invitation (wrong contact info)
  • Need to add SMS delivery method
  • Participant requests different contact method

Important restrictions:

  • Can only update participants in Pending or Activated status
  • Cannot update after participant opened the signing link
  • New invitation will be sent to updated contact information
  • Access token will be regenerated for security

What happens:

  1. Contact information is updated
  2. New access token is generated
  3. Fresh invitation is sent via new delivery methods
  4. Old invitation link becomes invalid
Authorizations:
bearerAuth
path Parameters
participantId
required
string <uuid>
Example: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

Unique identifier of the participant to update

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Request Body schema: application/json
required

Updated delivery methods and contact information

deliveryMethods
Array of strings or null
Enum: "Email" "Sms"

Methods to use for delivering the signing link to the participant.

Available methods:

  • Email - Send link via email (requires valid email address)
  • Sms - Send link via SMS (requires valid phone number)

Multiple methods can be specified for redundancy.

email
string or null <email> <= 256 characters

Email address for the participant. Required if Email is included in deliveryMethods. Must be a valid email format.

phone
string or null^\d{10}$

Phone number for the participant. Required if Sms is included in deliveryMethods. Must be a 10-digit phone number.

Responses

Request samples

Content type
application/json
Example
{
  • "deliveryMethods": [
    ],
  • "email": "participant@newcompany.com",
  • "phone": null
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Download attachment

Downloads an attachment document from an active or completed signing session.

Attachments vs Documents:

  • Attachments are reference materials (not signed)
  • Remain unchanged throughout session
  • Available to all participants for viewing
  • Original uploaded file (no signatures added)

Use cases:

  • Download supporting documentation
  • Review reference materials
  • Access policy documents
  • Retrieve background information

Availability: Available in all session statuses except Draft.

Authorizations:
bearerAuth
path Parameters
attachmentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the attachment to download

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Company_Policy_Handbook.pdf\""

Suggested filename for download

Content-Type
string
Example: "application/pdf"
Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
{
  • "error": {
    }
}

Download original document

Downloads the original document for signing from a signing session in PDF format.

Important: This returns the ORIGINAL document without any signatures applied. For signed documents with signatures, use the signed documents endpoint.

Use cases:

  • Review original document content
  • Compare original vs signed version
  • Access document before all signatures collected
  • Download for printing or offline review

Document state:

  • Original uploaded file
  • No signatures or modifications
  • Same as what was uploaded to draft

For signed versions:

  • Use GET /api/signingSessions/{id}/signedDocuments/{signedDocumentId}
  • Or GET /api/signingSessions/{id}/allInOne for complete package
Authorizations:
bearerAuth
path Parameters
documentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the document to download

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Employment_Agreement_Original.pdf\""

Suggested filename

Content-Type
string
Example: "application/pdf"
Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
{
  • "error": {
    }
}

Void active session

Voids (cancels/annuls) an active signing session, preventing any further actions.

What happens:

  • Session status changes to Voided
  • No more signatures can be collected
  • Session cannot be reactivated

When to use:

  • Document contains errors
  • Terms have changed
  • Participant requested cancellation
  • Session no longer needed

Alternative: Consider using "Recreate" instead if you need a corrected version.

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session to void

Request Body schema: application/json
required

Void reason

reason
string or null [ 1 .. 1000 ] characters

Reason for voiding the signing session. This will be visible to all participants and stored in the audit trail.

Responses

Request samples

Content type
application/json
{
  • "reason": "Document contained incorrect information"
}

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Search signing sessions

Search and filter signing sessions with pagination and sorting support.

Returns a paginated list of signing sessions matching the specified criteria. Results can be filtered by status and sorted by multiple properties.

Use cases:

  • Get all signing sessions awaiting signatures
  • Find sessions that need current user's action
  • Retrieve completed sessions
  • Monitor session statuses
Authorizations:
bearerAuth
query Parameters
pageIndex
integer >= 0
Default: 0

Zero-based page index for pagination (0 = first page)

pageSize
integer [ 1 .. 100 ]
Default: 20
Example: pageSize=20

Number of items to return per page (max 100)

Array of objects (PropertySorting)
Example: sorting.properties=[object Object]&sorting.properties=[object Object]

Array of sorting rules applied in order of priority.

Example: To sort by status ascending, then by creation date descending: ?sorting.properties[0].name=status&sorting.properties[0].direction=Ascending&sorting.properties[1].name=created&sorting.properties[1].direction=Descending

statuses
Array of strings
Items Enum: "Draft" "ReadyToStart" "InProgress" "NeedToSign" "Finished" "Declined" "Voided" "Expired" "NeedsAction"
Example: statuses=InProgress&statuses=NeedToSign

Filter signing sessions by status. Multiple statuses can be specified.

Status values:

  • Draft - Session is being configured
  • ReadyToStart - Ready to be sent to participants
  • InProgress - Sent to participants, awaiting signatures
  • NeedToSign - Current user needs to sign
  • Finished - All participants have signed
  • Declined - A participant declined to sign
  • Voided - Session was cancelled/voided
  • Expired - Session expired before completion
  • NeedsAction - Requires user action

Responses

Response Schema: application/json
Array of objects or null (SigningSessionItem)

Array of signing session items matching the search criteria. Empty array if no sessions match the filters.

pageIndex
integer <int32> >= 0

Current page index (0-based, matches the request parameter)

pagesCount
integer <int32> >= 0

Total number of pages available based on pageSize and totalItemsCount

pageSize
integer <int32> >= 1

Number of items per page (matches the request parameter)

totalItemsCount
integer <int32> >= 0

Total number of sessions matching the search criteria across all pages

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalItemsCount": 47,
  • "pagesCount": 3,
  • "pageIndex": 0,
  • "pageSize": 20
}

Get sessions statistics

Retrieves summary statistics about signing sessions grouped by status for the current user.

Returned statistics:

  • Sessions requiring user's signature
  • Draft sessions created by user
  • Sessions ready to start
  • Sessions in progress
  • Sessions needing attention

Use cases:

  • Dashboard widgets showing session counts
  • Overview/home screen statistics
  • Quick status summary without fetching all sessions
  • Notification badge counts (e.g., "5 sessions to sign")

Scope: Only includes sessions visible to the authenticated user based on:

  • Sessions they created
  • Sessions where they are a participant
  • Organization access permissions
Authorizations:
bearerAuth

Responses

Response Schema: application/json
draftsCount
integer <int32> >= 0

Number of sessions in Draft status (being configured, not yet sent). Only includes drafts created by or visible to the current user.

inProgressCount
integer <int32> >= 0

Number of sessions in InProgress status (sent to participants, awaiting signatures). Includes sessions where at least one participant has started but not all have finished.

needsActionCount
integer <int32> >= 0

Number of sessions requiring immediate user attention. May include sessions with errors, declined sessions, or sessions awaiting approval.

readyToStartCount
integer <int32> >= 0

Number of sessions in ReadyToStart status (configured and ready to send to participants). Requires manual action to initiate sending.

sessionsToSignCount
integer <int32> >= 0

Number of sessions where the current user is a participant and needs to sign. Includes sessions in any status where user action is pending.

Response samples

Content type
application/json
{
  • "sessionsToSignCount": 3,
  • "draftsCount": 5,
  • "readyToStartCount": 2,
  • "inProgressCount": 12,
  • "needsActionCount": 1
}

Download signed document

Downloads a completed signed document with signatures applied for a specific participant.

What's included:

  • Original document pages
  • All signature fields filled by the participant
  • Participant's signatures, initials, dates, etc.

Availability:

  • Only after participant completes signing (status: Signed)
  • Document must be in ProcessingReady status

Use cases:

  • Download participant's signed copy
  • Provide signed document to participant
  • Archive individual signed agreements
  • Legal compliance and record keeping
Authorizations:
bearerAuth
path Parameters
documentId
required
string <uuid>
Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Unique identifier of the signed document

signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the signing session

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Employment_Agreement_John_Smith_Signed.pdf\""

Suggested filename including participant name

Content-Type
string
Example: "application/pdf"
Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}

Download all-in-one document

Downloads a combined PDF containing all signed documents from all participants with complete audit trail information.

Document contents (in order):

  1. Cover page with session summary
  2. All original documents with signatures applied
  3. Detailed audit trail for each signature:
    • Participant name and email
    • Signing timestamp
    • IP address
    • Authentication method
    • Legal disclosures

Availability:

  • Only available after session status is Finished
  • Document generation may take time for large sessions
  • Check allInOneDocument.status before downloading

Use cases:

  • Archive complete signed agreement
  • Submit to legal/compliance
  • Provide all parties with complete record
  • Long-term storage with full audit trail

File characteristics:

  • Size: Larger than individual signed documents
  • Includes all participants' signatures
Authorizations:
bearerAuth
path Parameters
signingSessionId
required
string <uuid>
Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Unique identifier of the completed signing session

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"Employment_Agreement_All_Signatures.pdf\""

Filename for the combined document

Content-Type
string
Example: "application/pdf"
Content-Length
integer

File size in bytes

Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
Example
{
  • "error": {
    }
}