Skip to main content
Every v3 request is a single POST carrying a GraphQL document. Queries read data; mutations write it.

Sending an operation

The request body is JSON with a query field and optional variables and operationName:
The response mirrors the shape you asked for, under data:
Looking up a record by an ID that does not exist returns null, not an error.

Queries

Mutations

A mutation returns the record it wrote, so you can select fields from it as you would in a query. Failures are reported in the top-level errors array with a code, as described in Errors; invalid input returns HTTP 400.

Query cost & rate limits

The API uses query-cost rate limiting: each query’s cost is estimated from its shape before it runs and reserved against your store’s bucket, and the response reports the cost under extensions.cost. Requesting fewer results and fewer fields keeps cost, and latency, low. Mutations are not charged. See Rate limiting for the cost model, throttleStatus, and how to handle 429 / THROTTLED responses.