QA Toolbox logoQA Toolbox

HTTP Status Code Reference

Searchable reference of HTTP status codes.

100

Continue

The server received the request headers and the client should proceed to send the body.

101

Switching Protocols

The server is switching protocols as requested by the client.

102

Processing

The server has received and is processing the request, but no response is available yet.

103

Early Hints

Used to return some response headers before the final HTTP message.

200

OK

The request succeeded. The meaning depends on the HTTP method used.

201

Created

The request succeeded and a new resource was created.

202

Accepted

The request has been accepted for processing, but processing is not complete.

204

No Content

The request succeeded but returns no body content.

206

Partial Content

The server is delivering only part of the resource due to a range header.

301

Moved Permanently

The resource has been permanently moved to a new URL.

302

Found

The resource resides temporarily under a different URL.

303

See Other

The response can be found under another URL using a GET request.

304

Not Modified

The cached version of the resource is still valid; no need to retransmit.

307

Temporary Redirect

The request should be repeated with another URL, keeping the method.

308

Permanent Redirect

The resource is permanently at another URL, keeping the method.

400

Bad Request

The server cannot process the request due to a client error (e.g. malformed syntax).

401

Unauthorized

Authentication is required and has failed or not been provided.

403

Forbidden

The client is authenticated but does not have permission for the resource.

404

Not Found

The requested resource could not be found on the server.

405

Method Not Allowed

The request method is not supported for the target resource.

408

Request Timeout

The server timed out waiting for the request.

409

Conflict

The request conflicts with the current state of the server.

410

Gone

The resource is no longer available and will not be available again.

415

Unsupported Media Type

The media format of the request data is not supported.

422

Unprocessable Entity

The request was well-formed but has semantic (validation) errors.

429

Too Many Requests

The user has sent too many requests in a given amount of time (rate limiting).

500

Internal Server Error

A generic error occurred on the server.

501

Not Implemented

The server does not support the functionality required to fulfill the request.

502

Bad Gateway

The server, acting as a gateway, received an invalid response from an upstream server.

503

Service Unavailable

The server is not ready to handle the request (overloaded or down for maintenance).

504

Gateway Timeout

The upstream server failed to send a response in time.

505

HTTP Version Not Supported

The HTTP version used in the request is not supported by the server.

About HTTP Status Code Reference

The HTTP Status Code Reference is a searchable catalog of every status code you will meet while testing APIs — what each one means, and the situations where it is the right (or suspiciously wrong) response. Filter by class or search by number or keyword to settle "is 422 appropriate here?" debates in seconds.

For testers, status codes are assertions: the difference between 401 and 403, or 301 and 302, is exactly the kind of contract detail worth a test case. Having the definitions one search away keeps bug reports precise.

How to use

  1. Type a code or keyword into "Search" — for example 429 or "timeout".
  2. Or narrow by "Class" — 2xx success, 3xx redirects, 4xx client errors, 5xx server errors.
  3. Read the description and use the exact semantics in your test assertion or bug report.

Frequently asked questions

What is the difference between 401 and 403?

401 Unauthorized means "not authenticated" — no or invalid credentials; the request may succeed after logging in. 403 Forbidden means "authenticated but not allowed" — better credentials will not help. APIs that mix them up create both confusion and security-test findings.

When should an API return 422 instead of 400?

400 Bad Request suits malformed syntax (broken JSON); 422 Unprocessable Content suits well-formed requests that fail validation (email field with no @). Many APIs use 400 for both — what matters for testing is that the contract is consistent.

Why treat 5xx differently from 4xx in tests?

4xx codes blame the client and are often expected behavior to assert on; any 5xx blames the server and is almost always a defect. A load test that produces 429s is behaving; one that produces 500s has found a bug.

Related tools