Event delivery · pay per arrival
Ship events. Pay for the ones that arrive.
No monthly fee. No cap you have to negotiate. A delivery that your endpoint accepts is the unit. A retry is cheaper. A payload over 32 KB is metered.
Publish
One post. A signed receipt.
Your server calls Nock. Nock calls theirs, with the same body and a signature they can check. The receipt below is what you store.
curl https://api.nock.example/v1/events \
-H "Authorization: Bearer $NOCK_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "parcel.scanned",
"to": "https://birch.example/hooks/nock",
"body": { "id": "HB-10482", "shop": "birch" }
}'
201 { "id": "evt_19f", "status": "accepted" }
Reference · three calls
The surface is small on purpose.
Publish an event, read a delivery, check a signature. Anything else is a support conversation, not another endpoint.
| Call | What it does | You keep |
|---|---|---|
POST /v1/events |
Accepts a type, a destination URL, and a JSON body under 256 KB. Returns when Nock has the event, not when the destination does. | The event id. |
GET /v1/deliveries/:id |
The attempts: status, response code from their server, and the next retry if there is one. Retries stop after six. | The last response code. |
Nock-Signature |
On the request Nock makes to you. HMAC of the raw body with the endpoint secret, hex encoded. Compare in constant time. Reject a timestamp older than five minutes. | The secret, off the machine that logs bodies. |
Nock-Signature: t=1710000000,v1=9f2c…
Nock-Delivery: evt_19f
{"type":"parcel.scanned","body":{"id":"HB-10482"}}