HTTP Status Code Reference
Search every HTTP status code with a plain-English explanation
Continue
The initial part of a request has been received and the client should continue sending the rest.
Switching Protocols
The server agrees to switch protocols as requested by the client, e.g. upgrading an HTTP connection to WebSocket.
Processing
WebDAV: the server has accepted a request but processing will take a while, sent to prevent the client from timing out.
Early Hints
Lets the client start preloading resources (e.g. via Link headers) while the server is still preparing the final response.
OK
The request succeeded. The meaning depends on the method — GET returns the resource, POST returns the result of the action.
Created
The request succeeded and a new resource was created, typically in response to a POST or PUT.
Accepted
The request was accepted for processing, but that processing isn't complete yet and may not succeed.
Non-Authoritative Information
The request succeeded, but the returned metadata came from a transforming proxy rather than the origin server.
No Content
The request succeeded but there is no content to send — commonly returned after a successful DELETE or an action-only POST.
Reset Content
The request succeeded and the client should reset the document view that sent the request, e.g. clear a form.
Partial Content
The server is delivering only part of the resource in response to a Range header — used for resumable downloads and media streaming.
Multi-Status
WebDAV: the response body is an XML document describing the status of multiple independent sub-operations.
Already Reported
WebDAV: avoids repeatedly enumerating the members of a binding that were already reported in a previous 207 response.
IM Used
The server fulfilled a GET request and the response is a representation of the result of one or more instance manipulations.
Multiple Choices
The request has more than one possible response and the client (or user) should choose one — rarely used in practice.
Moved Permanently
The resource has permanently moved to a new URL given in the Location header; clients should update their bookmarks/links.
Found
The resource temporarily resides at a different URL. Historically often misused for what 303/307 now express more precisely.
See Other
The response to the request can be found at another URL using a GET request — the standard "redirect after POST" status.
Not Modified
The resource hasn't changed since the value in the request's conditional headers (e.g. If-None-Match) — the client should use its cached copy.
Use Proxy
Deprecated: the requested resource must be accessed through the proxy given in the Location header. Disabled in most modern clients for security reasons.
Temporary Redirect
Like 302, but guarantees the request method and body are repeated on the new URL rather than potentially changing to GET.
Permanent Redirect
Like 301, but guarantees the request method and body are repeated on the new URL rather than potentially changing to GET.
Bad Request
The server can't process the request due to a client error — malformed syntax, invalid request framing, or bad input.
Unauthorized
The request requires authentication, and either none was supplied or what was supplied is invalid. Despite the name, this is about authentication, not authorization.
Payment Required
Reserved for future use — historically intended for digital payment systems. Occasionally repurposed by APIs to signal a billing/quota issue.
Forbidden
The server understood the request but refuses to authorize it — the client's identity is known but it lacks permission for this resource.
Not Found
The server can't find the requested resource. Often also returned deliberately when a resource exists but the server doesn't want to reveal that.
Method Not Allowed
The request method (e.g. DELETE) is known to the server but isn't supported for this particular resource.
Not Acceptable
The server can't produce a response matching the Accept headers sent by the client, and no default representation is available.
Proxy Authentication Required
Like 401, but authentication needs to happen against a proxy sitting between the client and the server.
Request Timeout
The server timed out waiting for the request — the client took too long to send it.
Conflict
The request conflicts with the current state of the resource — e.g. an edit based on stale data, or a duplicate resource creation.
Gone
The resource used to exist but has been permanently removed, with no forwarding address — a more deliberate signal than a plain 404.
Length Required
The server refuses to accept the request because a required Content-Length header is missing.
Precondition Failed
A condition set in a conditional request header (e.g. If-Match) evaluated to false — commonly used for optimistic concurrency control.
Content Too Large
The request body is larger than the server is willing or able to process (formerly "Payload Too Large").
URI Too Long
The requested URL is longer than the server is willing to interpret — often caused by putting too much data in a GET query string.
Unsupported Media Type
The request body's media type (Content-Type) isn't one the server/endpoint supports.
Range Not Satisfiable
The Range header requested a byte range that the target resource doesn't have — usually because it's outside the size of the resource.
Expectation Failed
The expectation given in the request's Expect header couldn't be met by the server.
I'm a Teapot
An April Fools' joke from RFC 2324 (the Hyper Text Coffee Pot Control Protocol) — a teapot asked to brew coffee refuses. Still implemented by some servers for fun.
Misdirected Request
The request was sent to a server that isn't able to produce a response for the combination of scheme and authority in the URI.
Unprocessable Content
The request is well-formed but semantically invalid — the classic status for "your JSON parsed fine but failed validation."
Locked
WebDAV: the resource being accessed is locked.
Failed Dependency
WebDAV: the request failed because a previous request it depended on in the same batch also failed.
Too Early
The server is unwilling to process a request that might be replayed, sent when the request was made using TLS early data (0-RTT).
Upgrade Required
The server refuses to service the request using the current protocol, but might if the client upgrades (see the Upgrade header).
Precondition Required
The server requires the request to be conditional (e.g. carry an If-Match header) to avoid the "lost update" problem.
Too Many Requests
The client has sent too many requests in a given time window (rate limiting) — often paired with a Retry-After header.
Request Header Fields Too Large
The server won't process the request because its header fields are too large, individually or in total.
Unavailable For Legal Reasons
The resource is unavailable due to a legal demand, e.g. government-mandated content blocking (named after Ray Bradbury's Fahrenheit 451).
Internal Server Error
A generic catch-all: the server encountered an unexpected condition that prevented it from fulfilling the request.
Not Implemented
The server doesn't support the functionality required to fulfill the request — often used when a method isn't recognized at all.
Bad Gateway
A server acting as a gateway or proxy received an invalid response from an upstream server it was trying to reach.
Service Unavailable
The server isn't ready to handle the request — commonly due to maintenance or overload. Often paired with a Retry-After header.
Gateway Timeout
A server acting as a gateway or proxy didn't get a response from the upstream server in time.
HTTP Version Not Supported
The server doesn't support the HTTP protocol version used in the request.
Variant Also Negotiates
The server has an internal configuration error: the chosen variant resource is itself configured to engage in content negotiation.
Insufficient Storage
WebDAV: the server can't store the representation needed to complete the request due to a lack of storage space.
Loop Detected
WebDAV: the server detected an infinite loop while processing a request (e.g. a circular reference between bindings).
Not Extended
Further extensions to the request are required for the server to fulfill it.
Network Authentication Required
The client needs to authenticate to gain network access — typically returned by a captive portal rather than the destination server.