Skip to main content
We announce deprecations at least three months before deploying any breaking changes. When we deprecate a field, we record the deprecation and its intended replacement in the relevant Headless API changelog or Admin API changelog. We mark deprecated fields in our OpenAPI and GraphQL schemas, wherever the field appears. If we detect that you’re using a feature when it becomes deprecated, we notify you in-app.

What we consider a breaking change

A breaking change makes a previously supported request fail or changes a documented response or behavior in a way that requires you to update your integration. A change can be breaking even when the schema stays the same.

GraphQL (Headless API)

REST (Admin API)

Changes that affect either API

  • Requiring new authentication methods, permissions, or OAuth scopes for requests that existing credentials were documented to support.
  • Tightening validation or reducing documented request, rate, or query-complexity limits so previously supported requests are rejected.
  • Changing pagination parameters, response fields, or continuation behavior so an existing pagination loop no longer retrieves the results it should.
  • Changing documented defaults, filtering, sorting, value formats, units, or operation side effects. For example, interpreting a duration in seconds instead of milliseconds changes the meaning of the same request.
  • Changing documented error codes, error response structure, or retry behavior so existing error handling no longer works as documented.

Additions and compatibility

New endpoints, GraphQL fields, optional inputs, and REST response properties are compatible additions when existing requests, responses, and documented behavior remain supported. Introducing a replacement while keeping the old field working is also compatible; removing the old field is the breaking change. Adding a value to an enum used only as input does not invalidate existing requests. Adding response enum values or possible GraphQL union or interface result types requires more care: we consider those additions breaking when they expand a documented fixed set. If the API explicitly documents a set as extensible, clients need to handle additional values.