Versioning
The API is versioned in the URL path.v1 is the current and only version:
- Breaking changes ship as a new version path (
/v2), never insidev1. A breaking change is anything that removes an endpoint or field, renames one, changes a type, tightens validation on existing input, or changes the meaning of an existing response value. - Additive changes land in
v1without notice: new endpoints, new optional request fields, new response fields, new enum values on fields documented as extensible. Build clients that ignore unknown response fields.
Deprecation policy
When an endpoint, parameter, or field is deprecated:- It is marked
deprecated: truein the OpenAPI specification — the spec is the source of truth. - The deprecation is announced in the changelog.
- When an endpoint is scheduled for removal, its responses will carry a
Deprecationheader, and once a removal date is committed, aSunsetheader (RFC 8594) with the removal timestamp. No endpoint is deprecated today, so no live response currently carries these headers. - The deprecated surface keeps working alongside its replacement for at least 90 days after the
Sunsetdate is announced. Nothing is removed silently.
phone_number_id on POST /projects is deprecated in favor of phone_number_ids[]; both are accepted while the migration window is open.
What agents should do
- Check the spec’s
deprecatedflags before generating integration code; prefer the replacement surface whenever one is documented. - Watch for
DeprecationandSunsetresponse headers and surface them to a human operator. - Treat unknown response fields as additive evolution, not an error.
