# 30 Days of API Testing Day 23: Resources For Understanding Status Codes

**URL:** <https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592>\
**Category:** 30 Days of Testing\
**Tags:** 30-days-of-testing, api-testing, resources\
**Created:** [15 November 2018 09:39 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592 "2018-11-15T09:39:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![heather\_reid](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/heather_reid/32/29_2.png) [@heather\_reid](https://club.ministryoftesting.com/u/heather_reid)\
**Post date:** [15 November 2018 09:39 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/1 "2018-11-15T09:39:00Z")

</div>

[30 Days of API Testing](https://www.ministryoftesting.com/dojo/lessons/30-days-of-api-testing) Day 23 challenge is:

> Status codes are often misused, share your favourite resources for understanding status codes.

I’m quite a visual learner, a picture paints a thousand words and all that 😅

I’ve found the HTTP status dogs, in particular, the ones that @g33klady has on her blog, to be the most useful for me in understanding status codes.

> **[HTTP Status Coops Archives - g33klady](https://g33klady.com/category/http-status-coops/)**

---

<div class="post-metadata">

**Author:** ![kmstuanhnguyen](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kmstuanhnguyen/32/4217_2.png) [@kmstuanhnguyen](https://club.ministryoftesting.com/u/kmstuanhnguyen)\
**Post date:** [15 November 2018 10:07 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/2 "2018-11-15T10:07:12Z")

</div>

Very interesting pictures which are very understandable 😀

---

<div class="post-metadata">

**Author:** ![kmstuanhnguyen](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kmstuanhnguyen/32/4217_2.png) [@kmstuanhnguyen](https://club.ministryoftesting.com/u/kmstuanhnguyen)\
**Post date:** [15 November 2018 12:51 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/3 "2018-11-15T12:51:05Z")

</div>

There is no doubt that [MDN web docs](https://developer.mozilla.org/en-US/) is a helpful resource for developers to understand status codes.

> **[HTTP response status codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)**
>
> HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes: informational responses, successful responses, redirects, client errors, and servers errors.

---

<div class="post-metadata">

**Author:** ![oceannguyen](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/oceannguyen/32/4270_2.png) [@oceannguyen](https://club.ministryoftesting.com/u/oceannguyen)\
**Post date:** [21 November 2018 12:45 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/4 "2018-11-21T12:45:07Z")

</div>

The article from [wikipedia](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) is a very comprehensive list about HTTP status codes.

---

<div class="post-metadata">

**Author:** ![tuanatran](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@tuanatran](https://club.ministryoftesting.com/u/tuanatran)\
**Post date:** [21 November 2018 17:54 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/5 "2018-11-21T17:54:17Z")

</div>

The first resource I think about is on Wikipedia: [List of HTTP status codes - Wikipedia](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)  
It contains all HTTP status code.

However, while working to understand details about a status code, I usually google it like that: “XXX HTTP code”. Google will return it very quickly.

Btw, thanks to @brian_seg for the lovely resource.

[https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-status-codes-are-often-misused-share-your-favourite-resources-for-understanding-status-codes/20300/2?u=tuanatran](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-status-codes-are-often-misused-share-your-favourite-resources-for-understanding-status-codes/20300/2)

I am looking for a cat-version for the cat-lover 😃 😻

---

<div class="post-metadata">

**Author:** ![g33klady](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/g33klady/32/734_2.png) [@g33klady](https://club.ministryoftesting.com/u/g33klady)\
**Post date:** [21 November 2018 20:48 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/6 "2018-11-21T20:48:51Z")

</div>

ask and you shall receive: [https://http.cat/](https://http.cat/)

---

<div class="post-metadata">

**Author:** ![duncan.nisbet](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/duncan.nisbet/32/844_2.png) [@duncan.nisbet](https://club.ministryoftesting.com/u/duncan.nisbet)\
**Post date:** [21 November 2018 21:34 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/7 "2018-11-21T21:34:01Z")

</div>

I’m a visual learner as well!

I couldn’t find the particular resource I was looking for, but I did find this & it helps me communicate the status codes with non-techies:

> **[Response Codes Explained with Pictures](https://moz.com/blog/response-codes-explained-with-pictures)**
>
> Einstein once said, 'If you can't explain it simply, you don't know it well enough.' It is in this spirit that I present my brick-and-mortar retail store analogy to HTTP Response Codes.

---

<div class="post-metadata">

**Author:** ![duncan.nisbet](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/duncan.nisbet/32/844_2.png) [@duncan.nisbet](https://club.ministryoftesting.com/u/duncan.nisbet)\
**Post date:** [21 November 2018 21:35 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/8 "2018-11-21T21:35:51Z")

</div>

The most concise list I could find! 😃

HTTP Status Code Summary (via @stevelosh)

1xx: hold on  
2xx: here you go  
3xx: go away  
4xx: you f$_%ed up  
5xx: I f$_%ed up

> **[Funny HTTP status codes](https://community.spiceworks.com/topic/2010337-funny-http-status-codes)**
>
> I found this today and thought it was so funny I should share. However, it is a quick and easy way to remember them!
> 
> HTTP Status CodesHere is a link to a detailed reference of ...

---

<div class="post-metadata">

**Author:** ![duncan.nisbet](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/duncan.nisbet/32/844_2.png) [@duncan.nisbet](https://club.ministryoftesting.com/u/duncan.nisbet)\
**Post date:** [21 November 2018 21:43 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/9 "2018-11-21T21:43:35Z")

</div>

Finally the [HTTP Status Map](https://restlet.com/http-status-map/) is a useful interactive resource in the style of a tube / metro map.

---

<div class="post-metadata">

**Author:** ![tuanatran](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@tuanatran](https://club.ministryoftesting.com/u/tuanatran)\
**Post date:** [22 November 2018 04:18 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/10 "2018-11-22T04:18:32Z")

</div>

Thanks for your information. I love it 😻

---

<div class="post-metadata">

**Author:** ![hongle](https://avatars.discourse-cdn.com/v4/letter/h/7bcc69/32.png) [@hongle](https://club.ministryoftesting.com/u/hongle)\
**Post date:** [22 November 2018 04:19 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/11 "2018-11-22T04:19:31Z")

</div>

My favourite resource is [https://www.restapitutorial.com/httpstatuscodes.html](https://www.restapitutorial.com/httpstatuscodes.html), it is categorized, hence easy to find, and remember

 ![image](https://us1.discourse-cdn.com/flex020/uploads/ministryoftesting/original/2X/3/3cc1449b4f04f4079aaf9b7c8b43887521e9c762.png)

---

<div class="post-metadata">

**Author:** ![anonygoose](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@anonygoose](https://club.ministryoftesting.com/u/anonygoose)\
**Post date:** [22 November 2018 11:02 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/12 "2018-11-22T11:02:06Z")

</div>

Amusing and accurate.

Generally the only rule I manage to remember off by heart is the difference between a 4xx and a 5xx.

If the request is and will never be correct in its current form it’s a 4xx, if the user can send that same request without alteration at a later date and expect the server to respond correctly, it’s a 5xx.

---

<div class="post-metadata">

**Author:** ![duncan.nisbet](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/duncan.nisbet/32/844_2.png) [@duncan.nisbet](https://club.ministryoftesting.com/u/duncan.nisbet)\
**Post date:** [22 November 2018 12:21 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/13 "2018-11-22T12:21:25Z")

</div>

Nice refinement Will 🙂

---

<div class="post-metadata">

**Author:** ![conorfi](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/conorfi/32/6999_2.png) [@conorfi](https://club.ministryoftesting.com/u/conorfi)\
**Post date:** [23 November 2018 07:15 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/14 "2018-11-23T07:15:39Z")

</div>

Working with developers I encourage them to use more specific error status codes and have found things have improved over the years, everything is no longer a 200 🙂  
But generally for a simple API most implementations are  
200 - all good  
404 - couldn’t find it  
500 - service down etc.

My preference is for granularity  
If a post created data then return a 201.  
e.g. create new user

If the server has successfully fulfilled the request and that there is no content to send in the response payload body, then return a 204.  
e.g. save document and allow user to continue editing.

Any thoughts?

---

<div class="post-metadata">

**Author:** ![helena](https://avatars.discourse-cdn.com/v4/letter/h/c68b51/32.png) [@helena](https://club.ministryoftesting.com/u/helena)\
**Post date:** [23 November 2018 19:33 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/15 "2018-11-23T19:33:59Z")

</div>

Understanding HTTP through quotes:

HTTP 100: “Hold the vision, trust the process.”  
HTTP 200: “This is the beginning of anything you want. If you can dream it, you can achieve it!”  
HTTP 300: " As I look back on my life, I realize that every time I thought I was being rejected from something good, I was actually being re-directed to something better."  
HTTP 400: “When someone does something wrong, don’t forget all the things they did right.”  
HTTP 500: “I’ve always loved the idea of not being what people expect me to be” / Server

---

<div class="post-metadata">

**Author:** ![g33klady](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/g33klady/32/734_2.png) [@g33klady](https://club.ministryoftesting.com/u/g33klady)\
**Post date:** [23 November 2018 19:37 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/16 "2018-11-23T19:37:40Z")

</div>

definitely agree on this one - much better than everything getting a 200 and then having some kind of message in the response about what actually happened.  
It makes it more user friendly, and usable for other APIs to pick up without having to do special handling

---

<div class="post-metadata">

**Author:** ![testerawesome](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/testerawesome/32/4929_2.png) [@testerawesome](https://club.ministryoftesting.com/u/testerawesome)\
**Post date:** [26 November 2018 09:02 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/17 "2018-11-26T09:02:55Z")

</div>

Loved pics, awesome stuff

---

<div class="post-metadata">

**Author:** ![ilya.lychkou](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/ilya.lychkou/32/4135_2.png) [@ilya.lychkou](https://club.ministryoftesting.com/u/ilya.lychkou)\
**Post date:** [1 December 2018 23:04 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/18 "2018-12-01T23:04:31Z")

</div>

All the resources about **HTTP Status Codes** above are great! I just share [a bit info](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) from the origin of HTTP protocol.

---

<div class="post-metadata">

**Author:** ![heather\_reid](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/heather_reid/32/29_2.png) [@heather\_reid](https://club.ministryoftesting.com/u/heather_reid)\
**Post date:** [4 December 2018 16:09 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/19 "2018-12-04T16:09:47Z")

</div>

This was a very busy day on Twitter!

> <https://twitter.com/conorfi/status/1065860983976022017>

> <https://twitter.com/conorfi/status/1065860986173906945>

> <https://twitter.com/offbeattesting/status/1065965250753830912>

> <https://twitter.com/psNoBugs/status/1066050783123316738>

> <https://twitter.com/psNoBugs/status/1066051051235811328>

> <https://twitter.com/psNoBugs/status/1066051223353204738>

> <https://twitter.com/psNoBugs/status/1066051403095990272>

> <https://twitter.com/psNoBugs/status/1066051689021677568>

> <https://twitter.com/psNoBugs/status/1066053798395895810>

> <https://twitter.com/testingGarage/status/1066732533981663232>

> <https://twitter.com/testingGarage/status/1066733816654381056>

---

<div class="post-metadata">

**Author:** ![kms\_trangta](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kms_trangta/32/4273_2.png) [@kms\_trangta](https://club.ministryoftesting.com/u/kms_trangta)\
**Post date:** [12 December 2018 07:46 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592/20 "2018-12-12T07:46:53Z")

</div>

I find resources for understanding Status Codes:

1. [https://httpstatuses.com/](https://httpstatuses.com/)
2. [https://www.checkupdown.com/status/](https://www.checkupdown.com/status/)

[Next page](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-23-resources-for-understanding-status-codes/19592.md?page=2)
