A workspace owner on Pro, Team or Enterprise issues a token in Settings, Integrations. The full reference lives on the API docs page, and a machine-readable OpenAPI 3.1 description at /api/v1/openapi.json, which is enough for most generators to build you a typed client. We don’t publish a hand-written SDK.
Core endpoints
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/envelopes | Create an envelope from uploaded PDFs, with fields |
POST | /api/v1/envelopes/{id}/send | Send a draft envelope for signature |
GET | /api/v1/envelopes | List envelopes, filtered and paged |
GET | /api/v1/envelopes/{id} | Read envelope state and recipient progress |
POST | /api/v1/envelopes/from-refs | Create an envelope from document references |
POST | /api/v1/envelopes/{id}/remind | Send a reminder to pending signers |
POST | /api/v1/envelopes/{id}/void | Void an envelope |
GET | /api/v1/envelopes/{id}/final | Download the completed (flattened) PDF |
GET | /api/v1/envelopes/{id}/certificate | Download the audit certificate |
GET | /api/v1/envelopes/{id}/recipients | List the recipients and their progress |
PATCH | /api/v1/envelopes/{id}/recipients/{rid} | Correct a recipient, including after send |
POST | /api/v1/envelopes/{id}/recipients/{rid}/remind | Remind one named recipient |
GET | /api/v1/templates | List the workspace templates |
POST | /api/v1/templates/{id}/envelopes | Create (and optionally send) from a template |
GET | /api/v1/openapi.json | OpenAPI 3.1 description of everything above |
Authenticated request
curl https://vg-sign.com/api/v1/envelopes/{id} \
-H "Authorization: Bearer vgs_live_…"Webhook signature
// Each delivery carries an HMAC-SHA256 digest of the raw body X-VG-Signature: sha256=4c2a9bd3…71ff X-VG-Delivery-Id: 8f4a2c1e-9b3d-4f02-a71c-2d5e6b8c0a19 // Verify it with your subscription secret before trusting the payload. // A delivery is tried up to 3 times (retries after about 1 and 5 minutes), then marked failed. // The delivery id is stable across retries. Use it to deduplicate.
MCP server
Claude, Claude Code and Cursor can list envelopes, create one from a template, send it and download the signed PDF. It is a stdio server over the same REST API and the same workspace token; nothing extra is granted to it. There are no per-scope tokens, so the assistant can do anything the token can. Consider a dedicated workspace for it. Rotating the token replaces it immediately and breaks every other integration still using the old one, so rotate it whenever it may have been exposed.
curl -fsSLO https://vg-sign.com/mcp/server.mjs curl -fsSL https://vg-sign.com/mcp/server.mjs.sha256 | sha256sum -c -
{
"mcpServers": {
"vg-sign": {
"command": "node",
"args": ["/path/to/server.mjs"],
"env": {
"VG_SIGN_API_TOKEN": "vgs_live_…",
"VG_SIGN_DOWNLOAD_DIR": "/path/to/a/downloads/folder"
}
}
}
}send_envelope, remind_envelope, void_envelope and create_envelope_from_template with send: true all act on real envelopes and email real people. Voiding is what undoes a send; a void itself cannot be undone by another call.
Embedded signing
Put the signer page inside your own product. Your origin has to be allow-listed first, ask us to add it, and the frame reports progress back to the parent window.
<script src="https://vg-sign.com/embed.js"></script>
<div id="vg-sign" data-token="RECIPIENT_TOKEN"></div>
VGSign.mount({ onSigned: e => …, onDeclined: e => … })
// Under the hood the frame posts { source: 'vg-sign', type, token } to
// the parent window when the signer reaches a terminal state.