External API
Developer Documentation
Overview
The Signiphi External API allows you to programmatically integrate document signing into your applications, desktop software, and third-party services. Upload PDFs, manage signers, and retrieve signed documents through simple REST endpoints.
Table of Contents
Authentication
All API requests require authentication using an API key. Include your key in the Authorization header.⚠️ Keep your API keys secure - never expose them in client-side code.
Authorization: Bearer YOUR_API_KEYAPI Endpoints
Base URL: https://api.signiphi.ai/api/v1
/external/esign/documentsCreate and optionally send document for signing. Upload a PDF via multipart/form-data, or reference a templateId to create from an existing template.
/external/esign/documents/templatesList your active templates. Use the returned template IDs to create documents from templates.
Query Parameters:
- •
page- Page number (default: 1) - •
pageSize- Items per page (default: 20, max: 100)
/external/esign/documents/:id/statusGet document status, signer progress, and timestamps.
/external/esign/documents/:id/pdfGet presigned URL for downloading original or signed PDF. The returned URL expires in 1 hour, but you can request a new URL anytime.
Query Parameters:
- •
type=original- Download original uploaded PDF - •
type=signed- Download signed PDF (only available after completion)
API Key Scopes
When creating an API key, select the appropriate scopes. Note that some scopes include others:
documents:sendSend documents for signing
(includes documents:write)
documents:writeCreate and upload documents (cannot send)
documents:readView document status and download PDFs (read-only)
Tip: If you select documents:send, you automatically get documents:write permissions (you can't send without creating). Empty or undefined scopes grant full access.
Code Examples
Create Document (Stage for Review)
Upload PDF with signers, stage for review before sending
curl -X POST https://api.signiphi.ai/api/v1/external/esign/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "title=Contract Agreement" \
-F "send=false" \
-F 'signers=[{"email":"john@example.com","name":"John Doe"}]'Create and Send Document
Upload PDF and send immediately to signers
curl -X POST https://api.signiphi.ai/api/v1/external/esign/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "title=Contract Agreement" \
-F "send=true" \
-F 'signers=[{"email":"john@example.com","name":"John Doe"},{"email":"jane@example.com","name":"Jane Smith"}]' \
-F "message=Please review and sign"List Available Templates
Discover your active templates and their IDs
curl -X GET "https://api.signiphi.ai/api/v1/external/esign/documents/templates" \
-H "Authorization: Bearer YOUR_API_KEY"Create Document from Template
Create a document using a template instead of uploading a file. Template fields are automatically applied and assigned to the first signer.
curl -X POST https://api.signiphi.ai/api/v1/external/esign/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "templateId=TEMPLATE_ID" \
-F "send=false" \
-F 'signers=[{"email":"john@example.com","name":"John Doe"}]'Get Document Status
Check document status and signer progress
curl -X GET https://api.signiphi.ai/api/v1/external/esign/documents/DOCUMENT_ID/status \
-H "Authorization: Bearer YOUR_API_KEY"Get Original PDF URL
Get presigned URL to download original document
curl -X GET "https://api.signiphi.ai/api/v1/external/esign/documents/DOCUMENT_ID/pdf?type=original" \
-H "Authorization: Bearer YOUR_API_KEY"Get Signed PDF URL
Get presigned URL to download signed document (after completion)
curl -X GET "https://api.signiphi.ai/api/v1/external/esign/documents/DOCUMENT_ID/pdf?type=signed" \
-H "Authorization: Bearer YOUR_API_KEY"Important Notes
- •Only PDF files are supported (max size: 100MB)
- •Documents uploaded via file have
isPrepared=false. Documents created from templates with fields and signers haveisPrepared=true. - •You can create documents by uploading a PDF file or by passing a
templateId(mutually exclusive). When using a template, the title defaults to the template name if omitted. - •When creating from a template, all template form fields are automatically applied and assigned to the first signer
- •Only active templates you own can be used via the API. Use
GET /external/esign/documents/templatesto list available templates. - •Documents can be sent without preparation (click-to-sign workflow), but signers won't be able to sign without placed fields
- •Setting
send=truerequires at least one signer in the signers array - •Each presigned download URL expires after 1 hour, but you can request new URLs anytime
- •The
titlefield is required when uploading a file, optional when using a template (max 255 characters) - •The
messagefield is optional (max 1000 characters) - •The
documentTypefield is optional and defaults to "document" - •Signers array format (JSON string):
[{"email":"user@example.com","name":"User Name"}] - •Empty or undefined scopes on an API key grant full access to all endpoints
Need Help?
Check out our other documentation resources: