API Versioning
Our versioning policy: how we evolve APIs over time without breaking your integration.
Our versioning policy: how we evolve APIs over time without breaking your integration.
We don't break integrations without warning. APIs evolve — new features get added, mistakes get corrected — but we follow strict rules about what counts as a breaking change and how breaking changes are introduced.
This page covers:
| API Type | Versioning approach |
|---|---|
| REST | URL-based: /stats/v1, /stats/v2 running in parallel |
| GraphQL | Endpoint-based: /graphql, /graphql/v2. Schema additions are backward-compatible within a major version |
| MCP | Tool-set versioned independently. tools/list reflects the current available set |
A change is breaking if existing well-formed integrations could stop working after the change. Examples:
Any of these will only happen in a new major version (e.g. v2).
Backward-compatible additions can be made to the current version at any time, without prior notice:
We recommend designing your integration to ignore unknown fields and unknown enum values gracefully — this lets you benefit from new fields without code changes on your side.
When we introduce a new major version (e.g. v2):
v1 and v2 run in parallel for at least 6 monthsv1 returns a 410 Gone for new requests and is eventually removedYou're encouraged but not required to migrate to the latest version. As long as a version is still supported, you can continue to use it.
For machine-checkable change detection, integrate one of these into your CI pipeline:
# REST: pull the OpenAPI spec
curl https://api.example.com/stats/v1/openapi.yaml -o latest.yaml
diff prev.yaml latest.yaml
# GraphQL: introspect the schema
curl https://api.example.com/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ __schema { types { name fields { name } } } }"}' \
> latest-schema.json
diff prev-schema.json latest-schema.json
# MCP: list available tools
curl https://api.example.com/mcp/stats \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' \
> latest-tools.json
If you see additions, no action needed. If you see removals, that means we've started a deprecation cycle — check your email for the notification and your deprecation timeline.
| Change | Treatment |
|---|---|
| Add field to response | Backward-compatible; goes in current version |
| Add optional parameter | Backward-compatible; goes in current version |
| Add enum value | Backward-compatible; goes in current version |
| Add operation | Backward-compatible; goes in current version |
| Remove field | Breaking; new major version, 6 month deprecation |
| Rename anything | Breaking; new major version, 6 month deprecation |
| Change type | Breaking; new major version, 6 month deprecation |
| Change auth semantics | Breaking; new major version, 6 month deprecation |
If you're unsure about a specific change you've seen and whether it should be considered breaking, contact our partner support channel.