| 100 | Continue (1xx) | The server has read the request head and the client may send the body. | Sent in reply to "Expect: 100-continue"; normally invisible to the user. |
| 101 | Switching Protocols (1xx) | The server agrees to switch protocols, on the client’s request. | Seen when the connection upgrades to a long-lived channel, or on HTTP/2. |
| 102 | Processing (1xx) | The server is still working, so a slow request does not time out. | A WebDAV convention; most servers skip it. |
| 103 | Early Hints (1xx) | Some headers arrive before the final response, while the body is still being prepared. | Servers and CDNs use it to send Link hints (preload) before the real 200. |
| 200 | OK (2xx) | The request succeeded and the response carries what was asked for. | The everyday code; worth confirming the Content-Type matches what you requested. |
| 201 | Created (2xx) | A new resource was made by the request, and its location is in the Location header. | Look for the Location header pointing at the new resource. |
| 202 | Accepted (2xx) | The request was accepted for processing, but the work is not done yet. | Common in queues; poll the status URL in the response if there is one. |
| 203 | Non-Authoritative Information (2xx) | The reply came from a copy, not the origin server. | Rare; proxies and intermediaries use it when they transform a response. |
| 204 | No Content (2xx) | It worked, but there is nothing to send back. | The success body of a DELETE or a save; do not expect a body. |
| 205 | Reset Content (2xx) | Like 204, and the page should clear the form that sent the request. | Rare; tells the browser to reset the current document. |
| 206 | Partial Content (2xx) | The server sent the part of the resource that the Range header asked for. | Seen in resumable downloads and video seeking, with a Content-Range header. |
| 207 | Multi-Status (2xx) | Several operations ran, and the body reports the status of each one. | WebDAV; read the per-item statuses in the body. |
| 226 | IM Used (2xx) | The server applied an instance manipulation before sending the response. | Very rare, tied to delta encoding; almost nobody sees it. |
| 300 | Multiple Choices (3xx) | Several representations exist for this URI and one has to be chosen. | Rare today; clients usually just follow the first choice. |
| 301 | Moved Permanently (3xx) | The resource has a new permanent URI. | Check the target in Location; an old URL that should have been updated points here. |
| 302 | Found (3xx) | The resource is temporarily at another URI. | Historically also a redirect; check Location and fix the client URL if it is wrong. |
| 303 | See Other (3xx) | The result is elsewhere and should be fetched with GET. | Used after a POST in the post-redirect-get pattern to point at a fresh page. |
| 304 | Not Modified (3xx) | The cached copy is still valid; send it, no body needed. | A working round trip to If-None-Match / If-Modified-Since; nothing to fix. |
| 305 | Use Proxy (3xx) | Deprecated by RFC 9110 and must not be sent. | Old or misconfigured servers only; there is nothing to honor. |
| 306 | Unused (3xx) | Reserved, never assigned to a real code. | Should never appear; it exists only so the number is documented. |
| 307 | Temporary Redirect (3xx) | Like 302, but the method must not change. | A POST that must stay a POST across a temporary move. |
| 308 | Permanent Redirect (3xx) | Like 301, but the method must not change. | Update bookmarks and links to the new URI when one points here. |
| 400 | Bad Request (4xx) | The server cannot read the request: malformed syntax, headers or framing. | Replay the exact request; a bad header, body or encoding is the usual cause. |
| 401 | Unauthorized (4xx) | Authentication is missing or the credentials were refused. | Read the WWW-Authenticate header, then check the credentials and their expiry. |
| 402 | Payment Required (4xx) | Reserved for a future paid-access requirement. | Not used in practice; you will not normally see it in the wild. |
| 403 | Forbidden (4xx) | The server understood the request but refuses to do it. | Check authorization rules, IP and firewall blocks, and file permissions. |
| 404 | Not Found (4xx) | No resource exists at the URI that was requested. | Check the path, the API route, and whether the object still exists. |
| 405 | Method Not Allowed (4xx) | The URI exists, but not for this method. | Read the Allow header to see what the endpoint accepts. |
| 406 | Not Acceptable (4xx) | The server cannot produce a representation that matches the Accept header. | Ask for JSON when the server only serves HTML, or vice versa. |
| 407 | Proxy Authentication Required (4xx) | A proxy, not the origin, demands authentication. | Fix the proxy credentials; the Proxy-Authenticate header names the scheme. |
| 408 | Request Timeout (4xx) | The client took too long to send its request. | Missing or stalled uploads; usually client or network side, not the server. |
| 409 | Conflict (4xx) | The request clashes with the current state of the resource. | Typical of versioned or optimistic-locking systems; change state first and retry. |
| 410 | Gone (4xx) | The resource used to exist and is gone, on purpose. | Correct for deleted and retired content; search engines may then drop the URL. |
| 411 | Length Required (4xx) | A Content-Length header was required and missing. | Add the header when this server demands it. |
| 412 | Precondition Failed (4xx) | A conditional header (If-Match, If-Unmodified-Since) failed. | The resource changed since the client’s copy; refetch and retry. |
| 413 | Content Too Large (4xx) | The request body is bigger than the server will accept. | Raise the upload limit or split the payload; check the server and proxy limits. |
| 414 | URI Too Long (4xx) | The request target is too long for the server. | Put large data in the body rather than the URL; also check long link chains. |
| 415 | Unsupported Media Type (4xx) | The body’s Content-Type is not one the server handles. | Send the content type the API documents, such as application/json or multipart/form-data. |
| 416 | Range Not Satisfiable (4xx) | The Range header cannot be satisfied. | You asked for a range past the end of the file; check Content-Range for the valid bounds. |
| 417 | Expectation Failed (4xx) | The Expect header cannot be met. | A client asked for an expectation the server refuses; test without Expect. |
| 418 | I’m a teapot (4xx) | An April Fools joke response: the server refuses to brew coffee in a teapot. | A cultural reference, not something to fix; some lint tools use it as a check. |
| 421 | Misdirected Request (4xx) | The request went to a server that should not serve this host. | An SNI, host-routing or load-balancing problem; the connection hit the wrong virtual host. |
| 422 | Unprocessable Content (4xx) | The syntax is fine but the content is semantically wrong. | Validation failures live in the response body; read the field messages. |
| 423 | Locked (4xx) | The resource is locked and cannot act on the request. | WebDAV and versioned systems; release the lock and retry. |
| 424 | Failed Dependency (4xx) | A related request failed, so this one could not run. | WebDAV; fix the dependency before retrying. |
| 425 | Too Early (4xx) | The server refuses a request that might be a replay. | Part of TLS 1.3 early data; retry the request when it is safe. |
| 426 | Upgrade Required (4xx) | The client should switch to the protocol named in the Upgrade header. | Old clients against servers that need a newer protocol, such as HTTP/2. |
| 428 | Precondition Required (4xx) | Conditional requests are required on this resource. | The origin needs If-Match; add the precondition for writes. |
| 429 | Too Many Requests (4xx) | A rate limit was reached; the client is sending too fast. | Honor Retry-After, then fix the throttling on the client side. |
| 431 | Request Header Fields Too Large (4xx) | The request headers exceed the server’s limit. | A cookie or header blob got too big; trim it or raise the server limit. |
| 451 | Unavailable For Legal Reasons (4xx) | The resource was withheld for legal reasons. | The response body names the law (RFC 7725); this is not an infrastructure fault. |
| 500 | Internal Server Error (5xx) | Something on the server failed while handling the request. | Start with the server and application logs; the body may name an exception. |
| 501 | Not Implemented (5xx) | The server does not support the method used. | The server is old or minimal; read which methods it actually implements. |
| 502 | Bad Gateway (5xx) | An upstream server replied with something invalid. | Look past the proxy: an upstream is crashing, timing out, or returning garbage. |
| 503 | Service Unavailable (5xx) | The server is overloaded or down for maintenance. | Honor Retry-After when present; scale or fix the outage that caused it. |
| 504 | Gateway Timeout (5xx) | An upstream did not answer in time. | Like 502 but a timeout; check slow upstream queries and proxy timeouts. |
| 505 | HTTP Version Not Supported (5xx) | The HTTP version used is not supported. | An old server or odd client; almost always a protocol or proxy mismatch. |
| 506 | Variant Also Negotiates (5xx) | A server misconfiguration in content negotiation. | A config bug in the negotiation loop; fix the server configuration. |
| 507 | Insufficient Storage (5xx) | The server cannot store what was asked. | Disk or quota full on WebDAV and storage backends; free space and retry. |
| 508 | Loop Detected (5xx) | An infinite processing loop was detected. | WebDAV; a circular reference in the server’s internal processing. |
| 510 | Not Extended (5xx) | The request needs an extension the server does not support. | Very rare, mostly a legacy WebDAV artifact. |
| 511 | Network Authentication Required (5xx) | The network itself requires authentication. | A captive portal: log in to the network, not the application. |