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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | string | No | — | Filter templates by status. Valid values: ACTIVE, INACTIVE |
sort_by | string | No | created_at | Field to sort results by. Valid values: name, created_at |
sort_direction | string | No | DESC | Sort 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
| Field | Type | Description |
|---|---|---|
count | integer | Total number of templates returned |
results | array | Array of template objects |
results[].template_id | string | Unique identifier for the template (UUID) |
results[].name | string | Template name |
results[].description | string | Template description |
results[].status | string | Template status (ACTIVE or INACTIVE) |
results[].created_by | integer | User ID of the template creator |
results[].full_name | string | Full name of the template creator |
results[].created_at | string | ISO 8601 timestamp of template creation |
results[].template_documents | array | Array of documents associated with the template |
results[].template_documents[].template_document_id | string | Unique identifier for the document (UUID) |
results[].template_documents[].document_name | string | Name of the document file |
results[].template_documents[].document_type | string | Document file type (e.g., pdf) |
results[].template_documents[].entry_id | string | Egnyte file system entry ID (UUID) |
results[].template_documents[].location | string | File 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
| Parameter | Type | Required | Description |
|---|---|---|---|
template_id | string | Yes | Unique 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
| Field | Type | Description |
|---|---|---|
template_id | string | Unique identifier for the template (UUID) |
name | string | Template name |
description | string | Template description |
status | string | Template status (ACTIVE or INACTIVE) |
target_location | string | File path where signed documents will be saved |
is_ordered_signing | boolean | Whether signers must sign in a specific order |
email_message | string | Default email message sent with signature requests |
expiration_days | integer | Number of days until signature request expires |
signer_allowed_to_reassign | boolean | Whether signers can reassign the request to another person |
reminder_details | object | Reminder configuration (null if not set) |
template_participants | array | Array of participant configurations |
template_participants[].template_participant_id | string | Unique identifier for the participant (UUID) |
template_participants[].participant_type | string | Type of participant (e.g., SIGNER) |
template_participants[].order | integer | Signing order (0 if not ordered) |
template_participants[].email | string | Email address (null for role-based participants) |
template_participants[].type | string | Participant type: INTERNAL, EXTERNAL, or ROLE |
template_participants[].role_name | string | Role name (null for non-role participants) |
template_participants[].first_name | string | First name (null for role-based participants) |
template_participants[].last_name | string | Last name (null for role-based participants) |
template_documents | array | Array of documents in the template |
template_documents[].template_document_id | string | Unique identifier for the document (UUID) |
template_documents[].document_name | string | Name of the document file |
template_documents[].entry_id | string | Egnyte file system entry ID (UUID) |
template_documents[].document_order | integer | Display 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
| Field | Type | Required | Description |
|---|---|---|---|
template_id | string | Yes | Template UUID to use for the signature request |
signature_request_name | string | Yes | Name for the signature request (max 255 characters) |
email_message | string | No | Custom email message. Defaults to template message if empty |
recipients | array | Conditional | Array of recipient mappings. Required if template has role-based participants |
recipients[].template_participant_id | string | Conditional | Template participant UUID. Required if template has role-based participants |
recipients[].email | string | Conditional | Email 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
| Field | Type | Description |
|---|---|---|
results | array | Array containing the created agreement |
results[].agreement_id | string | Unique identifier for the signature request (UUID) |
results[].agreement_name | string | Name of the signature request |
results[].target_location | string | File path where signed documents will be saved |
results[].status | string | Current status of the agreement (e.g., INPROGRESS) |
results[].participants | array | Array of participants in the signature request |
results[].participants[].participant_id | string | Unique identifier for the participant (UUID) |
results[].participants[].link_id | string | Unique signing link identifier |
results[].participants[].role | string | Participant role (e.g., SIGNER) |
results[].participants[].status | string | Participant status (e.g., INPROGRESS) |
results[].participants[].order | integer | Signing order |
results[].participants[].color_code | string | Color code for UI display |
results[].participants[].expires_at | string | ISO 8601 timestamp when the request expires |
results[].participants[].created_at | string | ISO 8601 timestamp when the participant was added |
results[].participants[].updated_at | string | ISO 8601 timestamp of last update |
results[].participants[].is_internal | boolean | Whether the participant is an internal user |
results[].documents | array | Array of documents in the signature request |
results[].documents[].document_id | string | Unique identifier for the document (UUID) |
results[].documents[].entry_id | string | Egnyte file system entry ID (UUID) |
results[].documents[].document_order | integer | Display 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
| Field | Type | Required | Description |
|---|---|---|---|
signature_request_name | string | No | Name for the signature request (max 255 characters). Defaults to the filename of the first document if not provided |
is_ordered_signing | boolean | No | true to require signers to sign sequentially; false for parallel signing. Default: false |
email_message | string | No | Custom email message sent to all recipients with the signing invitation |
expiration_days | integer | No | Number of days before the request expires (1–1095). Default: 30 |
target_location | string | No | Egnyte folder path where the signed document will be saved. Defaults to the document's original location |
reminder_details | object | No | Reminder schedule configuration. If omitted, no reminders are sent |
reminder_details.remind_after_days | integer | Conditional | Days after sending before the first reminder is sent. Required when reminder_details is provided. Minimum: 1 |
reminder_details.reminder_frequency_in_days | integer | Conditional | Interval in days between subsequent reminders. Required when reminder_details is provided. Minimum: 1 |
is_forwarding_allowed | boolean | No | Whether recipients are allowed to forward the request. Default: false |
documents | array | Yes | Documents to include in the request. Must contain inline tags. Document order follows position in this array |
documents[].location | string | Conditional | Absolute Egnyte file path of the document (must start with /). At least one of location or entry_id must be provided |
documents[].entry_id | string | Conditional | Egnyte file entry UUID. At least one of location or entry_id must be provided. Both may be supplied |
recipients | array | Yes | List of recipients. At least one SIGNER is required. Array position determines inline tag numbering for signers |
recipients[].email | string | Yes | Recipient email address |
recipients[].recipient_type | string | Yes | Recipient 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
| Field | Type | Description |
|---|---|---|
agreement_id | string | Unique identifier for the signature request (UUID) |
agreement_name | string | Name of the signature request |
target_location | string | Folder path where the signed document will be saved |
status | string | Current status of the agreement (e.g., INPROGRESS) |
participants | array | Array of participants in the signature request |
participants[].participant_id | string | Unique identifier for the participant (UUID) |
participants[].email | string | Participant email address |
participants[].link_id | string | Unique signing link identifier |
participants[].role | string | Participant role (SIGNER or CC) |
participants[].status | string | Participant status (e.g., INPROGRESS) |
participants[].order | integer | Signing order |
participants[].color_code | string | Color code for UI display |
participants[].expires_at | string | ISO 8601 timestamp when the request expires |
participants[].created_at | string | ISO 8601 timestamp when the participant was added |
participants[].updated_at | string | ISO 8601 timestamp of last update |
participants[].is_internal | boolean | Whether the participant is an internal Egnyte user |
documents | array | Array of documents in the signature request |
documents[].document_id | string | Unique identifier for the document (UUID) |
documents[].document_name | string | Resolved filename of the document |
documents[].entry_id | string | Egnyte file system entry ID (UUID) |
documents[].document_order | integer | Display order of the document (1-based) |
documents[].tags_detected | integer | Number 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | string | No | — | Filter by request status. Valid values: INPROGRESS, DECLINED, COMPLETED, CANCELLED, EXPIRED, FAILED |
sort_by | string | No | dueDate | Field to sort by. Valid values: name, dueDate, createdAt |
sort_direction | string | No | — | Sort direction. Valid values: ASC, DESC |
limit | integer | No | 50 | Number of requests to return (1-50) |
offset | integer | No | 0 | Number 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
| Field | Type | Description |
|---|---|---|
count | integer | Total number of signature requests returned |
results | array | Array of signature request objects |
results[].agreement_id | string | Unique identifier for the signature request (UUID) |
results[].signature_request_name | string | Name of the signature request |
results[].status | string | Current status of the request |
results[].documents | array | Array of documents in the request |
results[].documents[].document_id | string | Unique identifier for the document (UUID) |
results[].participants | array | Array of participants |
results[].participants[].participant_id | string | Unique identifier for the participant (UUID) |
results[].participants[].email | string | Participant email address |
results[].participants[].name | string | Participant full name |
results[].participants[].role | string | Participant role (e.g., SIGNER) |
results[].participants[].status | string | Participant status |
results[].participants[].order | integer | Signing order |
results[].participants[].signed_at | string | ISO 8601 timestamp when signed (null if not signed) |
results[].participants[].is_in_queue | boolean | Whether the participant is waiting for their turn |
results[].created_at | string | ISO 8601 timestamp when the request was created |
results[].due_date | string | ISO 8601 timestamp when the request expires |
results[].template_id | string | Template UUID used to create the request |
results[].template_name | string | Name 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
| Parameter | Type | Required | Description |
|---|---|---|---|
agreement_id | string | Yes | Unique identifier for the signature request to cancel (UUID) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
message | string | No | Reason 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | string | No | — | Filter by request status. Valid values: INPROGRESS, DECLINED, COMPLETED, CANCELLED |
sort_by | string | No | dueDate | Field to sort by. Valid values: name, dueDate, createdAt |
sort_direction | string | No | — | Sort direction. Valid values: ASC, DESC |
limit | integer | No | 50 | Number of requests to return (1-50) |
offset | integer | No | 0 | Number 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
| Field | Type | Description |
|---|---|---|
count | integer | Total number of signature requests returned |
results | array | Array of signature request objects |
results[].agreement_id | string | Unique identifier for the signature request (UUID) |
results[].signature_request_name | string | Name of the signature request |
results[].sent_by_name | string | Full name of the user who sent the request |
results[].sent_by_email | string | Email address of the user who sent the request |
results[].created_by | integer | User ID of the request creator |
results[].expires_at | string | ISO 8601 timestamp when the request expires |
results[].created_at | string | ISO 8601 timestamp when the request was created |
results[].link_url | string | URL to access the signing interface |
results[].signing_log_generation_status | string | Status of signing log generation |
results[].document_info | array | Array of documents in the request |
results[].document_info[].document_id | string | Unique identifier for the document (UUID) |
results[].agreement_participant_status | string | Your status as a participant |
results[].status | string | Overall 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
| Status | Error | Description | Resolution |
|---|---|---|---|
| 400 | Bad 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 |
| 400 | Bad Request | Invalid request parameters or missing required fields | Verify all required fields are present and properly formatted |
| 401 | Unauthorized | Invalid or expired OAuth token | Refresh your OAuth token |
| 403 | Forbidden | Insufficient permissions to access templates or signature requests | Ensure the user has appropriate Egnyte Sign permissions |
| 404 | Not Found | Template or signature request does not exist | Verify the template ID or agreement ID is correct |
| 429 | Rate Limited | Too many requests | Implement exponential backoff; check Retry-After header |
Related Resources
- Authentication — How to obtain and refresh OAuth tokens
- File System API — Manage files and folders referenced in signature requests
- Best Practices — Rate limiting, pagination, and error handling strategies
- Autoplace Fields with Structured Inline Tags — Helpdesk article on embedding inline tags in documents
