The client should continue sending the request body (after Expect: 100-continue).
CacheableHas body
The server agrees to switch protocols (e.g. upgrade to WebSocket).
CacheableHas body
Lets the client preload resources (Link headers) before the final response.
CacheableHas bodyExperimental
Standard success. The body depends on the method (GET returns the resource).
CacheableHas body
A resource was created; usually accompanied by a Location header.
CacheableHas body
Common causes- Typical response to a POST/PUT that creates a resource.
Request accepted for async processing; not yet completed.
CacheableHas body
Success, but an intermediate proxy modified the content of the origin server’s original response.
CacheableHas body
Success with no response body (common for DELETE and PUT).
CacheableHas body
Success with no body; tells the user agent to reset the form or view that triggered the request.
CacheableHas body
Partial response to a request with a Range header (downloads, video).
CacheableHas body
The resource has more than one representation; the client should pick one. Rarely used in practice, with no standardized format for automatic selection.
CacheableHas bodyExperimental
The resource permanently moved; update links and bookmarks.
CacheableHas body
How to handle- Use 301 for SEO when permanently moving URLs; clients may turn POST into GET.
Temporary redirect; the method may change to GET in practice.
CacheableHas body
Look at another resource using GET (Post/Redirect/Get pattern).
CacheableHas body
The cached resource is still valid (ETag/If-Modified-Since); use the cache. The response itself carries no content, so RFC 9110 does not list it as cacheable by default the way it does 200.
CacheableHas body
Temporary redirect that preserves the method and body.
CacheableHas body
Permanent redirect that preserves the method and body.
CacheableHas body
The server could not understand the request due to malformed syntax or invalid data.
CacheableHas body
Common causes- Malformed JSON, missing parameters or wrong types.
- Server-side input validation failed.
How to handle- Validate the body/headers and check the Content-Type you send.
Valid authentication is missing. Despite the name, it is about authentication, not permission.
CacheableHas body
Common causes- Missing, expired or invalid token/credential.
How to handle- Send the correct Authorization header; refresh the token if expired.
Reserved for future use by RFC 9110. Some payment APIs reuse it non-standardly to signal a pending charge.
CacheableHas bodyExperimental
Authenticated but not allowed to access the resource. Re-authenticating will not help.
CacheableHas body
Common causes- Missing role/scope, blocked IP or a WAF.
How to handle- Review permissions/scopes; check firewall/WAF rules.
The resource does not exist at this URL (or the server hides its existence).
CacheableHas body
Common causes- Wrong URL/route, deleted resource or nonexistent ID.
How to handle- Check the route and method; handle nonexistent IDs in the app.
The HTTP method is not allowed on this resource (see the Allow header).
CacheableHas body
How to handle- Use the correct method (GET/POST/...) listed in the Allow header.
No representation matches the client’s Accept header.
CacheableHas body
Like 401, but the authentication required is for a proxy, not the origin server.
CacheableHas body
How to handle- Send the Proxy-Authorization header with the proxy’s credentials.
The client took too long to send the complete request.
CacheableHas body
Conflict with the current state of the resource (e.g. concurrent edit).
CacheableHas body
How to handle- Reload the current state and retry; use ETags for concurrency control.
The resource existed and was permanently removed.
CacheableHas body
The server refuses the request without a defined Content-Length.
CacheableHas body
How to handle- Include the Content-Length header with the body size in bytes.
A precondition sent by the client (If-Match, If-Unmodified-Since, etc.) evaluated to false on the server.
CacheableHas body
Common causes- The resource changed since the client last read it (a concurrent edit).
The request body is larger than the server is willing to accept.
CacheableHas body
How to handle- Reduce the payload or raise the limit (e.g. client_max_body_size in nginx).
The URL is too long (usually a huge query string on a GET).
CacheableHas body
The request body Content-Type is not supported by the endpoint.
CacheableHas body
How to handle- Send the correct Content-Type (e.g. application/json).
The range requested in the Range header could not be satisfied (common in resumed downloads and video streaming).
CacheableHas body
Common causes- An offset beyond the file’s current size, or the file changed between the original request and the resume.
A server along the path could not meet the expectation in the Expect header (e.g. 100-continue).
CacheableHas body
A 1998 joke (RFC 2324/7168, the HTCPCP protocol). RFC 9110 now formally lists the code as reserved (“Unused”) because of how widely it has been deployed as a joke, so it cannot be given serious semantics; it is nonetheless still widely implemented as an easter egg across frameworks and tools.
CacheableHas bodyDeprecated
The request reached a server that cannot give an authoritative response for that origin, common when an HTTP/2 connection is reused across different domains.
CacheableHas body
How to handle- The client can retry the request over a fresh connection specific to the target origin.
Syntax is fine, but the semantics are invalid (business validation failed).
CacheableHas body
How to handle- Common in REST APIs for detailed validation errors.
The resource is locked (WebDAV extension), common in file storage and collaborative-editing services.
CacheableHas body
The request failed because another request it depended on failed first (WebDAV extension).
CacheableHas body
The server refuses to process data sent too early (0-RTT anti-replay).
CacheableHas bodyExperimental
The client must switch to a different protocol (e.g. newer TLS).
CacheableHas body
The server requires a precondition (e.g. If-Match) to avoid lost updates.
CacheableHas body
Rate limit reached. Check the Retry-After header before retrying.
CacheableHas body
How to handle- Implement exponential backoff and honor Retry-After.
The headers (or a single cookie) are too large.
CacheableHas body
Content blocked for legal reasons (censorship, DMCA, GDPR).
CacheableHas body
A generic, unexpected server error. Check the backend logs.
CacheableHas body
Common causes- Unhandled exception, bug or an unavailable dependency.
How to handle- Inspect the logs/stack trace; add proper error handling.
The server does not support the functionality required (e.g. the method).
CacheableHas body
A proxy/gateway got an invalid response from the upstream server.
CacheableHas body
Common causes- App crashed, wrong upstream or a proxy timeout (nginx).
How to handle- Check that the upstream service is up and the proxy config.
The server is temporarily unavailable (overload or maintenance).
CacheableHas body
How to handle- Use Retry-After; scale resources or wait for maintenance to finish.
A proxy/gateway did not get a response from upstream in time.
CacheableHas body
Common causes- Slow upstream, a stuck query or a short proxy timeout.
The HTTP version used in the request is not supported.
CacheableHas body
A content-negotiation configuration error: the chosen variant also negotiates, creating a loop the server has to break.
CacheableHas bodyExperimental
The server lacks storage to complete the request (WebDAV).
CacheableHas body
The server detected an infinite loop while processing a WebDAV request with unlimited depth (Depth: infinity).
CacheableHas body
You must authenticate to the network (Wi-Fi captive portals).
CacheableHas body
This is an offline reference: nothing is sent over the network. The tool does not access any site or make requests, it only explains the codes.