HTTP Error Reference
Common HTTP error status codes explained with causes, fixes, and monitoring tips
4xx Client Errors
Client errors indicate the request was invalid or cannot be fulfilled. These are usually caused by bad requests, authentication issues, or missing resources.
A 400 Bad Request error means the server cannot process the request because the client sent something invalid or malformed. This could be due to corrupted syntax, invalid request framing, or deceptive routing. For developers, it typically indicates a problem with how the request was constructed, such as missing required fields, malformed JSON, or invalid query parameters.
A 401 Unauthorized error means the request lacks valid authentication credentials for the target resource. Despite the name, this error is about authentication (proving who you are), not authorization (what you are allowed to do). For developers, it signals that the request did not include a valid token, API key, or session credential, or that the provided credentials have expired.
A 403 Forbidden error means the server understood the request but refuses to authorize it. Unlike a 401, the client's identity may be known, but they do not have permission to access the resource. For end users, this typically means you are logged in but your account does not have the required role or privilege to view the page or perform the action.
A 404 Not Found error means the server cannot find the resource at the requested URL. The server is reachable, but the specific page, file, or API endpoint does not exist or is no longer available. For end users, this usually means the link you followed is broken, the page was moved or deleted, or there is a typo in the URL.
A 405 Method Not Allowed error means the HTTP method used in the request (GET, POST, PUT, DELETE, etc.) is not supported for the target resource. The server recognizes the method but the resource does not allow it. For developers, this often indicates a mismatch between the client code and the API specification, such as sending a POST to a read-only endpoint.
A 408 Request Timeout error means the server waited too long for the client to complete sending the request and closed the connection. This is different from a 504 Gateway Timeout, which involves a server-side delay. For end users, this typically means your internet connection was too slow or interrupted while the browser was sending data to the server.
A 409 Conflict error means the request could not be completed because it conflicts with the current state of the target resource. This is commonly seen when trying to create a resource that already exists, or when concurrent edits collide. For developers, it signals that the client should resolve the conflict, typically by fetching the latest state and retrying.
A 422 Unprocessable Entity error means the server understands the request format and syntax, but cannot process the contained instructions due to semantic errors. Unlike a 400, the request is well-formed, but the data fails business logic validation. For developers, this is commonly returned when form input or API payload values are invalid, such as an email field containing a non-email string.
A 429 Too Many Requests error means the user has sent too many requests in a given amount of time and is being rate limited. The server is protecting itself from being overwhelmed by throttling the client. For developers, this indicates your application needs to slow down, implement backoff strategies, and respect the rate limits published by the API provider.
5xx Server Errors
Server errors indicate something went wrong on the server side. These are critical issues that need immediate attention and monitoring.
An HTTP 500 Internal Server Error indicates that the server encountered an unexpected condition that prevented it from fulfilling the request. This is a generic catch-all response when no more specific server error applies. End users see this when something goes wrong on the server side, while developers should check application logs for the underlying exception or fault.
An HTTP 502 Bad Gateway error means that a server acting as a gateway or proxy received an invalid or incomplete response from an upstream server it contacted to fulfill the request. This commonly occurs in architectures where a reverse proxy like Nginx or a load balancer sits in front of application servers. End users see a failed page load, while developers need to investigate the communication between the proxy and the backend.
An HTTP 503 Service Unavailable error indicates that the server is temporarily unable to handle the request, usually due to being overloaded or undergoing maintenance. Unlike a 500 error, a 503 implies the condition is temporary and the server is expected to recover. End users should try again later, while developers should investigate capacity and deployment status.
An HTTP 504 Gateway Timeout error means that a server acting as a gateway or proxy did not receive a timely response from the upstream server it needed to access to complete the request. This is distinct from a 502 in that the upstream server did not respond at all within the allowed time, rather than sending a bad response. End users experience a long wait followed by an error, while developers should investigate latency in the backend.
Monitor HTTP errors automatically
Checkend captures HTTP errors with full context—request details, stack traces, and more. Self-hosted, so your error data stays on your servers.