200 Success 📋

200 OK: The Standard Success Response

Last updated: June 28, 2026 • 5 min read

✦ The Golden Answer: The 200 OK status code is the most common HTTP response. It means the request was received, understood, and processed successfully. The response body contains the requested resource (for GET), the result of an action (for POST, PUT, etc.), or an error message (for some APIs) — but the status indicates success at the protocol level.

When Is 200 OK Used?

  • GET – returns the requested resource in the body (e.g., HTML page, JSON data, image).
  • POST – returns the result of a resource creation or an action (e.g., newly created object, confirmation).
  • PUT – returns the updated representation or a confirmation.
  • DELETE – often returns 204 No Content, but some APIs return 200 with a status message.

Example Responses

HTTP MethodResponse Body ExampleContent-Type
GET<html><body>Hello World</body></html>text/html
POST (JSON API){"id":123, "status":"created"}application/json
PUT (update){"updated":true, "resource":"/users/123"}application/json

When Not to Use 200 OK

  • If the request was invalid → use 400 Bad Request.
  • If the resource was not found → use 404 Not Found.
  • If the server is overloaded → use 503 Service Unavailable.
  • If the client should not expect a body → use 204 No Content (e.g., successful DELETE).
  • If a new resource was created → prefer 201 Created with a Location header.

Caching and 200 OK

Responses with 200 OK are usually cacheable unless the server sends Cache-Control: no-store or similar headers. For static assets, 200 with a Cache-Control: max-age can significantly improve performance.

Frequently Asked Questions

Is 200 OK always good news?

At the HTTP level, yes — it means the server successfully processed the request. However, the application logic inside the response body might indicate an error (e.g., { "success": false, "error": "Invalid input" }). This is a common pattern in APIs but violates the spirit of using proper HTTP status codes.

What's the difference between 200 OK and 201 Created?

201 Created is used specifically when a new resource is created as a result of the request (typically POST or PUT). It should include a Location header pointing to the new resource. 200 OK is for general successful requests that don't create a new resource.

Can 200 OK have an empty body?

Technically yes, but it's better practice to use 204 No Content if there's no body. Some older clients may not support 204 correctly, so some APIs fall back to 200 with an empty body or {"status":"ok"}.