HTTP Status Codes
Searchable reference for all HTTP status codes with descriptions.
Last updated: August 2026
| Code | Name | Description |
|---|---|---|
| 100 | Continue | Server received request headers, client should proceed |
| 101 | Switching Protocols | Server agrees to switch protocols (e.g. WebSocket) |
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 204 | No Content | Success, no response body |
| 301 | Moved Permanently | Resource permanently moved to new URL |
| 302 | Found | Resource temporarily at different URL |
| 304 | Not Modified | Cached version is still valid |
| 307 | Temporary Redirect | Redirect preserving method |
| 308 | Permanent Redirect | Permanent redirect preserving method |
| 400 | Bad Request | Malformed request syntax or invalid parameters |
| 401 | Unauthorized | Authentication required |
| 403 | Forbidden | Server refuses to authorize the request |
| 404 | Not Found | Resource does not exist |
| 405 | Method Not Allowed | HTTP method not supported for this resource |
| 409 | Conflict | Request conflicts with current server state |
| 413 | Payload Too Large | Request body exceeds server limit |
| 415 | Unsupported Media Type | Content-Type not supported |
| 422 | Unprocessable Entity | Valid syntax but semantic errors |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Unexpected server error |
| 502 | Bad Gateway | Invalid response from upstream server |
| 503 | Service Unavailable | Server temporarily overloaded or in maintenance |
| 504 | Gateway Timeout | Upstream server timed out |
Was this tool helpful?
Reading HTTP status codes by class
Every HTTP response carries a three-digit status code whose first digit sets the category. 2xx means success,3xx means redirection, 4xx means the client sent something wrong, and 5xx means the server failed while handling an otherwise valid request. That first digit alone tells you which side to go looking at when something breaks.
The pairs people confuse
404 versus 500: a 404 says the resource was not found, which is a client-facing "this does not exist" and often expected. A 500 is an unhandled error inside your code; it points at a bug or a crashed dependency, not at the request. Treat a spike in 500s as an incident; a 404 is usually a bad link.
301 versus 302: a 301 is a permanent redirect, so browsers and search engines cache it and update bookmarks and link equity to the new URL. A 302 (or the clearer 307) is temporary, telling clients the move is not forever and the original URL still owns the resource. Shipping a 301 by accident is painful because clients keep using the cached target long after you revert.
Example
A redirect response as seen on the wire:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-pathFAQ
When should an API return 401 vs 403? 401 means you are not authenticated, so logging in might fix it. 403 means you are authenticated but not allowed, so logging in again will not help.
What is 429 for? Too Many Requests signals rate limiting. A well-behaved server adds a Retry-After header telling the client how long to wait before trying again.
Is 204 an error? No. 204 No Content is a success with an intentionally empty body, common after a successful DELETE or an update that returns nothing.