Continue
The initial part of the request has been received and the client should continue sending the rest, such as the request body.
RFC 9110A free, interactive HTTP status code list and REST API cheat sheet. Every registered code from 100 to 511, plus selected unofficial nginx, Cloudflare, and AWS codes, in plain English. Click any code to copy it, or share a direct link.
Interim responses. The server received the request and the client should continue.
The initial part of the request has been received and the client should continue sending the rest, such as the request body.
RFC 9110The server is switching protocols as requested by the client via the Upgrade header. Most commonly seen when opening a WebSocket connection.
RFC 9110The server has accepted the full request but has not yet completed it (WebDAV). Deprecated and rarely seen today.
RFC 2518Used to return preload or preconnect hints before the final response, so browsers can start fetching critical resources early.
RFC 8297An interim response telling the client that the server supports resumable uploads. Its Location header points to the upload resource, so an interrupted upload can be picked up again. A temporary registration from an IETF draft, not yet a final standard.
IETF draft · temporaryThe request was received, understood, and accepted.
The request succeeded. The meaning of success depends on the HTTP method: GET returns the resource, POST reports the result of the action.
RFC 9110The request succeeded and a new resource was created as a result. The Location header usually points to the new resource.
RFC 9110The request has been accepted for processing, but the processing has not been completed. Common for asynchronous jobs and queued processing.
RFC 9110The request succeeded, but a transforming proxy has modified the content from the origin server’s 200 response.
RFC 9110The server processed the request but is not returning any content. Common for DELETE requests and save actions that need no response body.
RFC 9110Instructs the client to reset the document view that sent the request, such as clearing a submitted form.
RFC 9110The server is delivering only part of the resource due to a Range header. Used for download resumption and video streaming.
RFC 9110Conveys information about multiple independent operations, each with its own status code (WebDAV).
RFC 4918The members of a DAV binding have already been enumerated in an earlier part of the response (WebDAV).
RFC 5842The server fulfilled a GET request and the response represents the result of one or more instance manipulations, such as a delta update.
RFC 3229Further action is needed, usually following a redirect to another URL.
The request has more than one possible response. The client or user should choose one of them.
RFC 9110The URL of the requested resource has been changed permanently. Browsers cache this redirect and search engines transfer ranking signals to the new URL.
Often confused with 308 Permanent Redirect: both are permanent. After a 301 a client may change POST to GET, after a 308 the method and body stay the same.
RFC 9110The resource is temporarily at a different URL and clients should keep using the original one. Google treats it as only a weak signal to switch to the new URL, so use 301 or 308 for permanent moves.
Often confused with 307 Temporary Redirect: both are temporary. After a 302 a client may change POST to GET, after a 307 the method and body stay the same.
RFC 9110The response can be found at another URL using a GET request. Often used after a POST so a page refresh does not resubmit the form.
RFC 9110The client’s cached copy is still valid and can be reused. Sent in response to conditional requests with If-None-Match or If-Modified-Since headers.
RFC 9110Deprecated. The requested resource must be accessed through the specified proxy. No longer used due to security concerns.
RFC 9110Reserved. It was defined as Switch Proxy in an early draft and is no longer used, but the number remains reserved.
RFC 9110The resource is temporarily at another URL. Unlike 302, the request method and body must not change when following the redirect.
Often confused with 302 Found: both are temporary. After a 302 a client may change POST to GET, after a 307 the method and body stay the same.
RFC 9110The resource has permanently moved. Like 301, but the request method and body must not change when following the redirect.
Often confused with 301 Moved Permanently: both are permanent. After a 301 a client may change POST to GET, after a 308 the method and body stay the same.
RFC 9110The request contains an error or cannot be fulfilled as sent.
The server cannot process the request due to a client error. Check the request syntax, query parameters, and JSON body for mistakes.
Often confused with 422 Unprocessable Content: 400 is for a request the server cannot make sense of, such as broken JSON. 422 is for a request that parses fine but fails validation, such as a missing field. Many APIs use 400 for both.
RFC 9110Authentication is required and has failed or has not been provided. Retry with a valid Authorization header, such as a fresh token or login.
Often confused with 403 Forbidden: 401 means valid credentials are missing, so logging in can help. 403 means the server refuses anyway, so sending the same credentials again will not.
RFC 9110Reserved for future use. In practice some APIs use it to signal that payment is needed or a quota has been exceeded.
RFC 9110The server understood the request but refuses to fulfill it. Sending the same credentials again will not help, and the reason may have nothing to do with credentials at all, such as a blocked IP address.
Often confused with 401 Unauthorized: 401 means valid credentials are missing, so logging in can help. 403 means the server refuses anyway, so sending the same credentials again will not.
RFC 9110The server cannot find the requested resource. Check the URL for typos. APIs may also use it to hide resources from unauthorized clients.
Often confused with 410 Gone: a 404 says nothing about whether the resource will come back, a 410 says it is gone for good.
RFC 9110The request method is known but not supported by this resource, such as sending POST to a GET-only endpoint. The Allow header lists supported methods.
RFC 9110No available representation matches the client’s Accept headers, such as requesting XML from a JSON-only API.
RFC 9110Authentication with the proxy is required before the request can proceed. The proxy equivalent of 401.
RFC 9110The server timed out waiting for the request. Often caused by slow networks or a client holding a connection open without sending data.
RFC 9110The request conflicts with the current state of the resource. Typical for version conflicts, duplicate submissions, or concurrent edits.
RFC 9110The resource is gone and that is likely to be permanent, with no forwarding address. Google removes 404 and 410 pages from its index in the same way.
Often confused with 404 Not Found: a 404 says nothing about whether the resource will come back, a 410 says it is gone for good.
RFC 9110The server requires a Content-Length header, which the request did not supply.
RFC 9110One or more conditions in the request headers, such as If-Match, evaluated to false. Used to prevent lost updates in concurrent editing.
RFC 9110The request body is larger than the server accepts. Often an upload exceeding a size limit, such as client_max_body_size in nginx. Formerly called Payload Too Large.
RFC 9110The URI is longer than the server can interpret, usually a query string that has grown out of control.
RFC 9110The media format of the request body is not supported by the resource. Check the Content-Type header on the request.
RFC 9110The requested byte range cannot be fulfilled, for example a range beyond the end of the file.
RFC 9110The expectation given in the Expect request header cannot be met by the server.
RFC 9110The server refuses to brew coffee because it is, permanently, a teapot. An April Fools’ joke from 1998 that was deployed so often that the official registry now lists the number as reserved and (Unused).
RFC 2324The request was directed at a server that cannot produce a response, often a TLS or HTTP/2 connection reuse issue.
RFC 9110The request was well-formed but contains semantic errors. Common in REST APIs when a field fails validation. Formerly called Unprocessable Entity.
Often confused with 400 Bad Request: 400 is for a request the server cannot make sense of, such as broken JSON. 422 is for a request that parses fine but fails validation, such as a missing field. Many APIs use 400 for both.
RFC 9110The request failed because a previous request it depended on also failed (WebDAV).
RFC 4918The server is unwilling to risk processing a request that might be replayed, related to TLS 1.3 early data.
RFC 8470The client must switch to a different protocol, given in the Upgrade header, to continue.
RFC 9110The origin server requires the request to be conditional, to prevent lost updates when multiple clients edit the same resource.
RFC 6585The client has sent too many requests in a given amount of time. Slow down, and if the response has a Retry-After header, wait that long before retrying.
RFC 6585The request headers are too large for the server to process. Oversized cookies are the most common cause.
RFC 6585The resource cannot legally be provided, often due to censorship, court order, or a takedown request. The number references Fahrenheit 451.
RFC 7725The server failed to fulfill a valid request.
A generic server error when no more specific 5xx code fits. Check the server logs for the underlying exception.
RFC 9110The server does not support the functionality needed to fulfill the request, such as an HTTP method it does not recognize at all.
RFC 9110The server, acting as a gateway, received an invalid response from the upstream server. Common with reverse proxies when the backend crashes.
Often confused with 504 Gateway Timeout: with a 502 the upstream server sent an invalid answer or refused the connection, with a 504 it did not answer in time.
RFC 9110The server is not ready to handle the request. Usually temporary: planned maintenance, an overloaded server, or a backend marked unhealthy.
RFC 9110The gateway did not receive a timely response from the upstream server. Check upstream timeout settings and long-running requests.
Often confused with 502 Bad Gateway: with a 502 the upstream server sent an invalid answer or refused the connection, with a 504 it did not answer in time.
RFC 9110The HTTP version used in the request is not supported by the server.
RFC 9110Transparent content negotiation resulted in a circular reference. A server configuration error.
RFC 2295The server cannot store the representation needed to complete the request (WebDAV).
RFC 4918Further extensions to the request are required for the server to fulfill it. The specification was moved to Historic and the registry marks the code as obsolete.
RFC 2774The client needs to authenticate to gain network access. Shown by captive portals on hotel, airport, and cafe Wi-Fi.
RFC 6585Non-standard codes used by nginx, Cloudflare, AWS, and other platforms. Some are only logged or handled inside the server and never reach the client. Not part of the official IANA registry.
Returned by Laravel when a CSRF token is missing or expired. Refresh the page and submit the form again.
Unofficial · LaravelReturned by the original Twitter API when a client was rate limited. Retired in favor of the standard 429.
An nginx-specific code that closes the connection without sending any response. Used to drop malicious or unwanted requests.
Unofficial · nginxAn AWS load balancer code. The client closed the connection before the load balancer’s idle timeout ran out, usually because the client’s own timeout is shorter than the time the target needs to respond.
Often confused with 499 Client Closed Request: the same event seen by different software. nginx logs 499 and an AWS load balancer records 460 when the client hangs up before the response.
Unofficial · AWSAn AWS load balancer code. The X-Forwarded-For header contained more than 30 IP addresses.
Unofficial · AWSAn AWS load balancer code. The protocol of the incoming request does not fit the protocol version of the target group, such as an HTTP/1.1 request sent to a gRPC or HTTP/2 target group.
Unofficial · AWSAn nginx-internal code: a request header exceeded the configured buffer size. Unless an error_page rule handles it, the client receives a plain 400. A request line that is too long gets 414 instead.
Unofficial · nginxAn nginx-internal code: verifying the client’s certificate failed. It can be handled with an error_page rule, otherwise the client receives a plain 400.
Unofficial · nginxAn nginx-internal code: the client did not present the required certificate. It can be handled with an error_page rule, otherwise the client receives a plain 400.
Unofficial · nginxAn nginx-internal code: a plain HTTP request was sent to a port listening for HTTPS. Often handled with an error_page rule that redirects to HTTPS, otherwise the client receives a plain 400.
Unofficial · nginxAn nginx log code that is never sent to anyone: the client closed the connection before nginx could send a response. Usually an impatient client, a low proxy timeout, or users navigating away.
Often confused with 460 Client Closed Connection: the same event seen by different software. nginx logs 499 and an AWS load balancer records 460 when the client hangs up before the response.
Unofficial · nginxThe site exceeded its hosting bandwidth quota. Common on shared cPanel and Apache hosting.
A Cloudflare code: the origin returned an empty, malformed, or unexpected response. Check the origin server logs.
Unofficial · CloudflareA Cloudflare code: Cloudflare could not connect to the origin server. The origin is offline or blocking Cloudflare IP addresses.
Unofficial · CloudflareA Cloudflare code: Cloudflare timed out contacting the origin, either while opening the TCP connection or while waiting for the origin to acknowledge the request. Often firewall rules or an overloaded origin server.
Unofficial · CloudflareA Cloudflare code: Cloudflare could not route to the origin, most often a DNS or network configuration problem.
Unofficial · CloudflareA Cloudflare code: the connection to the origin succeeded but no HTTP response arrived in time, or sending the request data to the origin timed out. Long-running requests are the usual cause.
Unofficial · CloudflareA Cloudflare code: the TLS handshake between Cloudflare and the origin failed. Check the origin certificate and SSL settings.
Unofficial · CloudflareA Cloudflare code: the origin certificate was rejected, usually expired or self-signed while SSL mode is set to Full (strict).
Unofficial · CloudflareA legacy Cloudflare code from the retired Railgun service, signaling a failed connection between Railgun components.
A Cloudflare code shown with an accompanying 1xxx error. Most often the origin hostname could not be resolved in DNS.
Unofficial · CloudflareAn AWS load balancer code. A listener rule is set to authenticate users, but the identity provider returned an error code while authenticating the user. The access logs hold the error reason code.
Unofficial · AWSAn AWS load balancer code. The load balancer did not get a successful and valid response from the JWKS endpoint it uses to verify JSON Web Tokens.
Unofficial · AWS