VeeSign API
Add e-signatures to your product: send documents for signature and receive digitally signed files with a complete audit trail.

The same platform your team uses
Every document created through the API appears in your team account, is digitally signed with the same certificate and gets the same audit trail.
REST API
Create documents, send them for signature, track their status and download signed files with plain JSON endpoints.
https://app.veesign.net/api/v2OpenAPI specification
Use the published specification to generate a typed client for TypeScript, Python or any other language.
GET /api/v2/openapi.jsonAPI tokens
Create tokens per team under Settings → API Tokens and send them in the Authorization header.
Authorization: Bearer api_…Webhooks
Get notified when a document is sent, opened, signed or completed. Every request carries your webhook secret so you can confirm it came from VeeSign.
X-VeeSign-SecretMake signing part of your product.
Embed electronic signatures and sovereign verification into your native application in minutes using our REST API and signed webhooks (HMAC-SHA256).
// Node 18+ / Deno / Bun. Create a document with one signer and send it.
import { readFile } from "node:fs/promises";
const API = "https://app.veesign.net/api/v2";
const headers = { Authorization: `Bearer ${process.env.VEESIGN_API_TOKEN}` };
const payload = {
title: "Services Agreement",
type: "DOCUMENT",
recipients: [{
name: "Sara Ahmed",
email: "[email protected]",
role: "SIGNER",
fields: [{
type: "SIGNATURE", identifier: 0, page: 1,
positionX: 10, positionY: 80, width: 30, height: 6, // % of the page
}],
}],
};
const form = new FormData();
form.append("payload", JSON.stringify(payload));
form.append("files", new Blob([await readFile("agreement.pdf")]), "agreement.pdf");
const created = await fetch(`${API}/envelope/create`, { method: "POST", headers, body: form })
.then((r) => r.json());
await fetch(`${API}/envelope/distribute`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ envelopeId: created.id }),
});
console.log("Sent for signature:", created.id);