Developers
Create envelopes from your own systems, hear back the moment they complete, and put the signing experience inside your product. API keys and webhooks live in Settings on the Business plan.
Create an API key under Settings → API, then send it as a bearer token. Keys are shown once and stored hashed — treat them like passwords.
Authorization: Bearer sk_signit_…The fastest path is a template: capture the layout once in the app, then instantiate it with real recipients. send: true emails everyone in the same call.
POST https://www.signitdigital.com/api/v1/envelopes
Content-Type: application/json
{
"template_id": "tpl_…",
"recipients": [{ "name": "Dana Okafor", "email": "dana@example.com" }],
"send": true
}You can also post a raw PDF (base64) with explicit field geometry — see the response of GET /api/v1/envelopes/:id for envelope status and signing links.
Register an endpoint under Settings → Webhooks and Sign IT will POST JSON for envelope.completed, envelope.declined and envelope.expired. Every delivery is signed so you can prove it came from us:
X-SignIT-Event: envelope.completed
X-SignIT-Signature: t=1755400000,v1=hex(HMAC-SHA256(secret, t + "." + rawBody))Verify it in a few lines of Node:
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}Until our listed Zapier app ships, the "Webhooks by Zapier" trigger does the same job: create a Zap with a Catch Hook trigger, paste the hook URL into Settings → Webhooks, and every completed envelope becomes a Zap run — push it to Google Sheets, Slack, HubSpot, QuickBooks, anywhere Zapier reaches.
Any signing link can run inside an iframe on your site — copy the embed code from an envelope's page. When the signer finishes, the frame posts a message so your page can react:
<iframe src="https://www.signitdigital.com/sign/TOKEN?embed=1"
style="width:100%;height:720px;border:0"></iframe>
<script>
window.addEventListener("message", (e) => {
if (e.data?.source === "signit" && e.data.event === "completed") {
// advance your flow
}
});
</script>Questions or a missing endpoint? Email director@kwinnovations.com.au — the API grows with real integrations.