HTTP Status Code Decoded: A Guide to Understanding 200, 201, 202, and 204

Are you confused about the differences between HTTP status codes 200, 201, 202, and 204? You’re not alone! These codes may seem similar, but they actually indicate very different things to web servers and clients. In this article, we’ll break down the nuances of each code and give you some guidelines for when to use them.

Michal Ševčík
4 min readDec 29, 2022

HTTP status codes are an important part of the communication process between web servers and clients. These codes provide a standard way for servers to communicate the status of a request to the client, whether it be a web browser, a mobile app, or a server-to-server API call.

There are many different HTTP status codes, each with its own specific meaning. In this article, we’ll focus on four codes that are often used in web development: 200, 201, 202, and 204.

HTTP Status Code 200: OK

The HTTP status code 200 is the most common status code and indicates that the request was successful. When a client sends a request to a server, the server responds with a status code to let the client know whether the request was successful or not. A status code of 200 means that the request was successful and that the server was able to fulfill it.

For example, if a client sends a GET request to a server to retrieve details of a user, the server might respond with a status code of 200 and the user's details in a JSON format. This tells the client that the request was successful.

Request

GET /users/123 HTTP/1.1
Host: example.com

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
"id": 123,
"name": "John Smith",
"email": "john@example.com"
}

HTTP Status Code 201: Created

The HTTP status code 201 is used to indicate that a request has been fulfilled and that a new resource has been created as a result. This code is typically used in response to a POST request that creates a new resource on the server.

For example, if a client sends a POST request to create a new user account on a server, the server might respond with a status code of 201 and the new user account information. This tells the client that the request was successful and that the new resource has been created.

Request

POST /users HTTP/1.1
Host: example.com
Content-Type: application/json

{
"name": "Jane Doe",
"email": "jane@example.com"
}

Response

HTTP/1.1 201 Created
Content-Type: application/json
Location: /users/124

{
"id": 124,
"name": "Jane Doe",
"email": "jane@example.com"
}

HTTP Status Code 202: Accepted

The HTTP status code 202 is used to indicate that a request has been accepted for processing, but the processing has not yet been completed. This code is often used when a server is processing a request asynchronously and does not have an immediate response.

For example, if a client sends a request to a server to perform a long-running task, such as generating a report, the server might respond with a status code of 202 to indicate that the request has been accepted and is being processed. The client can then check back later to see the status of the task.

Request

POST /reports/generate HTTP/1.1
Host: example.com
Content-Type: application/json

{
"start_date": "2022-01-01",
"end_date": "2022-01-31"
}

Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /reports/123

{
"id": 123,
"status": "processing"
}

The Location header is used to provide a URL that the client can use to check the status of the asynchronous task that was requested. The value of the Location header (/reports/123) is simply a unique identifier for the task and does not necessarily have to correspond to a specific resource on the server.

The Location header is simply a way for the server to provide the client with a way to track the progress of the task. The client can send a request to the URL provided in the Location header to check the status of the task and get any additional information that may be available.

It’s important to note that the Location header is optional in a response with a status code of 202. The server is not required to provide a Location header, but it can be useful in cases where the client needs to track the progress of the task.

HTTP Status Code 204: No Content

The HTTP status code 204 is used to indicate that a request was successful, but there is no content to send back to the client. This code is often used in response to a DELETE request, where the server successfully deletes a resource, but there is no content to return to the client.

For example, if a client sends a DELETE request to delete a user account on a server, the server might respond with a status code of 204 to indicate that the request was successful and the resource was deleted.

Request

DELETE /users/123 HTTP/1.1
Host: example.com

Response

HTTP/1.1 204 No Content

When to Use These Codes

Here are some guidelines for when to use each of these HTTP status codes:

  • Use HTTP status code 200 for successful requests that retrieve or update a resource.
  • Use HTTP status code 201 for successful requests that create a new resource on the server.
  • Use HTTP status code 202 for requests that have been accepted for processing but the processing has not yet been completed.
  • Use HTTP status code 204 for successful requests that delete a resource or do not have any content to return.

It’s important to use the appropriate HTTP status code for each type of request to ensure that clients can correctly interpret the server’s response and take the appropriate action.

In summary, HTTP status codes 200, 201, 202, and 204 all indicate that a request was successful, but each has specific meanings and should be used in different circumstances. By understanding the differences between these codes, you can effectively communicate the status of a request to clients and build robust and reliable web applications.

--

--