Feature

GraphQL Support

Monitor GraphQL APIs with the same depth as REST. Queries, mutations, variables, and error detection.

GraphQL needs specialized monitoring

GraphQL APIs always return 200 OK, even when there are errors. The errors are in the response body, not the status code. Traditional uptime monitors miss these completely.

APIAssert understands GraphQL. We check for errors in the response, validate specific fields in your data, and support complex queries with variables.

  • Full query and mutation support
  • Variable substitution
  • GraphQL error detection
  • Response data validation
  • Custom headers and authentication
query.graphql
query
GetUser($id: ID!) {
user(id: $id) {
id
email
status
subscription {
plan
expiresAt
}
}
}
// Variables
{
"id": "usr_12345"
}

Catch GraphQL errors that others miss

GraphQL returns 200 OK even when your query fails. We inspect the response body to catch real errors.

GraphQL Response 200 OK
{
"errors": [
{
"message": "User not found",
"path": ["user"]
}
],
"data": null
}
Traditional monitors see: Success
HTTP 200 status code
APIAssert sees: Error
GraphQL errors array is present

Common GraphQL monitoring scenarios

Monitor the queries that matter most to your application.

Authentication Queries

Verify that login mutations return valid tokens and user data in the expected format.

Data Fetching

Ensure your main data queries return results, not null or empty arrays.

Resolver Health

Catch resolver errors that return partial data or null fields.

Subscription Setup

Verify subscription initialization queries work before real-time features break.

Schema Changes

Detect when schema changes break expected response structures.

Rate Limiting

Monitor for rate limit errors that affect API consumers.

Validate GraphQL responses

Error Detection

Automatically detect GraphQL errors in the response body, even when HTTP status is 200.

$.errors == null
{ }

Data Validation

Use JSONPath to validate specific fields in your GraphQL response data.

$.data.user.status == "active"

Existence Checks

Verify that expected fields exist and aren't null in your response.

$.data.user.subscription exists