The e-signature API for developers.
An API-first product with predictable REST resources — envelopes, documents, recipients, and fields — plus webhooks and a drop-in signing iframe. Every completed envelope returns a PAdES-sealed PDF and a Certificate of Completion, so you never build compliance plumbing yourself.
Quickstart
Create an API key, then send your first envelope with a single request. The base URL is https://api.vxsign.com.
# Create and send an envelope curl -X POST https://api.vxsign.com/v1/envelopes \ -H "Authorization: Bearer $VXSIGN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "document_url": "https://files.acme.com/msa.pdf", "signers": [{ "email": "[email protected]", "name": "Sam Rivera" }], "routing": "sequential" }'
Authentication
Requests are authenticated with a bearer API key. Keep keys server-side; never ship them to a browser or mobile client.
Authorization: Bearer vxs_live_xxxxxxxxxxxxxxxx
API reference
A conceptual overview of the core resources. See the full reference for parameters and response shapes.
| Method & path | Description |
|---|---|
POST /v1/envelopes | Create and send an envelope (documents, signers, routing, fields). |
GET /v1/envelopes/{id} | Retrieve an envelope’s status and signers. |
POST /v1/envelopes/{id}/recipients | Add a recipient (draft only). |
POST /v1/envelopes/{id}/fields | Place a field for a recipient (draft only). |
POST /v1/envelopes/{id}/send | Send a prepared envelope for signature. |
POST /v1/envelopes/{id}/signing-sessions | Create a short-lived embedded signing session. |
GET /v1/envelopes/{id}/certificate | Download the sealed PDF and Certificate of Completion. |
Webhooks
Signing is asynchronous — subscribe to events instead of polling. Verify the signature on each payload before trusting it.
# Events: envelope.sent, envelope.viewed, signer.completed, # envelope.completed, envelope.declined, envelope.expired { "type": "envelope.completed", "data": { "envelope_id": "env_123", "sealed_sha256": "9f2c…" } }
Embedded signing
Create a signing session over REST, then mount it anywhere in your app with embed.js. With white-label branding, signers never leave your product.
<div id="vxsign"></div> <script src="https://embed.vxsign.com/embed.js"></script> <script> VXSign.mount("#vxsign", { session: SIGNING_SESSION_TOKEN, onCompleted: () => location = "/done" }); </script>
The SDK relays onReady, onCompleted, onDeclined, and onError events. To embed on your domain, allow the frame in your frame-ancestors CSP directive.
API keys
Create, rotate, and revoke keys from the dashboard. Test and live keys are separate. Store keys as secrets in your backend environment.