HTTP status codes reference
The status codes you'll actually run into when testing an API, grouped by what they mean for you as the caller rather than the full IANA registry.
2xx — Success
- 200 OK
- The request succeeded; the response body has the result.
- 201 Created
- A new resource was created — often with a Location header pointing at it.
- 204 No Content
- The request succeeded and there’s intentionally no body (common on DELETE).
3xx — Redirection
- 301 Moved Permanently
- The resource now lives at a different URL — update the client to use it directly.
- 304 Not Modified
- The cached response is still valid; nothing new to fetch.
4xx — Client error
- 400 Bad Request
- The request itself is malformed — check the body/params against what the API expects.
- 401 Unauthorized
- Missing or invalid credentials — the request wasn’t authenticated at all.
- 403 Forbidden
- Authenticated, but not allowed to do this — a permissions problem, not a credentials one.
- 404 Not Found
- No resource exists at this URL — or the API is hiding that it does.
- 409 Conflict
- The request conflicts with the resource’s current state (a duplicate, a stale update).
- 422 Unprocessable Entity
- The request is well-formed but fails validation — a field is invalid, not missing.
- 429 Too Many Requests
- Rate limited — check for a Retry-After header before retrying.
5xx — Server error
- 500 Internal Server Error
- Something failed on the server’s side; the client did nothing identifiably wrong.
- 502 Bad Gateway
- An upstream server the API depends on returned an invalid response.
- 503 Service Unavailable
- The server is temporarily unable to handle the request (overloaded or down for maintenance).
A response viewer that color-codes the status by range makes a 4xx or 5xx hard to miss while you're scanning a list of sent requests.
Frequently asked questions
401 vs 403 — what’s the difference?
401 means the request isn’t authenticated at all (missing or invalid credentials). 403 means it is authenticated, but not allowed to perform this action.
Should I retry a 5xx response?
Often yes, with backoff — 5xx usually signals a transient server-side problem. A 4xx generally won’t succeed on retry until the request itself changes.