Quickstart
From zero to a sealed, verifiable delivery receipt in about a minute. All you need is an API key and one HTTP call when you deliver a digital good.
Get an API key
Create a key in your CertNode dashboard. It looks like cn_live_… (use cn_test_… while you wire things up). Keep it server-side.
Record a delivery
Call this from your delivery hook — when you serve a download, grant access, or activate a license. It seals the event the moment it happens. Hash any sensitive values (recipient, URL, license key); never send raw.
curl https://certnode.io/api/v1/access \
-H "Authorization: Bearer cn_live_…" \
-H "Content-Type: application/json" \
-d '{
"eventType": "download",
"resourceId": "ebook-42",
"externalOrderId": "order-1001",
"contentHash": "<sha256 of the file, optional>",
"recipientHash": "<sha256 of the buyer email, optional>",
"source": "merchant"
}'Evidence-grade events: download, file_accessed, content_access, lesson_completed, course_completed, digital.delivery.granted, digital.delivery.accessed. A granted event is an assertion access was given; an accessed event records consumption.
Share the receipt
Fetch the buyer-facing receipt URL for the order and drop it into your order-confirmation email — the deterrent that prevents the dispute.
curl "https://certnode.io/api/v1/delivery-receipt?externalOrderId=order-1001" \
-H "Authorization: Bearer cn_live_…"
# → { "receiptUrl": "https://certnode.io/r/<token>" }That link opens a clean page showing Delivered / Accessed, sealed and timestamped, with a “verify independently” link.
Add the badge (optional)
Show buyers their delivery is recorded — on checkout, the download page, or the order email.
<a href="https://certnode.io/r" target="_blank" rel="noopener">
<img src="https://certnode.io/badge/delivery-recorded.svg"
alt="Delivery recorded by CertNode" height="40">
</a>