API calls are either successful or they fail” – at least that’s the concept current web protocols are based upon. But in the real world, it isn’t always that simple. There are use cases where a 3rd party system returns something that can’t be defined as a clear error, but returning a http status code of 200 OK is also wrong. For those cases, every vendor has its own way of communicating to the client what has gone wrong in the backend. So depending on the microservice you want to integrate into your system, you will have to work with very different ideas of how errors are being communicated back to you. This is why we need to find a common way to communicate those edge cases.