Skip to content
ZiaSignZiaSign
ZiaSign
  • How it works
  • Free PDF Tools
  • Documentation
  • Pricing
  • Company

    • About
    • Blog
    • Investors
    • Security

    Compare

    • vs DocuSign
    • vs Adobe Sign
    • vs PandaDoc
    • vs iLovePDF
    • vs Smallpdf
    • vs PDF24
    • vs Sejda
    Investor connectLatest blog
  • Free PDF ToolsFree
  • Browse use casesNew
  • How-to guides100+
  • How it works
  • Pricing
  • Documentation

Theme

Light mode

Sign Now
Sign Now
  1. Home
  2. Documentation
  3. Developer API
  4. Documents API
Developer API

Documents API

Create, send, retrieve, download, and manage documents programmatically via the REST API.

Last updated April 15, 2026
Quickstart GuideAccount & Organization SettingsDocument TemplatesSecurity & ComplianceHelp & Support
Sending Documents for SignatureThe Signing ExperienceAudit Trail & Legal ValidityBulk SendPDF ToolsDocument Editor & StudioDocument LibraryAnalytics & Reports
API AuthenticationDocuments APIWebhooksSandbox & TestingEmbedded SigningIntegrations
AI Contract AnalysisAI Smart Workflows
Plans & PricingBilling & InvoicesReferral Program
Mobile App Guide
Changelog & Release Notes

Base URL

https://api.ziasign.com/api/v1

All endpoints require authentication.

List Documents

GET /documents

Query parameters:

ParameterTypeDescription
statusstringFilter by status: draft, sent, completed, voided, expired
pageintegerPage number (default: 1)
pageSizeintegerResults per page (default: 20, max: 100)
searchstringSearch by document name or signer email
sortBystringSort field: createdAt, updatedAt, name
sortOrderstringasc or desc (default: desc)

Response


Create & Send Document


FieldTypeRequiredDescription
filebinaryYesThe document file (PDF, PNG, JPG, JPEG)
namestringNoDocument name (defaults to filename)
signersJSONYesArray of signer objects
fieldsJSONNoArray of field placement objects
sendbooleanNoSend immediately (default: false — creates as draft)
subjectstringNoCustom email subject
messagestringNoCustom email body message
expirationDaysintegerNoDays until expiration (default: 30)

cURL Example


JavaScript Example


Get Document

GET /documents/{id}

Returns the full document details including status, signers, fields, and audit trail.

Download Document

GET /documents/{id}/download

Returns the document PDF. For completed documents, this includes all signatures and the Certificate of Completion.

Query parameters:

ParameterTypeDescription
certificatebooleanInclude Certificate of Completion (default: true)
auditTrailbooleanInclude audit trail pages (default: true)

Void Document

POST /documents/{id}/void

Cancels a sent document. All signers are notified that the document has been voided.

Resend Notification

POST /documents/{id}/resend

Document Statuses

StatusDescription
draftCreated but not yet sent
sentSent to signers, awaiting signatures
viewedAt least one signer has opened the document
partially_signedAt least one signer has signed (multi-signer docs)
completedAll signers have signed
voidedCancelled by the sender
expiredSigning period elapsed without completion

Frequently asked questions

Can I upload a document and send it in a single API call?

Yes. The POST /documents endpoint accepts the file, signers, and fields in a single multipart request. Set the 'send' parameter to true to send immediately.

What is the maximum file size for API uploads?

25 MB per file via the API, same as the web interface. For larger files, contact support for Enterprise accommodations.

How do I check the status of a sent document?

Use GET /documents/{id} to retrieve the document details, including the current status (draft, sent, viewed, partially_signed, completed, voided, expired).

Related documentation

API Authentication

Authenticate your API requests using API keys with HMAC-SHA256 request signing for maximum security.

Webhooks

Receive real-time HTTP notifications when documents are viewed, signed, completed, or declined.

Embedded Signing

Embed the ZiaSign signing experience directly in your web application for a seamless user flow.

Previous

API Authentication

Next

Webhooks

On this page

Base URLList DocumentsResponseCreate & Send DocumentcURL ExampleJavaScript ExampleGet DocumentDownload DocumentVoid DocumentResend NotificationDocument Statuses

Product

  • How it works
  • Pricing
  • About
  • Blog
  • Security

Documentation

  • All Docs
  • Quickstart
  • API Authentication
  • Webhooks
  • Templates
  • Integrations

Free PDF Tools

  • All Tools
  • How-To Guides
  • Use-Case Guides
  • Organize PDFs
  • Convert PDFs
  • Edit PDFs
  • Security
  • Optimize
  • AI Tools

Compare

  • vs DocuSign
  • vs Adobe Sign
  • vs PandaDoc
  • vs iLovePDF
  • vs Smallpdf
  • vs PDF24
  • vs Sejda

Company

  • FAQs
  • Investors
  • Privacy Policy
  • Terms of Services
ZiaSignZiaSign
ZiaSign

AI-native e-signature and document workflows for modern teams.

© 2026 ZiaSign. All rights reserved.

json
{
  "items": [
    {
      "id": "doc_abc123",
      "name": "Service Agreement.pdf",
      "status": "sent",
      "createdAt": "2026-04-15T10:00:00Z",
      "updatedAt": "2026-04-15T10:05:00Z",
      "signers": [
        {
          "name": "Jane Doe",
          "email": "jane@example.com",
          "status": "pending",
          "order": 1
        }
      ]
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalItems": 142,
    "totalPages": 8
  }
}
text
POST /documents
Content-Type: multipart/form-data
bash
curl -X POST "https://api.ziasign.com/api/v1/documents" \
  -H "X-Api-Key: $API_KEY" \
  -H "X-Timestamp: $TIMESTAMP" \
  -H "X-Signature: $SIGNATURE" \
  -F "file=@contract.pdf" \
  -F 'signers=[{"name":"Jane Doe","email":"jane@example.com","order":1}]' \
  -F 'fields=[{"type":"signature","page":1,"x":350,"y":680,"width":200,"height":50,"signerIndex":0}]' \
  -F "send=true" \
  -F "subject=Please sign: Service Agreement" \
  -F "expirationDays=14"
typescript
const formData = new FormData();
formData.append("file", fs.createReadStream("contract.pdf"));
formData.append("signers", JSON.stringify([
  { name: "Jane Doe", email: "jane@example.com", order: 1 },
  { name: "John Smith", email: "john@example.com", order: 2 },
]));
formData.append("fields", JSON.stringify([
  { type: "signature", page: 1, x: 350, y: 680, width: 200, height: 50, signerIndex: 0 },
  { type: "signature", page: 1, x: 350, y: 750, width: 200, height: 50, signerIndex: 1 },
  { type: "date", page: 1, x: 560, y: 690, width: 100, height: 30, signerIndex: 0 },
]));
formData.append("send", "true");

// Note: For file uploads, adapt the ziasignFetch helper to skip
// JSON.stringify and the Content-Type header (FormData sets it automatically)
const doc = await ziasignFetch("POST", "/documents", formData);
console.log("Document sent:", doc.id);
json
{
  "reason": "Contract terms changed, sending updated version."
}
json
{
  "signerEmail": "jane@example.com",
  "message": "Friendly reminder to please sign the agreement."
}