Sign API

The Egnyte Sign API enables you to programmatically manage signature workflows. You can list templates, send signature requests using templates, track document statuses, and manage outstanding agreements.

Base URL

https://{domain}.egnyte.com/pubapi/v1/egnyte-sign

Authentication

All requests require an OAuth 2.0 Bearer token in the Authorization header:

Authorization: Bearer {access_token}

See Authentication for details on obtaining a token.


List Templates

Retrieve a list of active templates available to the authenticated user.

Request

GET /pubapi/v1/egnyte-sign/templates

Query Parameters

ParameterTypeRequiredDefaultDescription
statusstringNoFilter templates by status. Valid values: ACTIVE, INACTIVE
sort_bystringNocreated_atField to sort results by. Valid values: name, created_at
sort_directionstringNoDESCSort direction. Valid values: ASC, DESC

Example Request

curl -i -X GET "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/templates?status=ACTIVE&sort_by=created_at" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response

200 OK

FieldTypeDescription
countintegerTotal number of templates returned
resultsarrayArray of template objects
results[].template_idstringUnique identifier for the template (UUID)
results[].namestringTemplate name
results[].descriptionstringTemplate description
results[].statusstringTemplate status (ACTIVE or INACTIVE)
results[].created_byintegerUser ID of the template creator
results[].full_namestringFull name of the template creator
results[].created_atstringISO 8601 timestamp of template creation
results[].template_documentsarrayArray of documents associated with the template
results[].template_documents[].template_document_idstringUnique identifier for the document (UUID)
results[].template_documents[].document_namestringName of the document file
results[].template_documents[].document_typestringDocument file type (e.g., pdf)
results[].template_documents[].entry_idstringEgnyte file system entry ID (UUID)
results[].template_documents[].locationstringFile path in Egnyte file system

Example Response

{
  "count": 2,
  "results": [
    {
      "template_id": "a0c989ce-9126-4437-ad1f-44c166eea083",
      "name": "Agreement",
      "description": "",
      "status": "ACTIVE",
      "created_by": 12,
      "full_name": "John Doe",
      "created_at": "2026-01-02T11:33:12Z",
      "template_documents": [
        {
          "template_document_id": "69ddd8e1-96f8-444c-b307-6a39cea3d1a1",
          "document_name": "Agreement.pdf",
          "document_type": "pdf",
          "entry_id": "dbf254ce-543f-4bcb-996f-870f795314a4",
          "location": "/Shared/Documents/Agreement"
        }
      ]
    },
    {
      "template_id": "54680c8d-094b-473e-b47d-c8e35c84dd16",
      "name": "NDA",
      "description": "",
      "status": "ACTIVE",
      "created_by": 12,
      "full_name": "John Doe",
      "created_at": "2026-01-02T11:37:07Z",
      "template_documents": [
        {
          "template_document_id": "b9a40838-f06e-44ce-975d-3ff070951654",
          "document_name": "NDA.pdf",
          "document_type": "pdf",
          "entry_id": "0b2d8c41-c5e7-42a6-990c-485ec961a0d6",
          "location": "/Shared/Documents"
        }
      ]
    }
  ]
}

Get Template Details

Retrieve detailed information about a specific template, including participants and document configuration.

Request

GET /pubapi/v1/egnyte-sign/templates/{template_id}

Path Parameters

ParameterTypeRequiredDescription
template_idstringYesUnique identifier for the template (UUID)

Example Request

curl -i -X GET "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/templates/{templateId}" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response

200 OK

FieldTypeDescription
template_idstringUnique identifier for the template (UUID)
namestringTemplate name
descriptionstringTemplate description
statusstringTemplate status (ACTIVE or INACTIVE)
target_locationstringFile path where signed documents will be saved
is_ordered_signingbooleanWhether signers must sign in a specific order
email_messagestringDefault email message sent with signature requests
expiration_daysintegerNumber of days until signature request expires
signer_allowed_to_reassignbooleanWhether signers can reassign the request to another person
reminder_detailsobjectReminder configuration (null if not set)
template_participantsarrayArray of participant configurations
template_participants[].template_participant_idstringUnique identifier for the participant (UUID)
template_participants[].participant_typestringType of participant (e.g., SIGNER)
template_participants[].orderintegerSigning order (0 if not ordered)
template_participants[].emailstringEmail address (null for role-based participants)
template_participants[].typestringParticipant type: INTERNAL, EXTERNAL, or ROLE
template_participants[].role_namestringRole name (null for non-role participants)
template_participants[].first_namestringFirst name (null for role-based participants)
template_participants[].last_namestringLast name (null for role-based participants)
template_documentsarrayArray of documents in the template
template_documents[].template_document_idstringUnique identifier for the document (UUID)
template_documents[].document_namestringName of the document file
template_documents[].entry_idstringEgnyte file system entry ID (UUID)
template_documents[].document_orderintegerDisplay order of the document

Example Response

{
  "template_id": "54680c8d-094b-473e-b47d-c8e35c84dd16",
  "name": "NDA",
  "description": "",
  "status": "ACTIVE",
  "target_location": "/Shared/Documents",
  "is_ordered_signing": false,
  "email_message": "",
  "expiration_days": 30,
  "signer_allowed_to_reassign": false,
  "reminder_details": null,
  "template_participants": [
    {
      "template_participant_id": "308582db-2018-47e7-8015-4821a9cfe98d",
      "participant_type": "SIGNER",
      "order": 0,
      "email": "markjohnson@egnyte.com",
      "type": "INTERNAL",
      "role_name": null,
      "first_name": "Mark",
      "last_name": "Johnson"
    },
    {
      "template_participant_id": "6b1b33e6-e2df-47b9-964a-270211fc3999",
      "participant_type": "SIGNER",
      "order": 0,
      "email": null,
      "type": "ROLE",
      "role_name": "Manager",
      "first_name": null,
      "last_name": null
    }
  ],
  "template_documents": [
    {
      "template_document_id": "b9a40838-f06e-44ce-975d-3ff070951654",
      "document_name": "NDA.pdf",
      "entry_id": "0b2d8c41-c5e7-42a6-990c-485ec961a0d6",
      "document_order": 1
    }
  ]
}

Create Signature Request

Create a signature request from an existing template. If the template includes role-based participants, you must provide recipient mappings.

Request

POST /pubapi/v1/egnyte-sign/signature-requests

Request Body

FieldTypeRequiredDescription
template_idstringYesTemplate UUID to use for the signature request
signature_request_namestringYesName for the signature request (max 255 characters)
email_messagestringNoCustom email message. Defaults to template message if empty
recipientsarrayConditionalArray of recipient mappings. Required if template has role-based participants
recipients[].template_participant_idstringConditionalTemplate participant UUID. Required if template has role-based participants
recipients[].emailstringConditionalEmail address for the recipient. Required if template has role-based participants

Example Request

curl -i -X POST "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/signature-requests" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
  "template_id": "016d7399-b16e-4b6b-9ed9-fa2bb6114997",
  "signature_request_name": "NDA of 2026A",
  "email_message": "Hi, Please sign this document",
  "recipients": [
    {
      "template_participant_id": "357abea8-6c1e-488f-b3e7-5f90b0cad255",
      "email": "john.doe@externalmail.com"
    },
    {
      "template_participant_id": "1e00be2a-894e-42a7-91f5-babf92e6f59f",
      "email": "markjohnson@egnyte.com"
    }
  ]
}'

Response

200 OK

FieldTypeDescription
resultsarrayArray containing the created agreement
results[].agreement_idstringUnique identifier for the signature request (UUID)
results[].agreement_namestringName of the signature request
results[].target_locationstringFile path where signed documents will be saved
results[].statusstringCurrent status of the agreement (e.g., INPROGRESS)
results[].participantsarrayArray of participants in the signature request
results[].participants[].participant_idstringUnique identifier for the participant (UUID)
results[].participants[].link_idstringUnique signing link identifier
results[].participants[].rolestringParticipant role (e.g., SIGNER)
results[].participants[].statusstringParticipant status (e.g., INPROGRESS)
results[].participants[].orderintegerSigning order
results[].participants[].color_codestringColor code for UI display
results[].participants[].expires_atstringISO 8601 timestamp when the request expires
results[].participants[].created_atstringISO 8601 timestamp when the participant was added
results[].participants[].updated_atstringISO 8601 timestamp of last update
results[].participants[].is_internalbooleanWhether the participant is an internal user
results[].documentsarrayArray of documents in the signature request
results[].documents[].document_idstringUnique identifier for the document (UUID)
results[].documents[].entry_idstringEgnyte file system entry ID (UUID)
results[].documents[].document_orderintegerDisplay order of the document

Example Response

{
  "results": [
    {
      "agreement_id": "72b28e69-52ef-42a8-88cc-c032fdf34884",
      "agreement_name": "NDA of 2026",
      "target_location": "/Shared/Documents",
      "status": "INPROGRESS",
      "participants": [
        {
          "participant_id": "10f8aff8-bb78-4b68-af9c-d3780ace6e51",
          "link_id": "SOJSgDpx4Ugo",
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "color_code": "color2",
          "expires_at": "2026-02-28T07:19:36Z",
          "created_at": "2026-01-29T07:19:36Z",
          "updated_at": "2026-01-29T07:19:36Z",
          "is_internal": false
        },
        {
          "participant_id": "b225d827-e209-4057-9bfe-aa7bcdc32cb1",
          "link_id": "Yc5gQrf61Ab0",
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "color_code": "color1",
          "expires_at": "2026-02-28T07:19:36Z",
          "created_at": "2026-01-29T07:19:36Z",
          "updated_at": "2026-01-29T07:19:36Z",
          "is_internal": false
        },
        {
          "participant_id": "ca24a451-3d47-4a5b-95ef-535b5f34d8a5",
          "link_id": "iKScnHiEPHrR",
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "color_code": "color3",
          "expires_at": "2026-02-28T07:19:36Z",
          "created_at": "2026-01-29T07:19:36Z",
          "updated_at": "2026-01-29T07:19:36Z",
          "is_internal": false
        }
      ],
      "documents": [
        {
          "document_id": "0f72d6ea-c044-4426-b1ce-bcc8815a5ef4",
          "entry_id": "0b2d8c41-c5e7-42a6-990c-485ec961a0d6",
          "document_order": 1
        }
      ]
    }
  ]
}

List Sent Signature Requests

Retrieve all signature requests sent by the authenticated user. Use this endpoint to track outstanding agreements.

Request

GET /pubapi/v1/egnyte-sign/signature-requests/sent-requests

Query Parameters

ParameterTypeRequiredDefaultDescription
statusstringNoFilter by request status. Valid values: INPROGRESS, DECLINED, COMPLETED, CANCELLED, EXPIRED, FAILED
sort_bystringNodueDateField to sort by. Valid values: name, dueDate, createdAt
sort_directionstringNoSort direction. Valid values: ASC, DESC
limitintegerNo50Number of requests to return (1-50)
offsetintegerNo0Number of requests to skip (≥ 0)

Example Request

curl -i -X GET "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/signature-requests/sent-requests?status=INPROGRESS&sort_by=dueDate" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response

200 OK

FieldTypeDescription
countintegerTotal number of signature requests returned
resultsarrayArray of signature request objects
results[].agreement_idstringUnique identifier for the signature request (UUID)
results[].signature_request_namestringName of the signature request
results[].statusstringCurrent status of the request
results[].documentsarrayArray of documents in the request
results[].documents[].document_idstringUnique identifier for the document (UUID)
results[].participantsarrayArray of participants
results[].participants[].participant_idstringUnique identifier for the participant (UUID)
results[].participants[].emailstringParticipant email address
results[].participants[].namestringParticipant full name
results[].participants[].rolestringParticipant role (e.g., SIGNER)
results[].participants[].statusstringParticipant status
results[].participants[].orderintegerSigning order
results[].participants[].signed_atstringISO 8601 timestamp when signed (null if not signed)
results[].participants[].is_in_queuebooleanWhether the participant is waiting for their turn
results[].created_atstringISO 8601 timestamp when the request was created
results[].due_datestringISO 8601 timestamp when the request expires
results[].template_idstringTemplate UUID used to create the request
results[].template_namestringName of the template

Example Response

{
  "count": 1,
  "results": [
    {
      "agreement_id": "b468c25d-7589-4ed2-aeb8-7d6711b51aa1",
      "signature_request_name": "NDA of 2026",
      "status": "INPROGRESS",
      "documents": [
        {
          "document_id": "4f9985e6-146e-4e83-af8a-c23e684e0a5c"
        }
      ],
      "participants": [
        {
          "participant_id": "10f8aff8-bb78-4b68-af9c-d3780ace6e51",
          "email": "john.doe@egnyte.com",
          "name": "John Doe",
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "signed_at": null,
          "is_in_queue": false
        },
        {
          "participant_id": "b225d827-e209-4057-9bfe-aa7bcdc32cb1",
          "email": "markjohnson@egnyte.com",
          "name": "Mark Johnson",
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "signed_at": null,
          "is_in_queue": false
        },
        {
          "participant_id": "ca24a451-3d47-4a5b-95ef-535b5f34d8a5",
          "email": "markjohnson@egnyte.com",
          "name": null,
          "role": "SIGNER",
          "status": "INPROGRESS",
          "order": 0,
          "signed_at": null,
          "is_in_queue": false
        }
      ],
      "created_at": "2026-01-29T08:06:57Z",
      "due_date": "2026-02-28T08:06:57Z",
      "template_id": "016d7399-b16e-4b6b-9ed9-fa2bb6114997",
      "template_name": "NDA"
    }
  ]
}

Cancel Signature Request

Cancel an in-progress signature request. This action cannot be undone.

Request

POST /pubapi/v1/egnyte-sign/signature-requests/{agreement_id}/cancel

Path Parameters

ParameterTypeRequiredDescription
agreement_idstringYesUnique identifier for the signature request to cancel (UUID)

Request Body

FieldTypeRequiredDescription
messagestringNoReason for cancellation (max 500 characters)

Example Request

curl -i -X POST "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/signature-requests/{workflowId}/cancel" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
  "message": "Document no longer required"
}'

Response

200 OK

The request was successfully cancelled. No response body is returned.


List Assigned Signature Requests

Retrieve all signature requests assigned to the authenticated user. Use this endpoint to track documents awaiting your signature.

Request

GET /pubapi/v1/egnyte-sign/signature-requests/my-requests

Query Parameters

ParameterTypeRequiredDefaultDescription
statusstringNoFilter by request status. Valid values: INPROGRESS, DECLINED, COMPLETED, CANCELLED
sort_bystringNodueDateField to sort by. Valid values: name, dueDate, createdAt
sort_directionstringNoSort direction. Valid values: ASC, DESC
limitintegerNo50Number of requests to return (1-50)
offsetintegerNo0Number of requests to skip (≥ 0)

Example Request

curl -i -X GET "https://{domain}.egnyte.com/pubapi/v1/egnyte-sign/signature-requests/my-requests?status=INPROGRESS&sort_by=dueDate" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response

200 OK

FieldTypeDescription
countintegerTotal number of signature requests returned
resultsarrayArray of signature request objects
results[].agreement_idstringUnique identifier for the signature request (UUID)
results[].signature_request_namestringName of the signature request
results[].sent_by_namestringFull name of the user who sent the request
results[].sent_by_emailstringEmail address of the user who sent the request
results[].created_byintegerUser ID of the request creator
results[].expires_atstringISO 8601 timestamp when the request expires
results[].created_atstringISO 8601 timestamp when the request was created
results[].link_urlstringURL to access the signing interface
results[].signing_log_generation_statusstringStatus of signing log generation
results[].document_infoarrayArray of documents in the request
results[].document_info[].document_idstringUnique identifier for the document (UUID)
results[].agreement_participant_statusstringYour status as a participant
results[].statusstringOverall status of the signature request

Example Response

{
  "count": 1,
  "results": [
    {
      "agreement_id": "b468c25d-7589-4ed2-aeb8-7d6711b51aa1",
      "signature_request_name": "NDA of 2026A",
      "sent_by_name": "Mark Johnson",
      "sent_by_email": "markjohnson@egnyte.com",
      "created_by": 5,
      "expires_at": "2026-02-28T08:06:57Z",
      "created_at": "2026-01-29T08:06:57Z",
      "link_url": "https://esigdemo.qa-egnyte.com/es/0A8uZDgx7hqW?source=requestsTab",
      "signing_log_generation_status": "UNKNOWN",
      "document_info": [
        {
          "document_id": "4f9985e6-146e-4e83-af8a-c23e684e0a5c"
        }
      ],
      "agreement_participant_status": "INPROGRESS",
      "status": "INPROGRESS"
    }
  ]
}

Error Codes

StatusErrorDescriptionResolution
400Bad RequestInvalid request parameters or missing required fieldsVerify all required fields are present and properly formatted
401UnauthorizedInvalid or expired OAuth tokenRefresh your OAuth token
403ForbiddenInsufficient permissions to access templates or signature requestsEnsure the user has appropriate Egnyte Sign permissions
404Not FoundTemplate or signature request does not existVerify the template ID or agreement ID is correct
429Rate LimitedToo many requestsImplement exponential backoff; check Retry-After header

Reference →Browse all endpoints