PricingStatus
Reference

HTTP Status Codes, Read Through a Monitoring Lens

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.

See Pricing