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. Use multipart/form-data with PDF file.
/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"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 API always have
isPrepared=false(signature fields not placed) - •To place signature fields, users must prepare documents in the web UI at
/documents/:id/prepare - •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 (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: