Webhook Retry Calculator
See when each retry fires with exponential backoff and jitter, and what survives an outage.
Look up any HTTP status code and see what it means in practice: should a webhook sender retry, and should an uptime check call the endpoint healthy?
| Code | Meaning | Webhook sender: retry? | Health check |
|---|---|---|---|
| 100 | Continue The server received the request headers, so the client can send the body. |
– Not a final response |
– |
| 101 | Switching Protocols The server is switching protocols, for example to WebSocket. |
– Not a final response |
– |
| 102 | Processing WebDAV: the server is still working on the request. |
– Not a final response |
– |
| 103 | Early Hints Preliminary headers, such as preload links, sent before the final response. |
– Not a final response |
– |
| 200 | OK The request succeeded. |
No Delivered |
Healthy |
| 201 | Created The request succeeded and created a new resource. |
No Delivered |
Healthy |
| 202 | Accepted The request was accepted, but processing hasn’t finished. |
No Delivered |
Healthy |
| 203 | Non-Authoritative Information The response was modified by a proxy. |
No Delivered |
Healthy |
| 204 | No Content The request succeeded and there is no body to return. |
No Delivered |
Healthy |
| 205 | Reset Content The request succeeded; the client should reset the form or view. |
No Delivered |
Healthy |
| 206 | Partial Content The server is returning part of the resource, as asked for with a Range header. |
No Delivered |
Healthy |
| 207 | Multi-Status WebDAV: the body contains statuses for several operations. |
No Delivered |
Healthy |
| 208 | Already Reported WebDAV: these members were already listed earlier in the response. |
No Delivered |
Healthy |
| 226 | IM Used The server applied instance manipulations, such as delta encoding. |
No Delivered |
Healthy |
| 300 | Multiple Choices Several representations of the resource are available. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 301 | Moved Permanently The resource has a new permanent URL. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 302 | Found The resource is temporarily at another URL. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 303 | See Other Fetch the result from another URL with GET. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 304 | Not Modified The cached copy is still valid. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 307 | Temporary Redirect Temporarily at another URL; repeat the request with the same method and body. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 308 | Permanent Redirect Permanently at another URL; repeat the request with the same method and body. |
No Most senders count a redirect as a failure, so update the URL |
Check URL |
| 400 | Bad Request The server can’t process the request because it is malformed. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 401 | Unauthorized The request has no valid credentials. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 402 | Payment Required Reserved; some APIs use it for billing problems. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 403 | Forbidden The server understood the request but won’t allow it. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 404 | Not Found Nothing exists at this URL. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 405 | Method Not Allowed The URL doesn’t accept this HTTP method. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 406 | Not Acceptable No representation matches the request’s Accept headers. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 407 | Proxy Authentication Required A proxy between the client and server needs credentials. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 408 | Request Timeout The server gave up waiting for the client to send the request. |
Retry Temporary: retry with backoff |
Unhealthy |
| 409 | Conflict The request conflicts with the current state of the resource. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 410 | Gone The resource was permanently removed. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 411 | Length Required The server requires a Content-Length header. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 412 | Precondition Failed A condition in the request headers wasn’t met. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 413 | Content Too Large The request body is larger than the server accepts. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 414 | URI Too Long The URL is longer than the server accepts. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 415 | Unsupported Media Type The server doesn’t accept the request’s Content-Type. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 416 | Range Not Satisfiable The requested byte range isn’t available. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 417 | Expectation Failed The server can’t meet the Expect header. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 418 | I’m a teapot An April Fools’ joke from RFC 2324, sometimes used to turn away bots. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 421 | Misdirected Request The request reached a server that can’t answer for this hostname. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 422 | Unprocessable Content The request is well-formed but fails validation. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 423 | Locked WebDAV: the resource is locked. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 424 | Failed Dependency WebDAV: the request depended on another request that failed. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 425 | Too Early The server won’t process a request that might be replayed. |
Retry Temporary: retry with backoff |
Unhealthy |
| 426 | Upgrade Required The client must switch to a different protocol. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 428 | Precondition Required The server requires a conditional request. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 429 | Too Many Requests The client is being rate limited. Check the Retry-After header. |
Retry Temporary: back off and honour Retry-After |
Degraded |
| 431 | Request Header Fields Too Large The request headers are too large. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 451 | Unavailable For Legal Reasons Access is blocked for legal reasons. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 500 | Internal Server Error The server hit an unexpected error. |
Retry Temporary: retry with backoff |
Unhealthy |
| 501 | Not Implemented The server doesn’t support what the request needs. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 502 | Bad Gateway A proxy got an invalid response from the server behind it. |
Retry Temporary: retry with backoff |
Unhealthy |
| 503 | Service Unavailable The server is overloaded or down for maintenance. |
Retry Temporary: back off and honour Retry-After |
Unhealthy |
| 504 | Gateway Timeout A proxy gave up waiting for the server behind it. |
Retry Temporary: retry with backoff |
Unhealthy |
| 505 | HTTP Version Not Supported The server doesn’t support the request’s HTTP version. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 506 | Variant Also Negotiates The server’s content negotiation is misconfigured. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 507 | Insufficient Storage WebDAV: the server can’t store what the request needs. |
Retry Temporary: retry with backoff |
Unhealthy |
| 508 | Loop Detected WebDAV: the server found an infinite loop. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 510 | Not Extended The server needs further extensions to fulfil the request. |
No Permanent: fix the request or the endpoint |
Unhealthy |
| 511 | Network Authentication Required The client must sign in to the network, such as a captive portal. |
No Permanent: fix the request or the endpoint |
Unhealthy |
Send events to SensaCat’s ingest API and get alerted when jobs, webhooks and multi-step flows stall.
401 Unauthorized means the request has no valid credentials: sign in or send a token. 403 Forbidden means the server knows who you are but won’t allow the action.
502 Bad Gateway means a proxy got an invalid response from the server behind it. 503 Service Unavailable means the server is overloaded or down for maintenance. 504 Gateway Timeout means a proxy gave up waiting for the server behind it. All three are usually temporary and worth retrying.
Either works; senders treat any 2xx response as success. Return it quickly, after storing or queueing the event.
Most webhook senders don’t follow redirects and treat them as failed deliveries. Configure the final URL, including the correct scheme and trailing slash.
See when each retry fires with exponential backoff and jitter, and what survives an outage.
Follow a URL’s redirects, list its response headers and grade its security headers.
Turn an uptime percentage into allowed downtime, or downtime into an uptime percentage.