200 OK

The request succeeded. What the body contains depends on the method that was used.

Status

HTTP/1.1 200 OK

Details

200 is the default success response. The meaning of the payload follows the request method: for GET it is the representation of the target resource, for HEAD it is the same headers with no body, for POST it is the result of the action, and for PUT or DELETE it is a status description rather than the resource itself.

A 200 says nothing about the content being correct or complete. Applications routinely return 200 with an error object in the body, which is legal but hostile to caches, monitoring, and retry logic. If the request failed, use the code that says so.

Note: A 200 describes the exchange, not your business logic. An API that reports failures inside a 200 body defeats caching, monitoring, and client retry logic, all of which read the status line.

Headers

Common causes

Usage notes

For clients

For servers

Examples

Fetching a resource

A conditional-request-friendly GET against a JSON API:

HTTP request

GET /api/orders/8814 HTTP/1.1
Host: api.example.com
Accept: application/json

The server returns the representation, along with an ETag so the next fetch can be answered with 304:

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 87
ETag: "8f4c1a"
Cache-Control: private, max-age=60

{"id":8814,"status":"active","ips":4,"renews_at":"2026-09-01T00:00:00Z"}

Notes for proxy users

A 200 does not prove a scrape worked. Anti-bot systems commonly answer automated traffic with a 200 carrying a challenge or an empty shell page, so validate content and not just the status line when testing a proxy pool.

Specifications

See also