Here’s a fact that catches almost everyone the first time: a GraphQL query can fail while the API still responds with 200 OK . The request didn’t error out at the network level, so the status code looks perfectly healthy. But the actual problem (a resolver that threw, a null where there shouldn’t be one, a permission you don’t have, a malformed request) is tucked away inside the response body.