Debugging a failing delivery
Reading the timeline: what each status code usually means and what to do about it.
In short
- Start from the attempt timeline: status, latency and the response body are all recorded.
- A 401 usually means a rotated secret; a timeout usually means work done before acknowledging.
- Endpoint health gives success rate and latency percentiles over the last day.
Read the timeline first
Each attempt records the HTTP status, the response time, an error class when there was no status, and the first kilobyte of the body. Most questions are answered before you open a log on the other side.
curl https://api.hookget.com/v1/events/msg_…/attempts -H "authorization: Bearer $HOOKGET_KEY"
What the usual answers mean
| Symptom | Most common cause | What to do |
|---|---|---|
| 401 or 403 from the destination | The consumer is verifying against an old secret | Check whether the secret was rotated and the consumer still holds the previous one |
| Signature mismatch reported by the consumer | The body was parsed and re-serialised before verification | Verify over the raw bytes |
| Timeouts | The consumer does its work before answering | Acknowledge first, process after |
| Intermittent 5xx | A deploy or a dependency of the consumer | Nothing — the retry schedule is for exactly this |
| Everything failing since a fixed moment | DNS, certificate expiry or a firewall change | Check the destination directly from outside your network |
| Nothing attempted at all | No active destination subscribes to that event type | Check the event-type filter on the destination |
Endpoint health
curl https://api.hookget.com/v1/endpoints/ep_…/health -H "authorization: Bearer $HOOKGET_KEY"
# success rate over 24h, p50 and p95 latency, consecutive failures,
# and the reason if it has been disabled
An assistant can do the same reading: the MCP server exposes a diagnose tool that
combines the URL check, the breaker state and the health figures into a verbal verdict.