HTTP Status Codes

A complete reference to HTTP response status codes — what each one means, when an API returns it, and how to fix it. Every code links to a detailed page with practical debugging steps.

Last updated . How this page is checked.

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.

CodeMeaning
100 ContinueThe server received the request headers and the client should proceed to send the request body.
101 Switching ProtocolsThe server is switching to a different protocol as requested by the client's Upgrade header.
102 ProcessingThe server has accepted the request but has not yet completed it.
103 Early HintsThe server is sending preliminary headers, typically Link headers for preloading, before the final response.

2xx — Success

The request was received, understood and accepted.

CodeMeaning
200 OKThe request succeeded and the response body contains the result.
201 CreatedThe request succeeded and a new resource was created as a result.
202 AcceptedThe request was accepted for processing, but the processing has not finished.
204 No ContentThe request succeeded and there is deliberately no response body.
206 Partial ContentThe 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.

CodeMeaning
300 Multiple ChoicesThe resource has more than one representation, and the server is leaving the choice to the client.
301 Moved PermanentlyThe resource has permanently moved to the URL in the Location header.
302 FoundThe resource is temporarily at a different URL, but future requests should still use the original.
303 See OtherThe response to the request can be found at another URL, and should be retrieved with GET.
304 Not ModifiedThe cached copy the client already has is still valid, so no body is sent.
307 Temporary RedirectLike 302, but the HTTP method and body must be preserved when following the redirect.
308 Permanent RedirectLike 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.

CodeMeaning
400 Bad RequestThe server could not understand the request because it is malformed.
401 UnauthorizedThe request lacks valid authentication credentials. Despite the name, this means unauthenticated.
402 Payment RequiredThe request cannot be processed until payment is made.
403 ForbiddenThe server understood the request and knows who you are, but refuses to authorise it.
404 Not FoundThe server cannot find the requested resource.
405 Method Not AllowedThe endpoint exists but does not support the HTTP method you used.
406 Not AcceptableThe server cannot produce a response matching the client's Accept header.
407 Proxy Authentication RequiredA proxy between you and the server wants credentials before it will forward the request.
408 Request TimeoutThe server timed out waiting for the client to finish sending the request.
409 ConflictThe request conflicts with the current state of the resource.
410 GoneThe resource was deliberately removed and will not come back.
411 Length RequiredThe server refuses the request because it does not specify a Content-Length header.
412 Precondition FailedA condition the client set in the request headers evaluated to false on the server.
413 Payload Too LargeThe request body is larger than the server is willing to process.
414 URI Too LongThe URL is longer than the server is willing to process.
415 Unsupported Media TypeThe request body is in a format the endpoint does not accept.
416 Range Not SatisfiableThe Range header asks for a part of the resource that does not exist.
417 Expectation FailedThe server cannot meet the requirement stated in the request's Expect header.
418 I'm a teapotThe server refuses to brew coffee because it is, permanently, a teapot. An April Fools' joke that became a reserved status code.
419 Page ExpiredThe request failed the CSRF check: its token was missing, wrong, or belonged to a session that has ended.
421 Misdirected RequestThe request reached a server that is not configured to answer for that host name.
422 Unprocessable EntityThe syntax is valid but the content fails the server's validation rules.
423 LockedThe resource you are trying to change is locked.
424 Failed DependencyThe request failed because it depended on another action, and that action failed.
425 Too EarlyThe server will not process a request that arrived in TLS early data, because it could be a replay.
426 Upgrade RequiredThe server refuses to answer over the current protocol and names the one it wants instead.
428 Precondition RequiredThe server requires the request to be conditional.
429 Too Many RequestsYou have sent too many requests in a given amount of time and are being rate limited.
431 Request Header Fields Too LargeThe server refuses to process the request because its headers are too large.
451 Unavailable For Legal ReasonsThe resource is unavailable because of a legal demand.
499 Client Closed RequestThe 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.

CodeMeaning
500 Internal Server ErrorThe server hit an unexpected condition and could not complete the request.
501 Not ImplementedThe server does not support the functionality required to fulfil the request.
502 Bad GatewayA server acting as a gateway or proxy received an invalid response from the upstream server.
503 Service UnavailableThe server is temporarily unable to handle the request.
504 Gateway TimeoutA gateway or proxy did not receive a timely response from the upstream server.
505 HTTP Version Not SupportedThe server does not support the major HTTP version named in the request.
507 Insufficient StorageThe server cannot store the representation needed to complete the request.
508 Loop DetectedThe server found an infinite loop while processing the request and stopped.
509 Bandwidth Limit ExceededThe site has used up the data transfer its hosting plan allows.
511 Network Authentication RequiredThe network you are on wants you to sign in before it will let traffic through.
520 Web Server Returned an Unknown ErrorCloudflare reached the origin server and got back something it could not interpret as a valid HTTP response.
521 Web Server Is DownCloudflare tried to connect to the origin server and the connection was refused.
522 Connection Timed OutCloudflare tried to open a TCP connection to the origin server and got no answer in time.
523 Origin Is UnreachableCloudflare could not find a network route to the origin server.
524 A Timeout OccurredCloudflare connected to the origin server, but the origin took too long to send a response.
525 SSL Handshake FailedCloudflare could not complete a TLS handshake with the origin server.
526 Invalid SSL CertificateCloudflare 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.