Sign anything. Prove it later.
One API call turns any event — an AI output, a document, an agent action, a transaction — into a cryptographic receipt: an ES256 signature, an independent RFC 3161 timestamp, and a Bitcoin anchor. Anyone you share it with can verify all three layers in the browser, with no account and no call back to you. It is the same primitive that powers every CertNode product.
One call
Send the thing you want to be able to prove later. Get back a receipt and a public verification URL.
curl -X POST https://certnode.io/api/v1/provenance/sign \
-H "Authorization: Bearer cn_live_..." \
-H "Content-Type: application/json" \
-d '{
"content": "The Q3 report shows revenue of $4.2M...",
"contentType": "ai_output",
"model": "claude-opus-4-8",
"provider": "anthropic"
}'{
"receipt_id": "b3f1c2d4-5e6a-7b8c-9d0e-1f2a3b4c5d6e",
"verify_url": "https://certnode.io/verify/provenance/b3f1c2d4-5e6a-7b8c-9d0e-1f2a3b4c5d6e",
"signature": "ES256 ...",
"timestamps": {
"certnode": "2026-05-23T18:04:01Z",
"rfc3161": "2026-05-23T18:04:02Z",
"bitcoin": "pending"
}
}
// full schema: certnode.io/docs/provenance/api-referencenpm install @certnode/sdk // sign + retrieve + verify
npm install @certnode/verify // verify-only, zero-dependencyWhat the receipt gives you
Three independent layers, each answering a question a hostile party asks later.
ES256 signature
Signs the content hash; verifiable against a published public key. Change one byte and it fails — tamper-evident.
RFC 3161 timestamp
An independent Time Stamp Authority countersigns the hash — the standard format cited in case law.
Bitcoin anchor
Anchored via OpenTimestamps — a non-revocable proof of pre-existence no party can later forge.
Together: a record structured to the FRE 902(13)/(14) self-authenticating standard, with a public page at certnode.io/verify/provenance/{id} and an embeddable badge.
SDKs
- @certnode/sdk — Node / TypeScript: sign, retrieve, search, trust score
- @certnode/verify — zero-dependency verify-only
- certnode (PyPI) — Python (coming soon)
- @certnode/agent-sdk — sign AI-agent actions, scoped to a human authorization
- MCP server — let an AI agent sign its own outputs
What the API does
- sign — create a receipt for any content
- retrieve / search — pull a receipt or query the registry
- verify — re-check all three layers, in-browser or via API
- export — receipts as CSV / JSON for audit
- webhooks — events like usage.cap_reached
One engine, several front doors
The same sign + verify primitive, framed for the moment you need to prove.
Sign AI outputs
Prove an AI output existed, unaltered, at a moment in time — for compliance and audit trails.
Sign agent actions
A signed receipt for every action an AI agent takes, scoped to a human authorization.
Prove you made it first
Hash, sign, and anchor a work at creation — proof of priority for a later dispute.
Pay for what you sign
100 receipts every month, free, no card. Past that it is metered, billed monthly — the more you sign, the lower the rate.
Per signing, in arrears. Free tier is 100 signings / month.
Create your first receipt in a minute.
Sign up, grab a key, sign something, and watch anyone verify it.