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.


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_KEY

API Endpoints

Base URL: https://api.signiphi.ai/api/v1

POST/external/esign/documents

Create and optionally send document for signing. Use multipart/form-data with PDF file.

documents:writedocuments:send (if send=true)
GET/external/esign/documents/:id/status

Get document status, signer progress, and timestamps.

documents:read
GET/external/esign/documents/:id/pdf

Get 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)
documents:read

API Key Scopes

When creating an API key, select the appropriate scopes. Note that some scopes include others:

documents:send

Send documents for signing

(includes documents:write)

documents:write

Create and upload documents (cannot send)

documents:read

View 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=true requires at least one signer in the signers array
  • Each presigned download URL expires after 1 hour, but you can request new URLs anytime
  • The title field is required (max 255 characters)
  • The message field is optional (max 1000 characters)
  • The documentType field 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