# GraphQL Over HTTP — Shopify developer changelog
---
## GraphQL Over HTTP

The handling of GraphQL requests via HTTP will evolve slightly as of `2025-01` API versions in accordance with the [GraphQL over HTTP spec](https://graphql.github.io/graphql-over-http). These changes refine how a request's `Content-Type` and `Accept` headers work, and offer additional granularity in response status codes.

## New response format

A new `application/graphql-response+json` response format is available. Requests may select this format using the `Accept` header, for example:

`Accept: application/graphql-response+json, application/json`

The above favors receiving a `application/graphql-response+json` response by listing it first. This new format is the same as JSON aside from its status codes:

### `200 OK`
* For `application/graphql-response+json`, this status indicates that the JSON payload was valid and that the submitted GraphQL document _attempted_ execution on the server. Note that the response payload may still contain errors encountered during execution along with partial data.
* For `application/json`, this status only indicates that the JSON payload was valid.

### `400 Bad Request`
* For `application/graphql-response+json`, this status indicates that the JSON payload was invalid, or that the submitted GraphQL parameters failed static validation and were not executed.
* For `application/json`, this status only indicates that the JSON payload was invalid.

## Usage summary

For requests to `2025-01` versions and after:

* Use the `/graphql` endpoint. Using `/graphql.json` will automatically respond with `application/json` as it does now.
* The request body must contain a [spec JSON encoding](https://graphql.github.io/graphql-over-http/draft/#sec-JSON-Encoding).
* The `Content-Type` header _must_ specify `application/json`. The legacy `application/graphql` request format is no longer supported. Requests with no supported content type will receive a `415 Unsupported Media Type` response.
* The `Accept` header now supports `application/graphql-response+json` and/or `application/json` response formats. Requests with no supported accept types will receive a `406 Not Acceptable` response.
* Accepting `*/*` will default to a `application/graphql-response+json` response.

These changes do NOT affect `unstable` versions at this time, or Storefront API. A breaking change announcement with migration timeline will be announced prior to any unstable transition.

*Published: November 01, 2024*
Tags: API, Update
Link: https://shopify.dev/changelog/graphql-over-http

---