eSignature API for developers
A REST API for document signing, with webhooks for eSignature status updates, embedded signing, and white label branding. Included on the $15 Business plan rather than sold as a tier above it.
Drop your document here and sign it now. PDF, Word and Excel all work: a .docx or .xlsx is laid out in your browser exactly as it was written, so there is nothing to convert first. Add a signature, a date, a company stamp or a watermark, then download it sealed. Free to start, no account, and the file is never uploaded to open it.
Start in your own stack
A working example per ecosystem, with the mistake each one makes first: the timeout that defaults to infinity, the client that exhausts sockets, the environment variable that is compiled into the browser bundle.
- Sign a PDF with JavaScript, Send a document for signature from Node with fetch, no SDK and no dependencies.
- Sign a PDF with Python, Send a document for signature from Python with requests, and verify the webhook when it comes back.
- Sign a PDF with PHP, Send a document for signature from PHP with cURL or Guzzle, including the Laravel version.
- Sign a PDF with Ruby, Send a document for signature from Ruby or Rails, with the webhook handled by a background job.
- Sign a PDF with Java, Send a document for signature from Java with the built-in HttpClient, no external dependency.
- Sign a PDF with C# and .NET, Send a document for signature from C# using HttpClient the way .NET actually wants you to.
- Sign a PDF with Go, Send a document for signature from Go with net/http and a context deadline.
- Sign a PDF with React, Embed signing in a React app, with the API key where it belongs: on your server.
- Sign a PDF with Next.js, Create the signing session in a Next.js route handler and render it in a client component.
- Sign a PDF with Vue, Embed signing in a Vue or Nuxt app, with the document created server-side.
- Sign a PDF with Angular, Embed signing in Angular, sanitising the URL and keeping the key on your backend.
- Sign a PDF with Flutter, Open a signing session from a Flutter app, in a web view or the system browser.
What the API does
- Create a document, place signature, date, initial, text and checkbox fields, and get a signing URL per signer
- Send and chase on your behalf, or take the URLs and deliver them yourself
- Apply company stamps and watermarks with serial numbers in the same call
- Receive webhooks on completion, decline, expiry and first view
- Pull the sealed PDF, the audit certificate and the SHA-256 fingerprint
- Check any document, yours or anybody's, against the public verification endpoint
Word and Excel, not just PDF
A .docx or .xlsx posted to the API is laid out from its own instructions rather than converted, so the signed result matches the document your customer wrote. It can come back as a PDF or as the original format, which matters when the file has to stay editable in form for whoever receives it next.
Questions developers ask before they commit
Which eSignature API should a developer pick?
Teams shopping for an API electronic signature integration for developers weigh the same three things: whether the API is included in the plan you would buy anyway or priced as a tier above it, whether embedded signing is genuinely embeddable or an iframe with a wrapper around it, and whether the webhook payload contains enough to file the document without a second call. Ours is included on the $15 Business plan, embeds with a script rather than a redirect, and posts the signer record and the file fingerprint with the completion event.
How does REST API document signing work here?
One POST creates the document, places the fields and returns a signing URL per signer. You either email that URL yourself or let us send and chase it. The API key stays on your server: what reaches the browser is a signing URL, which is scoped to one signer on one document and expires.
What is in the webhook for eSignature status updates?
The document id, the event (completed, declined, expired, viewed), the time, the signer record with the address and the checks each signer passed, and the SHA-256 fingerprint of the sealed file. Verify the signature header against the raw request body before you trust it, and answer 2xx quickly: slow webhook handlers get retried, and a retry storm is self-inflicted.
Is there a document signing SDK?
There is a documented REST API and a small embed script, and deliberately no fat SDK per language. An SDK is a dependency you have to upgrade, and for an API this size it buys you very little over the HTTP client already in your standard library. What we publish instead is a worked example per ecosystem, with the mistake each one makes first.
Can I embed an electronic signature in React or Next.js?
Yes. The signing view mounts into an element on your page, so the signer never leaves your product and never sees our branding on a paid plan. The half that has to run on your server is the document creation, because that is where the API key lives, and in Next.js that means a route handler rather than a client component. Putting the key in a NEXT_PUBLIC_ variable ships it to every visitor, which is the single most common way this goes wrong.
Do you offer a white label eSignature API?
On the Business plan the signing page carries your logo, your colours and your sending domain, and the emails come from your address once the domain is verified. What stays is the verification page a recipient can open, because a verification page that hides who operates it is not doing its job.
Do you have a self-hosted or open source option?
No. PDF Verified is a hosted service and there is no self-hosted build, so if self hosted digital signature software is a hard requirement, say for data residency you cannot negotiate, we are the wrong answer and it is quicker to say so. DocuSeal is AGPL, self-hosts on Docker and Postgres, and is the serious open source eSignature platform in this space. Read our <a href="/compare/docuseal">comparison with DocuSeal</a>, which says the same thing at more length.
What does the API cost?
It is included on the Business plan at $15 a month, with no per-call charge and no separate API tier. That is worth comparing directly, because several platforms a developer shortlists price the API as an upgrade from the plan a small team would otherwise be on, which is where the real cost difference shows up.
Is there a sandbox?
Yes, with test keys that produce fully signed documents and real webhooks without a charge. The sealed files from the sandbox verify like any other, marked as test, so you can exercise the verification path end to end before going live.