HTTP Status Codes Reference
Complete searchable reference for all HTTP status codes and their meanings.
1xx Informational
| Code | Name | Description |
|---|---|---|
| 100 | Continue |
The server has received the request headers and the client should proceed to send the request body. |
| 101 | Switching Protocols |
The requester has asked the server to switch protocols and the server has agreed to do so. |
| 102 | Processing |
The server has received and is processing the request, but no response is available yet. |
| 103 | Early Hints |
Used to return some response headers before final HTTP message. |
2xx Success
| Code | Name | Description |
|---|---|---|
| 200 | OK |
The request has succeeded. The meaning of the success depends on the HTTP method. |
| 201 | Created |
The request has been fulfilled and resulted in a new resource being created. |
| 202 | Accepted |
The request has been accepted for processing, but the processing has not been completed. |
| 203 | Non-Authoritative Information |
The returned metainformation is from a local or third-party copy, not from the origin server. |
| 204 | No Content |
The server successfully processed the request but is not returning any content. |
| 205 | Reset Content |
The server successfully processed the request, but is not returning any content and requires the requester to reset the document view. |
| 206 | Partial Content |
The server is delivering only part of the resource due to a range header sent by the client. |
| 207 | Multi-Status |
The message body that follows is an XML message and can contain a number of separate response codes. |
| 208 | Already Reported |
The members of a DAV binding have already been enumerated in a previous reply to this request. |
| 226 | IM Used |
The server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance. |
3xx Redirection
| Code | Name | Description |
|---|---|---|
| 300 | Multiple Choices |
Indicates multiple options for the resource that the client may follow. |
| 301 | Moved Permanently |
The resource has been moved permanently to a new URI, and all future requests should use the new URI. |
| 302 | Found |
The resource resides temporarily under a different URI. |
| 303 | See Other |
The response to the request can be found under a different URI using a GET method. |
| 304 | Not Modified |
The resource has not been modified since the version specified by the request headers. |
| 305 | Use Proxy |
The requested resource must be accessed through the proxy given by the Location field. |
| 307 | Temporary Redirect |
The request should be repeated with another URI but future requests should still use the original URI. |
| 308 | Permanent Redirect |
The request and all future requests should be repeated using another URI. |
4xx Client Error
| Code | Name | Description |
|---|---|---|
| 400 | Bad Request |
The server cannot or will not process the request due to a client error (e.g., malformed request syntax). |
| 401 | Unauthorized |
Authentication is required and has failed or has not yet been provided. |
| 402 | Payment Required |
Reserved for future use. Originally intended for digital payment systems. |
| 403 | Forbidden |
The server understood the request but refuses to authorize it. |
| 404 | Not Found |
The requested resource could not be found but may be available in the future. |
| 405 | Method Not Allowed |
The request method is not supported for the requested resource. |
| 406 | Not Acceptable |
The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request. |
| 407 | Proxy Authentication Required |
The client must first authenticate itself with the proxy. |
| 408 | Request Timeout |
The server timed out waiting for the request. |
| 409 | Conflict |
The request could not be processed because of conflict in the current state of the resource. |
| 410 | Gone |
The resource is no longer available and will not be available again. |
| 411 | Length Required |
The request did not specify the length of its content, which is required by the requested resource. |
| 412 | Precondition Failed |
The server does not meet one of the preconditions specified in the request. |
| 413 | Payload Too Large |
The request is larger than the server is willing or able to process. |
| 414 | URI Too Long |
The URI provided was too long for the server to process. |
| 415 | Unsupported Media Type |
The request entity has a media type which the server or resource does not support. |
| 416 | Range Not Satisfiable |
The client has asked for a portion of the file, but the server cannot supply that portion. |
| 417 | Expectation Failed |
The server cannot meet the requirements of the Expect request-header field. |
| 418 | I'm a teapot |
This code was defined in 1998 as an April Fools' joke. It is not expected to be implemented by actual HTTP servers. |
| 421 | Misdirected Request |
The request was directed at a server that is not able to produce a response. |
| 422 | Unprocessable Entity |
The request was well-formed but was unable to be followed due to semantic errors. |
| 423 | Locked |
The resource that is being accessed is locked. |
| 424 | Failed Dependency |
The request failed due to failure of a previous request. |
| 425 | Too Early |
The server is unwilling to risk processing a request that might be replayed. |
| 426 | Upgrade Required |
The client should switch to a different protocol. |
| 428 | Precondition Required |
The origin server requires the request to be conditional. |
| 429 | Too Many Requests |
The user has sent too many requests in a given amount of time. |
| 431 | Request Header Fields Too Large |
The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large. |
| 451 | Unavailable For Legal Reasons |
The server is denying access to the resource as a consequence of a legal demand. |
5xx Server Error
| Code | Name | Description |
|---|---|---|
| 500 | Internal Server Error |
A generic error message when the server encounters an unexpected condition. |
| 501 | Not Implemented |
The server either does not recognize the request method, or it lacks the ability to fulfill the request. |
| 502 | Bad Gateway |
The server was acting as a gateway or proxy and received an invalid response from the upstream server. |
| 503 | Service Unavailable |
The server is currently unavailable (overloaded or down for maintenance). |
| 504 | Gateway Timeout |
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server. |
| 505 | HTTP Version Not Supported |
The server does not support the HTTP protocol version used in the request. |
| 506 | Variant Also Negotiates |
Transparent content negotiation for the request results in a circular reference. |
| 507 | Insufficient Storage |
The server is unable to store the representation needed to complete the request. |
| 508 | Loop Detected |
The server detected an infinite loop while processing the request. |
| 510 | Not Extended |
Further extensions to the request are required for the server to fulfill it. |
| 511 | Network Authentication Required |
The client needs to authenticate to gain network access. |
Understanding HTTP Status Codes
HTTP status codes are three-digit numbers returned by servers to indicate the result of a client's request. They're divided into five categories.
Status Code Categories:
1xx Informational
The request was received and is being processed. These are provisional responses.
- 100 Continue: Server received request headers, client should send body
- 101 Switching Protocols: Server is switching protocols as requested
2xx Success
The request was successfully received, understood, and accepted.
- 200 OK: Standard success response
- 201 Created: Resource created successfully
- 204 No Content: Success with no response body
3xx Redirection
Further action must be taken to complete the request.
- 301 Moved Permanently: Resource permanently moved to new URL
- 302 Found: Resource temporarily at different URL
- 304 Not Modified: Cached version is still valid
4xx Client Error
The request contains bad syntax or cannot be fulfilled by the server.
- 400 Bad Request: Malformed request syntax
- 401 Unauthorized: Authentication required
- 403 Forbidden: Server refuses to authorize
- 404 Not Found: Resource doesn't exist
- 429 Too Many Requests: Rate limit exceeded
5xx Server Error
The server failed to fulfill a valid request.
- 500 Internal Server Error: Generic server error
- 502 Bad Gateway: Invalid response from upstream server
- 503 Service Unavailable: Server temporarily unavailable
- 504 Gateway Timeout: Upstream server timeout
Common Use Cases by Status Code:
RESTful API Design:
- GET request success: 200 OK
- POST create resource: 201 Created
- PUT/PATCH update: 200 OK or 204 No Content
- DELETE resource: 200 OK or 204 No Content
- Validation error: 400 Bad Request or 422 Unprocessable Entity
- Unauthorized: 401 Unauthorized
- Forbidden: 403 Forbidden
- Not found: 404 Not Found
Status Code Decision Tree:
Is the request valid?
├─ No → 4xx Client Error (400, 401, 403, 404, etc.)
└─ Yes → Did the server process it successfully?
├─ No → 5xx Server Error (500, 502, 503, etc.)
└─ Yes → Does it need redirection?
├─ Yes → 3xx Redirection (301, 302, 304, etc.)
└─ No → 2xx Success (200, 201, 204, etc.)
Fun Facts:
- 418 I'm a teapot: April Fools' joke from 1998, part of Hyper Text Coffee Pot Control Protocol
- 451 Unavailable For Legal Reasons: Named after Fahrenheit 451 (book burning)
- Most common: 200 (OK), 404 (Not Found), and 500 (Internal Server Error)
Testing Status Codes:
Use httpbin.org to test different status codes:
curl https://httpbin.org/status/200 # Returns 200 OK curl https://httpbin.org/status/404 # Returns 404 Not Found curl https://httpbin.org/status/500 # Returns 500 Internal Server Error
Related Tools:
- API Response Mocker - Mock responses with custom status codes
- Webhook Tester - Test API webhooks
- cURL to Code Converter - Convert API requests
- Rate Limit Calculator - Handle 429 responses
- CORS Tester - Debug CORS issues