DevKit
Reference

HTTP Status Codes

Searchable reference for all HTTP status codes with descriptions.

Last updated: August 2026

CodeNameDescription
100ContinueServer received request headers, client should proceed
101Switching ProtocolsServer agrees to switch protocols (e.g. WebSocket)
200OKRequest succeeded
201CreatedResource created successfully
204No ContentSuccess, no response body
301Moved PermanentlyResource permanently moved to new URL
302FoundResource temporarily at different URL
304Not ModifiedCached version is still valid
307Temporary RedirectRedirect preserving method
308Permanent RedirectPermanent redirect preserving method
400Bad RequestMalformed request syntax or invalid parameters
401UnauthorizedAuthentication required
403ForbiddenServer refuses to authorize the request
404Not FoundResource does not exist
405Method Not AllowedHTTP method not supported for this resource
409ConflictRequest conflicts with current server state
413Payload Too LargeRequest body exceeds server limit
415Unsupported Media TypeContent-Type not supported
422Unprocessable EntityValid syntax but semantic errors
429Too Many RequestsRate limit exceeded
500Internal Server ErrorUnexpected server error
502Bad GatewayInvalid response from upstream server
503Service UnavailableServer temporarily overloaded or in maintenance
504Gateway TimeoutUpstream server timed out
Share:

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-path

FAQ

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.