HTTP Status Codes
A complete SEO-focused directory of HTTP response status codes with debugging context and technical snippets.
2xx Status Codes
- 200Terminal
OK
The request has succeeded. The information returned via the response depends on the method used in the request.
- 201Terminal
Created
The request has been fulfilled and has resulted in one or more new resources being created.
- 202Terminal
Accepted
The request has been accepted for processing, but the processing has not been completed. The request might or might not be eventually acted upon.
- 204Terminal
No Content
The server has successfully fulfilled the request and that there is no additional content to send in the response payload body.
3xx Status Codes
- 301Retryable
Moved Permanently
This and all future requests should be directed to the given URI.
- 302Retryable
Found
The requested resource resides temporarily under a different URI. Previously known as 'Moved Temporarily'.
- 304Terminal
Not Modified
Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.
- 307Retryable
Temporary Redirect
Similar to 302, but explicitly requires the client to retain the same HTTP method (e.g. POST remains POST) during the redirection.
- 308Retryable
Permanent Redirect
Similar to 301, but explicitly keeps the same HTTP method for the redirection.
4xx Status Codes
- 400Terminal
Bad Request
The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax).
- 401Retryable
Unauthorized
Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided.
- 403Terminal
Forbidden
The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource.
- 404Terminal
Not Found
The requested resource could not be found but may be available in the future.
- 405Terminal
Method Not Allowed
A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST.
- 408Retryable
Request Timeout
The server timed out waiting for the request. The client did not produce a request within the time that the server was prepared to wait.
- 409Terminal
Conflict
Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict.
- 410Terminal
Gone
Indicates that the resource requested is no longer available and will not be available again. This should be used when a resource has been intentionally removed.
- 413Terminal
Payload Too Large
The request is larger than the server is willing or able to process (e.g., uploading a massive image).
- 418Terminal
I'm a teapot
The server refuses the attempt to brew coffee with a teapot. An Easter egg code defined by an April Fools' joke in 1998 (RFC 2324).
- 422Terminal
Unprocessable Entity
The request was well-formed but was unable to be followed due to semantic errors. Very common in robust REST APIs for payload validation errors.
- 429Retryable
Too Many Requests
The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.
5xx Status Codes
- 500Retryable
Internal Server Error
A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.
- 502Retryable
Bad Gateway
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
- 503Retryable
Service Unavailable
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
- 504Retryable
Gateway Timeout
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.