Product · Document Signing

Document signing API

Collect legally binding signatures on any PDF via REST — upload the document, place fields, send signing links, and receive a PKCS#7-sealed, tamper-evident file when all parties complete. No UI to build, no infrastructure to maintain.

Start free →

Sign any document type

NDAs
Non-disclosure agreements — bilateral, mutual, or unilateral
Employment contracts
Offer letters, employment agreements, IP assignment
Service agreements
MSAs, SOWs, SLAs, and professional services contracts
Lease agreements
Residential and commercial leases, addenda, renewals
Financial documents
Loan agreements, investment docs, subscription agreements
Consent forms
Medical consent, research participation, data processing consent
Government forms
Applications, declarations, regulatory submissions
Custom PDFs
Any standard PDF up to 25MB — no pre-processing required

How the document signing API works

1

Upload any PDF

POST your document as a multipart file upload. The API accepts any standard PDF — no conversion, no template setup required for one-off documents.

2

Place fields and declare signers

Specify field coordinates (page, x, y, w, h) and assign them to specific signers. Use the drag-drop field placer UI or pass coordinates directly in the API request.

3

Send — signers receive unique links

Calling /send generates a tokenized, single-use signing link per signer and emails it. Signers verify identity with OTP and sign on a hosted page — no account required.

4

Receive a sealed, verifiable document

On completion, fields are flattened into the PDF, a PKCS#7 digital signature is applied, and an audit certificate is appended. Your webhook fires with the sealed document ready to download.

Minimal document signing API call — curl
# Step 1 + 2: Create envelope with PDF + field coordinates
ENV_ID=$(curl -s -X POST https://api.getsigned.app/v1/envelopes \
  -H "Authorization: Bearer $TOKEN" \
  -F "document=@contract.pdf;type=application/pdf" \
  -F 'signers=[{"name":"Jamie","email":"jamie@client.io"}]' \
  -F 'fields=[{"type":"signature","page":1,"x":300,"y":580,"w":200,"h":60}]' \
  | jq -r .id)

# Step 3: Send — Jamie gets a unique signing link via email
curl -X POST https://api.getsigned.app/v1/envelopes/$ENV_ID/send \
  -H "Authorization: Bearer $TOKEN"

# Step 4: When Jamie signs → webhook fires → download sealed PDF:
# GET /v1/envelopes/$ENV_ID/document

Document signing API vs. building in-house

AspectGetSigned APIBuild in-house
Time to first signed documentSame day (< 4 hours)3–6 months minimum
OTP identity verificationIncludedTwilio/SendGrid integration + build
PKCS#7 digital sealingEvery document, automaticCA cert procurement + sealing service
Hash-chained audit trailAutomatic, tamper-evidentCustom append-only log + hash chain
Webhook delivery + retryBuilt in, HMAC-signedQueue infrastructure + retry logic
Signing UI (hosted or embedded)IncludedCustom PDF renderer + field overlays
Multi-signer routingSequential, parallel, or mixedState machine + notification system
MaintenanceNone — API team handles itOngoing (PDF spec changes, cert renewal)

Frequently asked questions

What is a document signing API?

A document signing API is a web service that lets your application collect legally binding electronic signatures on documents without building the signing infrastructure yourself. You upload a document, specify who needs to sign and where their fields are, call a send endpoint — and the service handles signer notification, identity verification, signature capture, and returns a tamper-evident sealed document when all parties complete. GetSigned's document signing API is REST-based, works with any PDF, and returns a PKCS#7-sealed document with a hash-chained audit trail.

What types of documents can I sign with a document signing API?

Any standard PDF — NDAs, employment contracts, service agreements, lease agreements, loan documents, consent forms, government applications, or any custom document you generate. GetSigned accepts PDFs up to 25MB and 500 pages with no pre-processing or conversion required. For recurring document types (like an NDA you send hundreds of times), you can define a template once and instantiate it per request without re-uploading the PDF.

How do I specify where signers should sign in the document?

Two ways: (1) Pass field coordinates (page, x, y, width, height) directly in the API request — useful when you generate documents programmatically and know the exact positions. (2) Use the drag-drop field placer UI — upload the document, drag signature fields to the correct positions visually, and save the layout as a template. The field placer is particularly useful for one-off external documents where you don't know the coordinates in advance.

Are documents signed via a document signing API legally binding?

Yes. Document signing APIs like GetSigned are built for legal defensibility under Canada's PIPEDA and the US ESIGN Act / UETA. Every signer verifies identity with an OTP, provides explicit e-sign consent that is logged with IP and timestamp, and the completed document is sealed with a CA-issued PKCS#7 digital signature. Any byte-level modification after sealing invalidates the signature — detectable by any PDF reader. A hash-chained audit log provides the evidentiary record.

What happens if a signer declines or the document expires?

GetSigned fires a webhook for every lifecycle event: envelope.declined when a signer declines, envelope.expired when the signing deadline passes without completion, and envelope.voided when the sender cancels. Your application receives these events and can take appropriate action — notify the sender, create a new envelope, or log the outcome. The declined or expired envelope and its partial audit trail are retained.

How long does integration take?

Most integrations are live within 4–8 hours. The minimal integration — create envelope, send, handle completion webhook, download sealed PDF — is three REST calls and a webhook endpoint. The full integration including error handling, retry logic, and status display typically takes one to two days. GetSigned's API is standard REST with multipart uploads for documents and JSON for everything else — no proprietary SDK to learn.

Related: Signable PDF API · Contract signing API · Integration guide · Legal validity

Start signing documents today

Free tier includes 25 envelopes per month. Full API access, PKCS#7 sealing, and webhooks from day one.

Get free API keys →