Every HTTP response begins with a three-digit status code that tells you, before you read a single byte of
the body, whether the request worked. The first digit sets the category: 2xx succeeded,
4xx means your request was wrong, and 5xx means the server failed. Reading it
correctly is the first step in debugging any API call — you can check it for any endpoint with the
API tester.
1xx — Informational
The request was received and the process is continuing. These are interim responses you rarely handle directly.
| Code | Meaning |
|---|---|
100 Continue | The server received the request headers and the client should proceed to send the request body. |
101 Switching Protocols | The server is switching to a different protocol as requested by the client's Upgrade header. |
102 Processing | The server has accepted the request but has not yet completed it. |
103 Early Hints | The server is sending preliminary headers, typically Link headers for preloading, before the final response. |
2xx — Success
The request was received, understood and accepted.
| Code | Meaning |
|---|---|
200 OK | The request succeeded and the response body contains the result. |
201 Created | The request succeeded and a new resource was created as a result. |
202 Accepted | The request was accepted for processing, but the processing has not finished. |
204 No Content | The request succeeded and there is deliberately no response body. |
206 Partial Content | The server is delivering only part of the resource, as requested by a Range header. |
3xx — Redirection
Further action is needed to complete the request, usually following a different URL.
| Code | Meaning |
|---|---|
300 Multiple Choices | The resource has more than one representation, and the server is leaving the choice to the client. |
301 Moved Permanently | The resource has permanently moved to the URL in the Location header. |
302 Found | The resource is temporarily at a different URL, but future requests should still use the original. |
303 See Other | The response to the request can be found at another URL, and should be retrieved with GET. |
304 Not Modified | The cached copy the client already has is still valid, so no body is sent. |
307 Temporary Redirect | Like 302, but the HTTP method and body must be preserved when following the redirect. |
308 Permanent Redirect | Like 301, but the method and body must be preserved. |
4xx — Client Error
The request contains bad syntax or cannot be fulfilled. Something about the request needs to change.
| Code | Meaning |
|---|---|
400 Bad Request | The server could not understand the request because it is malformed. |
401 Unauthorized | The request lacks valid authentication credentials. Despite the name, this means unauthenticated. |
402 Payment Required | The request cannot be processed until payment is made. |
403 Forbidden | The server understood the request and knows who you are, but refuses to authorise it. |
404 Not Found | The server cannot find the requested resource. |
405 Method Not Allowed | The endpoint exists but does not support the HTTP method you used. |
406 Not Acceptable | The server cannot produce a response matching the client's Accept header. |
407 Proxy Authentication Required | A proxy between you and the server wants credentials before it will forward the request. |
408 Request Timeout | The server timed out waiting for the client to finish sending the request. |
409 Conflict | The request conflicts with the current state of the resource. |
410 Gone | The resource was deliberately removed and will not come back. |
411 Length Required | The server refuses the request because it does not specify a Content-Length header. |
412 Precondition Failed | A condition the client set in the request headers evaluated to false on the server. |
413 Payload Too Large | The request body is larger than the server is willing to process. |
414 URI Too Long | The URL is longer than the server is willing to process. |
415 Unsupported Media Type | The request body is in a format the endpoint does not accept. |
416 Range Not Satisfiable | The Range header asks for a part of the resource that does not exist. |
417 Expectation Failed | The server cannot meet the requirement stated in the request's Expect header. |
418 I'm a teapot | The server refuses to brew coffee because it is, permanently, a teapot. An April Fools' joke that became a reserved status code. |
419 Page Expired | The request failed the CSRF check: its token was missing, wrong, or belonged to a session that has ended. |
421 Misdirected Request | The request reached a server that is not configured to answer for that host name. |
422 Unprocessable Entity | The syntax is valid but the content fails the server's validation rules. |
423 Locked | The resource you are trying to change is locked. |
424 Failed Dependency | The request failed because it depended on another action, and that action failed. |
425 Too Early | The server will not process a request that arrived in TLS early data, because it could be a replay. |
426 Upgrade Required | The server refuses to answer over the current protocol and names the one it wants instead. |
428 Precondition Required | The server requires the request to be conditional. |
429 Too Many Requests | You have sent too many requests in a given amount of time and are being rate limited. |
431 Request Header Fields Too Large | The server refuses to process the request because its headers are too large. |
451 Unavailable For Legal Reasons | The resource is unavailable because of a legal demand. |
499 Client Closed Request | The client closed the connection before the server had finished responding. |
5xx — Server Error
The server failed to fulfil an apparently valid request. The problem is on the server side.
| Code | Meaning |
|---|---|
500 Internal Server Error | The server hit an unexpected condition and could not complete the request. |
501 Not Implemented | The server does not support the functionality required to fulfil the request. |
502 Bad Gateway | A server acting as a gateway or proxy received an invalid response from the upstream server. |
503 Service Unavailable | The server is temporarily unable to handle the request. |
504 Gateway Timeout | A gateway or proxy did not receive a timely response from the upstream server. |
505 HTTP Version Not Supported | The server does not support the major HTTP version named in the request. |
507 Insufficient Storage | The server cannot store the representation needed to complete the request. |
508 Loop Detected | The server found an infinite loop while processing the request and stopped. |
509 Bandwidth Limit Exceeded | The site has used up the data transfer its hosting plan allows. |
511 Network Authentication Required | The network you are on wants you to sign in before it will let traffic through. |
520 Web Server Returned an Unknown Error | Cloudflare reached the origin server and got back something it could not interpret as a valid HTTP response. |
521 Web Server Is Down | Cloudflare tried to connect to the origin server and the connection was refused. |
522 Connection Timed Out | Cloudflare tried to open a TCP connection to the origin server and got no answer in time. |
523 Origin Is Unreachable | Cloudflare could not find a network route to the origin server. |
524 A Timeout Occurred | Cloudflare connected to the origin server, but the origin took too long to send a response. |
525 SSL Handshake Failed | Cloudflare could not complete a TLS handshake with the origin server. |
526 Invalid SSL Certificate | Cloudflare could not validate the TLS certificate presented by the origin server. |
Debugging by status code class
A 4xx means the fix is in your request: check the
method, the URL, the
headers and the body. The most common culprits are a missing
Content-Type, a malformed Authorization header, or a typo in the path.
A 5xx means the fix is on the server, and resending the identical request usually will not
help. Capture the exact request that reproduces it — the API tester's
Copy as cURL button gives you something you can hand straight to whoever owns the API.