Sign API

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

Signature requests can be created in two ways:

  • Template-based — Use a pre-configured Egnyte Sign template to define recipients and field placements.
  • Document-based with inline tags — Specify a document directly and embed structured inline tags in the file to define field positions. Suitable for programmatic document generation workflows where templates are not used.

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
        }
      ]
    }
  ]
}

Create Signature Request with Inline Tags

Create a signature request using a document that contains embedded structured inline tags. Egnyte Sign reads the tags from the document and places fields automatically — no template required. See Autoplace Fields with Structured Inline Tags for full tag syntax and field type reference.

Request

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

Request Body

FieldTypeRequiredDescription
signature_request_namestringNoName for the signature request (max 255 characters). Defaults to the filename of the first document if not provided
is_ordered_signingbooleanNotrue to require signers to sign sequentially; false for parallel signing. Default: false
email_messagestringNoCustom email message sent to all recipients with the signing invitation
expiration_daysintegerNoNumber of days before the request expires (1–1095). Default: 30
target_locationstringNoEgnyte folder path where the signed document will be saved. Defaults to the document's original location
reminder_detailsobjectNoReminder schedule configuration. If omitted, no reminders are sent
reminder_details.remind_after_daysintegerConditionalDays after sending before the first reminder is sent. Required when reminder_details is provided. Minimum: 1
reminder_details.reminder_frequency_in_daysintegerConditionalInterval in days between subsequent reminders. Required when reminder_details is provided. Minimum: 1
is_forwarding_allowedbooleanNoWhether recipients are allowed to forward the request. Default: false
documentsarrayYesDocuments to include in the request. Must contain inline tags. Document order follows position in this array
documents[].locationstringConditionalAbsolute Egnyte file path of the document (must start with /). At least one of location or entry_id must be provided
documents[].entry_idstringConditionalEgnyte file entry UUID. At least one of location or entry_id must be provided. Both may be supplied
recipientsarrayYesList of recipients. At least one SIGNER is required. Array position determines inline tag numbering for signers
recipients[].emailstringYesRecipient email address
recipients[].recipient_typestringYesRecipient role. Valid values: SIGNER, CC

Inline tag numbering: Tag numbers (:1, :2, …) map only to SIGNER recipients in the order they appear in the recipients array. CC recipients are skipped. For example, given [SIGNER, CC, SIGNER], :1 maps to the first recipient and :2 maps to the third.

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 '{
  "signature_request_name": "Service Agreement - Acme Corp",
  "is_ordered_signing": true,
  "email_message": "Please review and sign the attached agreement.",
  "expiration_days": 30,
  "target_location": "/Shared/Contracts/Signed",
  "reminder_details": {
    "remind_after_days": 3,
    "reminder_frequency_in_days": 2
  },
  "documents": [
    {
      "location": "/Shared/Contracts/service-agreement.pdf"
    }
  ],
  "recipients": [
    {
      "email": "client@acmecorp.com",
      "recipient_type": "SIGNER"
    },
    {
      "email": "legal@acmecorp.com",
      "recipient_type": "CC"
    },
    {
      "email": "witness@acmecorp.com",
      "recipient_type": "SIGNER"
    }
  ]
}'

Response

200 OK

FieldTypeDescription
agreement_idstringUnique identifier for the signature request (UUID)
agreement_namestringName of the signature request
target_locationstringFolder path where the signed document will be saved
statusstringCurrent status of the agreement (e.g., INPROGRESS)
participantsarrayArray of participants in the signature request
participants[].participant_idstringUnique identifier for the participant (UUID)
participants[].emailstringParticipant email address
participants[].link_idstringUnique signing link identifier
participants[].rolestringParticipant role (SIGNER or CC)
participants[].statusstringParticipant status (e.g., INPROGRESS)
participants[].orderintegerSigning order
participants[].color_codestringColor code for UI display
participants[].expires_atstringISO 8601 timestamp when the request expires
participants[].created_atstringISO 8601 timestamp when the participant was added
participants[].updated_atstringISO 8601 timestamp of last update
participants[].is_internalbooleanWhether the participant is an internal Egnyte user
documentsarrayArray of documents in the signature request
documents[].document_idstringUnique identifier for the document (UUID)
documents[].document_namestringResolved filename of the document
documents[].entry_idstringEgnyte file system entry ID (UUID)
documents[].document_orderintegerDisplay order of the document (1-based)
documents[].tags_detectedintegerNumber of valid and resolved inline tags detected in the document

Example Response

{
  "agreement_id": "72b28e69-52ef-42a8-88cc-c032fdf34884",
  "agreement_name": "Service Agreement - Acme Corp",
  "target_location": "/Shared/Contracts/Signed",
  "status": "INPROGRESS",
  "participants": [
    {
      "participant_id": "10f8aff8-bb78-4b68-af9c-d3780ace6e51",
      "email": "client@acmecorp.com",
      "link_id": "SOJSgDpx4Ugo",
      "role": "SIGNER",
      "status": "INPROGRESS",
      "order": 1,
      "color_code": "color1",
      "expires_at": "2026-08-29T07:19:36Z",
      "created_at": "2026-07-30T07:19:36Z",
      "updated_at": "2026-07-30T07:19:36Z",
      "is_internal": false
    },
    {
      "participant_id": "c341fa12-0021-4b99-bc12-3a9d1102e847",
      "email": "legal@acmecorp.com",
      "link_id": null,
      "role": "CC",
      "status": "INPROGRESS",
      "order": 0,
      "color_code": null,
      "expires_at": null,
      "created_at": "2026-07-30T07:19:36Z",
      "updated_at": "2026-07-30T07:19:36Z",
      "is_internal": false
    },
    {
      "participant_id": "b225d827-e209-4057-9bfe-aa7bcdc32cb1",
      "email": "witness@acmecorp.com",
      "link_id": "Yc5gQrf61Ab0",
      "role": "SIGNER",
      "status": "INPROGRESS",
      "order": 2,
      "color_code": "color2",
      "expires_at": "2026-08-29T07:19:36Z",
      "created_at": "2026-07-30T07:19:36Z",
      "updated_at": "2026-07-30T07:19:36Z",
      "is_internal": false
    }
  ],
  "documents": [
    {
      "document_id": "0f72d6ea-c044-4426-b1ce-bcc8815a5ef4",
      "document_name": "service-agreement.pdf",
      "entry_id": "0b2d8c41-c5e7-42a6-990c-485ec961a0d6",
      "document_order": 1,
      "tags_detected": 6
    }
  ]
}

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 Request (NO_INLINE_TAGS_DETECTED)No recognizable or resolved inline tags were found in the supplied document(s)Verify that inline tags are correctly formatted and present as plain text in the document
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