An HTTP error code tells you which side failed and roughly why. Pick an error to see what causes it and how to fix it.
4xx client errors
- 400 vs 422400: I can't parse this. 422: I parsed it, and it's invalid.
- 401 vs 403401: who are you? 403: I know who you are, and no.
- 409 ConflictThe request clashes with the resource's current state.
- 410 GoneRemoved on purpose, permanently. Senders often stop calling.
- 413 Payload Too LargeThe request body is over a size limit somewhere in the chain.
- 429 Too Many RequestsYou hit a rate limit. Back off, honour Retry-After, or smooth the bursts.
5xx server errors
- 500 Internal Server ErrorSomething broke inside the app. The logs have the answer.
- 502 Bad GatewayA proxy couldn't get a valid response from the app behind it.
- 503 Service UnavailableThe server is temporarily overloaded or in maintenance. Retry later.
- 504 Gateway TimeoutA proxy gave up waiting for the app behind it.
TLS and certificate errors
4xx vs 5xx
A 4xx code means the server rejected the request: bad auth, a conflict, too many requests, a body that's too large. A 5xx code means something on the server side broke, often a proxy or gateway sitting in front of your app.
Why these errors matter for webhooks
Each page also covers the case where you receive webhooks behind a proxy, tunnel or load balancer. These codes decide whether a provider retries a delivery or drops it: a 5xx or a timeout usually triggers a retry, and a 410 Gone can tell the sender to stop for good.
