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.

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
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.
304 Not ModifiedThe cached copy the client already has is still valid, so no body is sent.
303 See OtherThe response to the request can be found at another URL, and should be retrieved with GET.
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.
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.
413 Payload Too LargeThe request body is larger than the server is willing to process.
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.
415 Unsupported Media TypeThe request body is in a format the endpoint does not accept.
422 Unprocessable EntityThe syntax is valid but the content fails the server's validation rules.
429 Too Many RequestsYou have sent too many requests in a given amount of time and are being rate limited.
428 Precondition RequiredThe server requires the request to be conditional.
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.

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.
507 Insufficient StorageThe server cannot store the representation needed to complete the request.

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.