Document eSign API documentation
Send documents for signature from your own product. REST over HTTPS, a free sandbox, webhooks, and embedded signing.
All documentation
The Document eSign API lets your product send documents for signature, track them, and collect the signed PDF without anyone leaving your app. It is plain JSON over HTTPS, so it works from any language that can make a request.
curl https://api.documentesign.com/v1/account \
-H "Authorization: Bearer $ESIGN_API_KEY"Start here
If you are evaluating, read the quickstart. It takes about ten minutes and ends with a real signed document in the sandbox. Everything else on this page is reference you can come back to.
Two ways to send
Every integration picks one of these, and most only ever need the first.
- From a template - you build the document once in the web app, then the API fills in the people and the values. Shortest path, and the one to reach for when the paperwork is the same every time.
- From your own file - upload a PDF and place the fields yourself by coordinate. Use it when the document is generated per customer.
Before you can call anything
The API is available on the Business and Ultimate plans, including during a Business trial. A workspace on Free or Growth gets 402 api_not_enabled on every endpoint. Keys are minted in the web app under Settings, Developer, API keys.
sk_test_ key creates documents that render and sign exactly like real ones, but never email anyone, never count against your plan, and carry a watermark. Going live is one environment variable. See the sandbox.Everything in this section
Mint a test key, make your first call, and send a document for signature in about ten minutes.
ReadBearer keys, the test and live split, scopes, and why a document from the wrong mode returns 404 instead of 403.
ReadWhat a test key changes: no email leaves the building, the PDF is watermarked, and nothing counts against your plan.
ReadUpload a PDF, place signature fields by coordinate, add recipients, and send. The path that depends on nothing but a key.
ReadMatch signers to named roles, prefill fields your app already knows, and send. The shortest path to a signature.
ReadLet people sign inside your own app instead of emailing them a link. Covers the exchange, browser events, and the origin allowlist.
ReadPublish one URL that anyone can open, fill and sign. Each visit becomes its own document, and the link can be embedded in your app.
ReadSeven events, exact signature verification, what the retry policy really is, and the delivery log.
ReadThe error envelope, every status code, the codes worth branching on, rate limits, and the hard limits to design around.
ReadRead the workspace, its plan, the mode your key is in, and current API usage for the billing period.
ReadCreate, list, send, cancel, remind, replace recipients and fields, download files, and mint embed links.
ReadUpload a PDF, DOCX, DOC, PNG or JPEG and get a file id to build a document from.
ReadList published templates, read their roles and fields, and send a document from one.
ReadPublish, list, rotate and delete shareable template links, and mint an embeddable URL for one.
ReadCreate and delete endpoints, list them, read the delivery log, and replay a delivery.
ReadThe machine-readable spec
The server generates an OpenAPI 3.1 document from its own route schemas, so it describes what the API actually accepts rather than what someone remembered to write down. Point a client generator at it:
https://api.documentesign.com/v1/openapi.jsonIt is the only endpoint that does not need a key. If you would rather let an agent write the integration, the Claude Code plugin teaches Claude the same contract.