Your first delivery
Account, destination, publish, and the timeline that proves it arrived.
In short
- Open an account, add a destination, publish one event.
- The destination secret is shown once — store it before you close the panel.
- The delivery timeline shows the status, the latency and what the destination answered.
1. Add a destination
A destination is a URL that receives deliveries. On a live project it must be HTTPS; private and cloud-metadata addresses are refused. You can restrict it to certain event types or leave it open to everything.
curl -X POST https://api.hookget.com/v1/endpoints \
-H "authorization: Bearer $HOOKGET_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://orders.example.com/webhooks","event_types":["order.created"]}'
# {"id":"ep_…","secret":"whsec_…"} ← the secret appears exactly once
2. Publish an event
curl -X POST https://api.hookget.com/v1/events \
-H "authorization: Bearer $HOOKGET_KEY" \
-H "content-type: application/json" \
-d '{"type":"order.created","payload":{"id":"ord_10241","total":149.9}}'
# 202 — stored, then fanned out to every subscribed endpoint
The 202 arrives only after the event is durable. That ordering is the whole reliability story: an acknowledgement that precedes the write is a promise the service cannot keep.
3. Watch it arrive
Each attempt is recorded with its status, latency and the first kilobyte of the response.
curl https://api.hookget.com/v1/events/msg_01M0…/attempts \
-H "authorization: Bearer $HOOKGET_KEY"
| Field | What it tells you |
|---|---|
status | delivered, failed, or still pending |
http_status | What the destination answered, when it answered at all |
response_ms | How long it took — the number that becomes p95 on the health endpoint |
error_class | Why there was no status: a timeout, a connection error, a refused address |
response_body_first_1kb | The start of the body, which is usually where the reason is |
attempt_no | Which attempt this was, so a retry is visible as a retry |
On the consumer side, verify before you parse. The signature guide has the function in full.