Most status code references tell you what a code means. This one also tells you whether it should wake someone up.
100Continue
The server received the request headers and the client should send the body.
In monitoring: Rarely seen by monitors. Not a terminal response — the check waits for the final status.
Investigate
101Switching Protocols
The server is switching protocols as requested, typically to WebSocket.
In monitoring: Expected when probing a WebSocket upgrade endpoint. Treat as healthy in that context.
Investigate
103Early Hints
Preload hints sent before the final response.
In monitoring: Informational only. Your monitor should grade the final status that follows.
Investigate
200OK
The request succeeded and the response body contains the result.
In monitoring: The normal healthy state. Remember that 200 alone does not prove the body is correct — add a keyword assertion.
Treat as up
201Created
The request succeeded and a new resource was created.
In monitoring: Healthy for POST monitors. Be careful not to create real records on every check — use a synthetic account.
Treat as up
202Accepted
The request was accepted for processing but is not complete.
In monitoring: Healthy, but it only proves the queue accepted the job — not that the work succeeded.
Treat as up
204No Content
The request succeeded and there is no body to return.
In monitoring: A common healthy response for health-check endpoints. Body assertions cannot be used here.
Treat as up
206Partial Content
The server is delivering part of the resource due to a range request.
In monitoring: Healthy when probing range-capable endpoints such as media or large file downloads.
Treat as up
301Moved Permanently
The resource has permanently moved to a new URL.
In monitoring: Usually fine if your monitor follows redirects. If unexpected, someone changed routing — investigate.
Investigate
302Found
The resource temporarily resides at a different URL.
In monitoring: Common for auth redirects. A monitor that stops here without following may falsely report failure.
Investigate
303See Other
The response is at a different URL and should be retrieved with GET.
In monitoring: Typical after a POST. Follow redirects to grade the final destination.
Investigate
304Not Modified
The cached copy is still valid; no body is returned.
In monitoring: Healthy for conditional requests. Send no cache validators if you want the full body every check.
Treat as up
307Temporary Redirect
Same as 302 but the method must not change.
In monitoring: Follow it. Frequently used for HTTP-to-HTTPS enforcement.
Investigate
308Permanent Redirect
Same as 301 but the method must not change.
In monitoring: Follow it. Consider updating the monitor URL to the final target to save a round trip.
Investigate
400Bad Request
The server could not understand the request due to malformed syntax.
In monitoring: Almost always a broken monitor configuration rather than a broken service. Check your payload.
Investigate
401Unauthorized
Authentication is required and has failed or not been provided.
In monitoring: If unexpected, your monitor credentials expired. This is a very common cause of overnight false alarms.
Treat as down
403Forbidden
The server understood the request but refuses to authorise it.
In monitoring: Often a WAF or bot filter blocking the probe. Allowlist your monitoring source before assuming an outage.
Treat as down
404Not Found
The requested resource does not exist on the server.
In monitoring: For a monitored endpoint this is a real failure — either the route was removed or a deploy broke routing.
Treat as down
405Method Not Allowed
The method is known but not supported for this resource.
In monitoring: Usually a misconfigured monitor sending GET where POST is required, or vice versa.
Investigate
408Request Timeout
The server timed out waiting for the request.
In monitoring: Points to network trouble between probe and origin. Confirm from other regions before paging.
Treat as down
410Gone
The resource is permanently gone with no forwarding address.
In monitoring: Intentional removal. Retire or repoint the monitor rather than leaving it alarming.
Treat as down
418I'm a Teapot
An April Fools joke code from RFC 2324 that stuck around.
In monitoring: Occasionally used by services to reject automated traffic. If you see it, you are being filtered.
Investigate
429Too Many Requests
The client has sent too many requests in a given window.
In monitoring: Your check interval may be too aggressive, or the probe IPs are being rate limited. Slow down or allowlist.
Investigate
500Internal Server Error
A generic error occurred and the server could not be more specific.
In monitoring: An unambiguous outage signal. This should always open an incident.
Treat as down
501Not Implemented
The server does not support the functionality required.
In monitoring: Rare in production. Usually indicates a proxy that does not understand the method being sent.
Treat as down
502Bad Gateway
A gateway or proxy received an invalid response from the upstream server.
In monitoring: Classic sign the application behind the load balancer is down or restarting. Page on this.
Treat as down
503Service Unavailable
The server is temporarily unable to handle the request, often due to overload or maintenance.
In monitoring: Real user impact. Distinguish planned maintenance windows so they do not count against your SLA.
Treat as down
504Gateway Timeout
A gateway did not receive a timely response from the upstream server.
In monitoring: The app is alive but too slow to answer. Usually a database or downstream dependency problem.
Treat as down
507Insufficient Storage
The server cannot store the representation needed to complete the request.
In monitoring: Disk pressure. Frequently precedes a total failure — treat as urgent even if the site still loads.
Treat as down
508Loop Detected
The server detected an infinite loop while processing the request.
In monitoring: Configuration error, commonly a redirect or symlink cycle. Requires a fix, not a retry.
Treat as down
521Web Server Is Down
A Cloudflare-specific code meaning the origin refused the connection.
In monitoring: The CDN is healthy but your origin is not answering. Check the origin host directly.
Treat as down
522Connection Timed Out
A Cloudflare-specific code meaning the origin did not answer in time.
In monitoring: Often a firewall dropping CDN traffic, or an origin saturated beyond its accept queue.
Treat as down
The three verdicts
Grouping codes by their numeric class is how the specification organises them, but it is not how monitoring should treat them. A 401 and a 429 are both 4xx and they mean completely different things operationally.
Treat as upThe service is functioning. Note that 2xx alone does not prove correctness — pair it with a body assertion.
Treat as downReal user impact. These should open an incident and notify, subject to cross-region confirmation.
InvestigateUsually a monitor configuration problem or a deliberate policy such as rate limiting. Fix the check rather than the service.
The codes that cause false alarms
Three codes account for most misleading monitoring alerts. 401 almost always means a credential in your monitor expired, not that auth is broken for real users. 403 is frequently a WAF or bot filter blocking the probe specifically. 429 means you are checking too aggressively for the target's rate limits.
All three look like outages and none of them are. Allowlisting your monitoring source and keeping probe credentials on a renewal schedule eliminates a surprising share of overnight pages.
Redirects deserve a decision
Decide explicitly whether each monitor follows redirects. Following them tests the full user journey but hides the redirect itself. Not following them catches unexpected routing changes but reports a 301 as a failure. Neither is wrong — pick per monitor.
Ready to stop finding out from your customers?
Join the waitlist before September 5, 2026 and get a full year of Pro free — no credit card, no commitment.