The request succeeded. The server returned the requested data.
HTTP Status Codes
Every important HTTP status code explained in plain English — what it means, when you'll see it, and a real-world example. Essential vocabulary for backend developers, QA engineers, and anyone who reads API logs.
401 Unauthorized = "I don't know who you are." The client must authenticate (provide credentials).
403 Forbidden = "I know who you are — but you're not allowed to do this." The user is logged in but lacks permission.
The name "Unauthorized" for 401 is misleading — it actually means unauthenticated.
2xx Success
A new resource was successfully created.
The request succeeded, but there is no response body to return.
The server is delivering only part of the resource.
3xx Redirection
The resource has permanently moved to a new URL.
The resource is temporarily at a different URL.
The resource has not changed since the client last fetched it — use your cached version.
4xx Client Error
The server could not understand the request because of invalid syntax.
The request requires authentication. The client must identify itself.
The server understood the request but refuses to authorise it.
The requested resource does not exist at this URL.
The HTTP method used is not supported for this endpoint.
The request conflicts with the current state of the resource.
The request is well-formed, but the server cannot process it because of semantic errors.
The client has sent too many requests in a given time window (rate limiting).
5xx Server Error
Something went wrong on the server. The server encountered an unexpected condition.
The server was acting as a gateway and received an invalid response from upstream.
The server is temporarily unable to handle the request.
The server was acting as a gateway and did not receive a timely response from upstream.
Quick Reference
| Code | Name | Plain English |
|---|---|---|
| 200 | OK | The request succeeded. The server returned the requested data. |
| 201 | Created | A new resource was successfully created. |
| 204 | No Content | The request succeeded, but there is no response body to return. |
| 206 | Partial Content | The server is delivering only part of the resource. |
| 301 | Moved Permanently | The resource has permanently moved to a new URL. |
| 302 | Found | The resource is temporarily at a different URL. |
| 304 | Not Modified | The resource has not changed since the client last fetched it — use your cached version. |
| 400 | Bad Request | The server could not understand the request because of invalid syntax. |
| 401 | Unauthorized | The request requires authentication. The client must identify itself. |
| 403 | Forbidden | The server understood the request but refuses to authorise it. |
| 404 | Not Found | The requested resource does not exist at this URL. |
| 405 | Method Not Allowed | The HTTP method used is not supported for this endpoint. |
| 409 | Conflict | The request conflicts with the current state of the resource. |
| 422 | Unprocessable Entity | The request is well-formed, but the server cannot process it because of semantic errors. |
| 429 | Too Many Requests | The client has sent too many requests in a given time window (rate limiting). |
| 500 | Internal Server Error | Something went wrong on the server. The server encountered an unexpected condition. |
| 502 | Bad Gateway | The server was acting as a gateway and received an invalid response from upstream. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request. |
| 504 | Gateway Timeout | The server was acting as a gateway and did not receive a timely response from upstream. |