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.

Deliveries10,000
Retries2,000
Typical payload24 KB
Log retention7 days
Estimated month
$0.18 / 1,000 arrivals · $0.04 / 1,000 retries · $2 / log day
$16

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.

CallWhat it doesYou 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"}}