HTTP Status Codes - REST API Tutorial (2024)

REST APIs use the Status-Line part of an HTTP response message to inform clients of their request’s overarching result. RFC 2616 defines the Status-Line syntax as shown below:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP defines these standard status codes that can be used to convey the results of a client’s request. The status codes are divided into five categories.

  • 1xx: Informational – Communicates transfer protocol-level information.
  • 2xx: Success – Indicates that the client’s request was accepted successfully.
  • 3xx: Redirection – Indicates that the client must take some additional action in order to complete their request.
  • 4xx: Client Error – This category of error status codes points the finger at clients.
  • 5xx: Server Error – The server takes responsibility for these error status codes.

1xx Status Codes [Informational]

Status CodeDescription
100 ContinueAn interim response. Indicates to the client that the initial part of the request has been received and has not yet been rejected by the server. The client SHOULD continue by sending the remainder of the request or, if the request has already been completed, ignore this response. The server MUST send a final response after the request has been completed.
101 Switching ProtocolSent in response to an Upgrade request header from the client, and indicates the protocol the server is switching to.
102 Processing (WebDAV)Indicates that the server has received and is processing the request, but no response is available yet.
103 Early HintsPrimarily intended to be used with the Link header. It suggests the user agent start preloading the resources while the server prepares a final response.

2xx Status Codes [Success]

Status CodeDescription
200 OKIndicates that the request has succeeded.
201 CreatedIndicates that the request has succeeded and a new resource has been created as a result.
202 AcceptedIndicates that the request has been received but not completed yet. It is typically used in log running requests and batch processing.
203 Non-Authoritative InformationIndicates that the returned metainformation in the entity-header is not the definitive set as available from the origin server, but is gathered from a local or a third-party copy. The set presented MAY be a subset or superset of the original version.
204 No ContentThe server has fulfilled the request but does not need to return a response body. The server may return the updated meta information.
205 Reset ContentIndicates the client to reset the document which sent this request.
206 Partial ContentIt is used when the Range header is sent from the client to request only part of a resource.
207 Multi-Status (WebDAV)An indicator to a client that multiple operations happened, and that the status for each operation can be found in the body of the response.
208 Already Reported (WebDAV)Allows a client to tell the server that the same resource (with the same binding) was mentioned earlier. It never appears as a true HTTP response code in the status line, and only appears in bodies.
226 IM UsedThe server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.

3xx Status Codes [Redirection]

Status CodeDescription
300 Multiple ChoicesThe request has more than one possible response. The user-agent or user should choose one of them.
301 Moved PermanentlyThe URL of the requested resource has been changed permanently. The new URL is given by the Location header field in the response. This response is cacheable unless indicated otherwise.
302 FoundThe URL of the requested resource has been changed temporarily. The new URL is given by the Location field in the response. This response is only cacheable if indicated by a Cache-Control or Expires header field.
303 See OtherThe response can be found under a different URI and SHOULD be retrieved using a GET method on that resource.
304 Not ModifiedIndicates the client that the response has not been modified, so the client can continue to use the same cached version of the response.
305 Use Proxy (Deprecated)Indicates that a requested response must be accessed by a proxy.
306 (Unused)It is a reserved status code and is not used anymore.
307 Temporary RedirectIndicates the client to get the requested resource at another URI with same method that was used in the prior request. It is similar to 302 Found with one exception that the same HTTP method will be used that was used in the prior request.
308 Permanent Redirect (experimental)Indicates that the resource is now permanently located at another URI, specified by the Location header. It is similar to 301 Moved Permanently with one exception that the same HTTP method will be used that was used in the prior request.

4xx Status Codes (Client Error)

Status CodeDescription
400 Bad RequestThe request could not be understood by the server due to incorrect syntax. The client SHOULD NOT repeat the request without modifications.
401 UnauthorizedIndicates that the request requires user authentication information. The client MAY repeat the request with a suitable Authorization header field
402 Payment Required (Experimental)Reserved for future use. It is aimed for using in the digital payment systems.
403 ForbiddenUnauthorized request. The client does not have access rights to the content. Unlike 401, the client’s identity is known to the server.
404 Not FoundThe server can not find the requested resource.
405 Method Not AllowedThe request HTTP method is known by the server but has been disabled and cannot be used for that resource.
406 Not AcceptableThe server doesn’t find any content that conforms to the criteria given by the user agent in the Accept header sent in the request.
407 Proxy Authentication RequiredIndicates that the client must first authenticate itself with the proxy.
408 Request TimeoutIndicates that the server did not receive a complete request from the client within the server’s allotted timeout period.
409 ConflictThe request could not be completed due to a conflict with the current state of the resource.
410 GoneThe requested resource is no longer available at the server.
411 Length RequiredThe server refuses to accept the request without a defined Content- Length. The client MAY repeat the request if it adds a valid Content-Length header field.
412 Precondition FailedThe client has indicated preconditions in its headers which the server does not meet.
413 Request Entity Too LargeRequest entity is larger than limits defined by server.
414 Request-URI Too LongThe URI requested by the client is longer than the server can interpret.
415 Unsupported Media TypeThe media-type in Content-type of the request is not supported by the server.
416 Requested Range Not SatisfiableThe range specified by the Range header field in the request can’t be fulfilled.
417 Expectation FailedThe expectation indicated by the Expect request header field can’t be met by the server.
418 I’m a teapot (RFC 2324)It was defined as April’s lool joke and is not expected to be implemented by actual HTTP servers. (RFC 2324)
420 Enhance Your Calm (Twitter)Returned by the Twitter Search and Trends API when the client is being rate limited.
422 Unprocessable Entity (WebDAV)The server understands the content type and syntax of the request entity, but still server is unable to process the request for some reason.
423 Locked (WebDAV)The resource that is being accessed is locked.
424 Failed Dependency (WebDAV)The request failed due to failure of a previous request.
425 Too Early (WebDAV)Indicates that the server is unwilling to risk processing a request that might be replayed.
426 Upgrade RequiredThe server refuses to perform the request. The server will process the request after the client upgrades to a different protocol.
428 Precondition RequiredThe origin server requires the request to be conditional.
429 Too Many RequestsThe user has sent too many requests in a given amount of time (“rate limiting”).
431 Request Header Fields Too LargeThe server is unwilling to process the request because its header fields are too large.
444 No Response (Nginx)The Nginx server returns no information to the client and closes the connection.
449 Retry With (Microsoft)The request should be retried after performing the appropriate action.
450 Blocked by Windows Parental Controls (Microsoft)Windows Parental Controls are turned on and are blocking access to the given webpage.
451 Unavailable For Legal ReasonsThe user-agent requested a resource that cannot legally be provided.
499 Client Closed Request (Nginx)The connection is closed by the client while HTTP server is processing its request, making the server unable to send the HTTP header back.

5xx Status Codes (Server Error)

Status CodeDescription
500 Internal Server ErrorThe server encountered an unexpected condition that prevented it from fulfilling the request.
501 Not ImplementedThe HTTP method is not supported by the server and cannot be handled.
502 Bad GatewayThe server got an invalid response while working as a gateway to get the response needed to handle the request.
503 Service UnavailableThe server is not ready to handle the request.
504 Gateway TimeoutThe server is acting as a gateway and cannot get a response in time for a request.
505 HTTP Version Not Supported (Experimental)The HTTP version used in the request is not supported by the server.
506 Variant Also Negotiates (Experimental)Indicates that the server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper endpoint in the negotiation process.
507 Insufficient Storage (WebDAV)The method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request.
508 Loop Detected (WebDAV)The server detected an infinite loop while processing the request.
510 Not ExtendedFurther extensions to the request are required for the server to fulfill it.
511 Network Authentication RequiredIndicates that the client needs to authenticate to gain network access.

6. REST Specific HTTP Status Codes

200 (OK)

It indicates that the REST API successfully carried out whatever action the client requested and that no more specific code in the 2xx series is appropriate.

Unlike the 204 status code, a 200 response should include a response body. The information returned with the response is dependent on the method used in the request, for example:

  • GET an entity corresponding to the requested resource is sent in the response;
  • HEAD the entity-header fields corresponding to the requested resource are sent in the response without any message-body;
  • POST an entity describing or containing the result of the action;
  • TRACE an entity containing the request message as received by the end server.

201 (Created)

A REST API responds with the 201 status code whenever a resource is created inside a collection. There may also be times when a new resource is created as a result of some controller action, in which case 201 would also be an appropriate response.

The newly created resource can be referenced by the URI(s) returned in the entity of the response, with the most specific URI for the resource given by a Location header field.

The origin server MUST create the resource before returning the 201 status code. If the action cannot be carried out immediately, the server SHOULD respond with a 202 (Accepted) response instead.

202 (Accepted)

A 202 response is typically used for actions that take a long while to process. It indicates that the request has been accepted for processing, but the processing has not been completed. The request might or might not be eventually acted upon, or even maybe disallowed when processing occurs.

Its purpose is to allow a server to accept a request for some other process (perhaps a batch-oriented process that is only run once per day) without requiring that the user agent’s connection to the server persist until the process is completed.

The entity returned with this response SHOULD include an indication of the request’s current status and either a pointer to a status monitor (job queue location) or some estimate of when the user can expect the request to be fulfilled.

204 (No Content)

The 204 status code is usually sent out in response to a PUT, POST, or DELETE request when the REST API declines to send back any status message or representation in the response message’s body.

An API may also send 204 in conjunction with a GET request to indicate that the requested resource exists, but has no state representation to include in the body.

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent’s active document view. However, any new or updated metainformation SHOULD be applied to the document currently in the user agent’s dynamic view.

The 204 response MUST NOT include a message-body and thus is always terminated by the first empty line after the header fields.

301 (Moved Permanently)

The 301 status code indicates that the REST API’s resource model has been significantly redesigned, and a new permanent URI has been assigned to the client’s requested resource. The REST API should specify the new URI in the response’s Location header, and all future requests should be directed to the given URI.

You will hardly use this response code in your API as you can always use the API versioning for the new API while retaining the old one.

302 (Found)

The HTTP response status code 302 Found is a common way of performing URL redirection. An HTTP response with this status code will additionally provide a URL in the Location header field. The user agent (e.g., a web browser) is invited by a response with this code to make a second. Otherwise identical, request to the new URL specified in the location field.

Many web browsers implemented this code in a manner that violated this standard, changing the request type of the new request to GET, regardless of the type employed in the original request (e.g., POST). RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected of the client.

303 (See Other)

A 303 response indicates that a controller resource has finished its work, but instead of sending a potentially unwanted response body, it sends the client the URI of a response resource. The response can be the URI of the temporary status message, or the URI to some already existing, more permanent, resource.

Generally speaking, the 303 status code allows a REST API to send a reference to a resource without forcing the client to download its state. Instead, the client may send a GET request to the value of the Location header.

The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable.

304 (Not Modified)

This status code is similar to 204 (“No Content”) in that the response body must be empty. The critical distinction is that 204 is used when there is nothing to send in the body, whereas 304 is used when the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.

In such a case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.

Using this saves bandwidth and reprocessing on both the server and client, as only the header data must be sent and received in comparison to the entirety of the page being re-processed by the server, then sent again using more bandwidth of the server and client.

307 (Temporary Redirect)

A 307 response indicates that the REST API is not going to process the client’s request. Instead, the client should resubmit the request to the URI specified by the response message’s Location header. However, future requests should still use the original URI.

A REST API can use this status code to assign a temporary URI to the client’s requested resource. For example, a 307 response can be used to shift a client request over to another host.

The temporary URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s). If the 307 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

400 (Bad Request)

400 is the generic client-side error status, used when no other 4xx error code is appropriate. Errors can be like malformed request syntax, invalid request message parameters, or deceptive request routing etc.

The client SHOULD NOT repeat the request without modifications.

401 (Unauthorized)

A 401 error response indicates that the client tried to operate on a protected resource without providing the proper authorization. It may have provided the wrong credentials or none at all. The response must include a WWW-Authenticate header field containing a challenge applicable to the requested resource.

The client MAY repeat the request with a suitable Authorization header field. If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity might include relevant diagnostic information.

403 (Forbidden)

A 403 error response indicates that the client’s request is formed correctly, but the REST API refuses to honor it, i.e., the user does not have the necessary permissions for the resource. A 403 response is not a case of insufficient client credentials; that would be 401 (“Unauthorized”).

Authentication will not help, and the request SHOULD NOT be repeated. Unlike a 401 Unauthorized response, authenticating will make no difference.

404 (Not Found)

The 404 error status code indicates that the REST API can’t map the client’s URI to a resource but may be available in the future. Subsequent requests by the client are permissible.

No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

405 (Method Not Allowed)

The API responds with a 405 error to indicate that the client tried to use an HTTP method that the resource does not allow. For instance, a read-only resource could support only GET and HEAD, while a controller resource might allow GET and POST, but not PUT or DELETE.

A 405 response must include the Allow header, which lists the HTTP methods that the resource supports. For example:

Allow: GET, POST

406 (Not Acceptable)

The 406 error response indicates that the API is not able to generate any of the client’s preferred media types, as indicated by the Accept request header. For example, a client request for data formatted as application/xml will receive a 406 response if the API is only willing to format data as application/json.

If the response could be unacceptable, a user agent SHOULD temporarily stop receipt of more data and query the user for a decision on further actions.

412 (Precondition Failed)

The 412 error response indicates that the client specified one or more preconditions in its request headers, effectively telling the REST API to carry out its request only if certain conditions were met. A 412 response indicates that those conditions were not met, so instead of carrying out the request, the API sends this status code.

415 (Unsupported Media Type)

The 415 error response indicates that the API is not able to process the client’s supplied media type, as indicated by the Content-Type request header. For example, a client request including data formatted as application/xml will receive a 415 response if the API is only willing to process data formatted as application/json.

For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.

500 (Internal Server Error)

500 is the generic REST API error response. Most web frameworks automatically respond with this response status code whenever they execute some request handler code that raises an exception.

A 500 error is never the client’s fault, and therefore, it is reasonable for the client to retry the same request that triggered this response and hope to get a different response.

The API response is the generic error message, given when an unexpected condition was encountered and no more specific message is suitable.

501 (Not Implemented)

The server either does not recognize the request method, or it cannot fulfill the request. Usually, this implies future availability (e.g., a new feature of a web-service API).

References :

https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

HTTP Status Codes - REST API Tutorial (2024)

FAQs

What is the HTTP status code for restful API? ›

A REST API responds with the 201 status code whenever a resource is created inside a collection. There may also be times when a new resource is created as a result of some controller action, in which case 201 would also be an appropriate response.

What is 400 status codes in REST API? ›

The 400 Bad request status code indicates that the server was unable to process the request due to invalid information sent by the client. In other words, the client request needs modification.

What are status codes 2xx, 3xx, 4xx, 5xx in API? ›

2xx successful – the request was successfully received, understood, and accepted. 3xx redirection – further action needs to be taken in order to complete the request. 4xx client error – the request contains bad syntax or cannot be fulfilled. 5xx server error – the server failed to fulfil an apparently valid request.

What is 409 status code in REST API? ›

A 409 status code is used to indicate a conflict with the current state of a resource, such as when trying to create or update a resource that already exists or has conflicting information. This status code indicates that the request cannot be completed due to a conflict with the current state of the resource.

What are the status codes for REST API interview questions? ›

The common HTTP responses are:
  • 200 (OK): request successful.
  • 201 (Created): request successful & resource created.
  • 400 (Bad Request): request unsuccessful due to user error (typo or data missing)
  • 401 (Unauthorized): request unsuccessful, client not authenticated/authorized.
Jun 2, 2024

What is REST API 404 status code? ›

404 Error is an HTTP Response Status Code which means 'The resource at the requested location could not be found'. When such a status code is returned, it means that the client and the server in the computer network had a successful communication but the server could not find what was requested.

What is the status code 500 in REST API? ›

The 500 (Internal Server Error) status code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.

When to use 204 vs 404? ›

When to use HTTP Status Code 204 vs 404? Use a 204 status code when the server successfully processes a request but has no content to return. It's great for actions like form submissions or updates where no new page content is needed. Use a 404 status code when the requested resource is not found on the server.

What is status code 100 in rest API? ›

The 100 Continue status code means that the initial part of the request has been received by the server and that the client should proceed with the request or ignore the response if the request has already finished.

What is the difference between 403 and 402? ›

While both codes indicate that access to a resource is restricted, the distinction lies in the reason for the restriction. The 402 code specifically implies that payment is required, whereas the 403 code implies that access is forbidden due to other reasons, such as insufficient permissions or authentication failure.

How do I fix my 4XX status code? ›

How to Fix a 4XX Error?
  1. Check the spelling of the URL, have you mistyped it? ...
  2. Clear your cookies and cache. ...
  3. It could be the receiving server. ...
  4. Refresh the page. ...
  5. Try a site search. ...
  6. Check out other websites. ...
  7. If you are trying to login to a protected area, ensure you are using the correct URL.

How to handle a 202 response? ›

202 status code example

The server will respond that the request was received and acknowledged. The client will then need to send additional requests to determine whether the job has been completed. Eventually, the server will respond with a 200 OK status code when the job is finished.

What is status code 402 in rest API? ›

The HTTP 402 Payment Required client error response status code is a nonstandard response status code reserved for future use. This status code was created to enable digital cash or (micro) payment systems and would indicate that requested content is not available until the client makes a payment.

What is status code 410 in REST API? ›

The 410 status code is a standard HTTP status code that is intended to indicate that the requested resource is no longer available and has been removed permanently. It is similar to a 404 Not Found status code, but the 410 status code indicates that the resource is intentionally removed and will not be available again.

What is status code 200 REST API? ›

The HTTP Status 200 (OK) status code indicates that the request has been processed successfully on the server. The response payload depends on the HTTP method that was selected for the request. The HTTP Status 200 (OK) status code indicates that the request has been processed successfully on the server.

What is status code 405 in REST API? ›

The 405 error happens when a client attempts to use an HTTP method that is not allowed by the server. For example, this issue can occur when a user tries to use a method such as PUT or DELETE on a resource that only allows GET or POST requests.

What is the 101 status code in restful API? ›

The 101 status code, “Switching Protocols,” should be used when the server receives a request that includes an “Upgrade” header indicating a protocol change. It indicates that the server is switching to the new protocol as requested by the client.

What is the status code 422 in restful API? ›

A 422 status code indicates that the server was unable to process the request because it contains invalid data.

Top Articles
Nfsd Web Portal
Tarkov Map Wiki
The Fappening Blgo
Michigan Lottery Predictions For Today
Savage X Fenty Wiki
Choke Pony Dating App
Tamilyogi Download 2021
Guardians Of The Galaxy Vol 3 Full Movie 123Movies
Colossians 2 Amplified
Ju Hua (Flos Chrysanthemi): Uses, Benefits, Side Effects, Warnings
Pollen Count In Brandon Fl
National Weather Denver Co
Browse | Obituaries | Enid News and Eagle
Banned in NYC: Airbnb One Year Later
Spirited Showtimes Near Gqt Kalamazoo 10
The Perfect Couple Episode 5 Cast & Characters - Eve Hewson, Nicole Kidman & More (Photos)
Alishbasof
Toothio Login
Pier One Chairs
The Athenaeum's Fan Fiction Archive & Forum
Maryland Parole Hearing Schedule 2023
Rite Aid Klein Transit
Hope for recovery emerges for a Ukrainian soldier who suffered a severe brain injury 2 years ago
Spanish Letter Closings: formal, friendly, and informal - Wanderlust Spanish
Hinzufügen Ihrer Konten zu Microsoft Authenticator
All Added and Removed Players in NBA 2K25 (Help Us Catch 'Em All)
Harris Teeter Weekly Ad Williamsburg Va
Buffalo Bills Football Reference
Vip Market Vetsource
Nikki Catsouras Head Cut In Half
How to Start a Travel Agency: Steps and Tips | myPOS
Optimizing Sports Performance Pueblo
Reisen in der Business Class | Air Europa Deutschland
18443168434
20 Fantastic Things To Do In Nacogdoches, The Oldest Town In Texas
9044906381
Cyberpunk 2077 braindance guide: Disasterpiece BD walkthrough
Greenland Outer Drive
Shorkie: The Perfect Dog Breed for Families
Jasminx Fansly
Amarillos (FRIED SWEET PLANTAINS) Recipe – Taste Of Cochin
Colorado Pick 3 Lottery
Journal articles: 'State of New York and the Military Society of the War of 1812' – Grafiati
Tapana Telugu Movie Download Kuttymovies
House Party 2023 Showtimes Near Mjr Chesterfield
Erskine Plus Portal
Fineassarri
Craigslist In Killeen Tx
Extraordinary Life: He Was A Feminist, Concerned With Power And Privilege
Arcanis Secret Santa
Water Temperature Robert Moses
Timothy Warren Cobb Obituary
Latest Posts
Article information

Author: Dan Stracke

Last Updated:

Views: 5311

Rating: 4.2 / 5 (43 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.