HTTP Status Codes
A complete reference for HTTP status codes — what they mean, when servers send them, and how to handle them in your applications.
Continue
The server has received the request headers and the client should proceed to send the request body.
Switching Protocols
The server agrees to switch protocols as requested by the client via the Upgrade header.
Processing
The server has accepted the complete request but processing will take time, and this response prevents the client from timing out.
Early Hints
The server sends preliminary headers before the final response, allowing the client to start preloading resources sooner.
OK
The request succeeded, and the response contains the requested data or confirmation of the action.
Created
The request succeeded and resulted in a new resource being created.
Accepted
The request has been accepted for processing, but the processing has not been completed.
Non-Authoritative Information
The request succeeded, but the returned metadata is from a transforming proxy rather than the origin server.
No Content
The request succeeded, but there is no content to send in the response body.
Reset Content
The server successfully processed the request and asks the client to reset the document/form view that sent it.
Partial Content
The server is delivering only part of the resource, as requested via a Range header.
Multi-Status
The response contains multiple independent status codes for multiple sub-operations performed by a single request.
Already Reported
Used inside a 207 Multi-Status response to avoid repeatedly enumerating the same resource bound to multiple locations.
IM Used
The server fulfilled a request using one or more instance manipulations applied to the resource.
Multiple Choices
The request has multiple possible responses, and the client should choose one.
Moved Permanently
The requested resource has been permanently moved to a new URL.
Found
The requested resource has been temporarily moved to a different URL.
See Other
The response to the request can be found at a different URL, retrieved specifically using GET.
Not Modified
The requested resource has not changed since the version specified by the client, who can use their cached copy.
Use Proxy
Deprecated. Originally meant the requested resource must be accessed through the proxy given in the Location header.
(Unused)
Reserved. Previously used in an early HTTP draft, but no longer used and not available for any other purpose.
Temporary Redirect
The requested resource is temporarily available at a different URL, and the request method must not change.
Permanent Redirect
The requested resource has been permanently moved to a different URL, and the request method must not change.
Bad Request
The server cannot process the request due to a client-side error in the request itself.
Unauthorized
The request lacks valid authentication credentials for the requested resource.
Payment Required
Reserved for future use; in practice, often repurposed by APIs to indicate a payment-related failure.
Forbidden
The server understood the request and identified the client, but refuses to authorize it.
Not Found
The server cannot find the requested resource.
Method Not Allowed
The resource exists, but the HTTP method used in the request is not supported for it.
Not Acceptable
The server cannot produce a response matching the content characteristics requested by the client.
Proxy Authentication Required
The client must authenticate with a proxy server before the request can proceed.
Request Timeout
The server timed out waiting for the client to send a complete request.
Conflict
The request could not be completed because it conflicts with the current state of the resource.
Gone
The requested resource is no longer available and has been intentionally, permanently removed.
Length Required
The server requires a Content-Length header, which the client did not provide.
Precondition Failed
A condition specified in the request's headers was not met by the current state of the resource.
Payload Too Large
The request body is larger than the server is willing or able to process.
URI Too Long
The URI requested by the client is longer than the server is willing to interpret.
Unsupported Media Type
The server refuses to process the request because the request body's format is not supported.
Range Not Satisfiable
The server cannot fulfill the byte-range requested by the client because it falls outside the resource's actual size.
Expectation Failed
The server cannot meet the requirements specified in the request's Expect header.
I'm a Teapot
A joke status code from an April Fools' RFC, indicating the server refuses to brew coffee because it is a teapot.
Page Expired
A non-standard status code used by some web frameworks to indicate an expired CSRF token or session.
Enhance Your Calm
A non-standard status code historically used by Twitter to indicate a client was being rate limited.
Misdirected Request
The request was directed at a server that is not configured to produce a response for the combination of scheme and authority requested.
Unprocessable Entity
The request was well-formed but contains semantic errors that prevent it from being processed.
Locked
The resource being accessed is locked and cannot be modified.
Failed Dependency
The request failed because it depended on another request that failed.
Too Early
The server is unwilling to process a request that might be replayed, sent before the connection is fully established.
Upgrade Required
The server refuses to process the request using the current protocol but may do so if the client switches to a different protocol.
Precondition Required
The server requires the request to include a conditional header before it can be processed.
Too Many Requests
The client has sent too many requests in a given amount of time and is being rate limited.
Request Header Fields Too Large
The server refuses to process the request because its header fields are too large.
Connection Closed Without Response
A non-standard Nginx status code indicating the server closed the connection without sending any response.
Unavailable For Legal Reasons
The server is denying access to the resource as a result of a legal demand, such as government-mandated censorship.
Client Closed Request
A non-standard Nginx status code indicating the client closed the connection before the server could send a response.
Internal Server Error
A generic error indicating the server encountered an unexpected condition and could not complete the request.
Not Implemented
The server does not support the functionality required to fulfill the request.
Bad Gateway
A server acting as a gateway or proxy received an invalid response from an upstream server.
Service Unavailable
The server is temporarily unable to handle requests, often due to overload or maintenance.
Gateway Timeout
A server acting as a gateway or proxy did not receive a response from an upstream server in time.
HTTP Version Not Supported
The server does not support the HTTP protocol version used in the request.
Variant Also Negotiates
The server has an internal configuration error involving content negotiation, where the chosen variant itself is configured to negotiate.
Insufficient Storage
The server is unable to store the representation needed to complete the request due to a lack of storage space.
Loop Detected
The server detected an infinite loop while processing a request with dependencies between resources.
Bandwidth Limit Exceeded
A non-standard status code, sometimes used by hosting providers to indicate a server has exceeded its allocated bandwidth.
Not Extended
Further extensions to the request are required for the server to fulfill it.
Network Authentication Required
The client needs to authenticate with the network before being granted access — common with public Wi-Fi captive portals.
Network Connect Timeout Error
A non-standard status code, sometimes used by proxies and load balancers to indicate the connection to an upstream server timed out.