API versioning

Every endpoint is served under /v1, and /v1 is a promise: a request that works today keeps working, and a change that would break one is announced before it happens.

What is stable#

  • The paths. /v1/chat/completions, /v1/messages, /v1/responses, /v1/embeddings, /v1/models, /v1/usage, /v1/tools/search and /v1/tools/browse keep their names and methods.
  • The wire shape. A field that exists today keeps its name and type. A new field may appear at any time; a client that ignores unknown fields keeps working, and the official SDKs do.
  • The error envelope. {"error": {"message", "type", "param", "code"}}, with type from a fixed set. A client that switches on type and code does not have to parse a sentence.

What counts as a breaking change#

  • Removing or renaming a field, a path, a method or an error code.
  • Changing a field's type, or making an optional parameter required.
  • Changing a default in a way that alters the answer a client gets for the same request.
  • Removing a model id that still appears in GET /v1/models.

How a breaking change is announced#

By email to the account owner at least 30 days before it takes effect, and on this page. A model that is withdrawn is the one exception, because the withdrawal is not ours to schedule: it leaves GET /v1/models as soon as it can no longer be served, and the changelog below says when.

What this page does not cover#

  • Model availability. A model may be withdrawn, and the list GET /v1/models answers is always the current one.
  • Speed. The terms state that the service carries no guaranteed level, and this page does not add one.
  • The website's own API. /api/* is what the dashboard calls. It changes with the dashboard, and nothing outside this site should depend on it.

Changelog#

Dated entries, newest first. This list names the changes a client could notice.

DateReleaseChange
2026-11-14v4.0Zero retention only, with no regions: one plain id per model, the :zdr and :eu suffixes and the X-Token-Route header removed, and a suffixed id refused with 404 not_found_model. Plans, subscriptions and the plan allowance removed: /v1/usage answers plan: null, the balance is the only thing a request draws on, and the plan headers and billing modes no longer appear. Traces are no longer collected. Prices are fixed per model and published in the catalog.
2026-10-01v0.1The first release: /v1/chat/completions, /v1/messages, /v1/models, /v1/usage and the dashboard.

An entry is added when a change lands, so this table is the place to look before upgrading a client.