Versioning

How /v1 evolves, what counts as breaking, and how we retire a path.

Everything hangs off /v1. That prefix is the contract: a client written against today's endpoints keeps working without a rewrite.

What can change on /v1

Additive changes land here. A new endpoint, a new optional field, a new error code. Existing fields keep their meaning, required fields stay required, and a client that ignores what it does not know keeps working.

What does not happen on /v1

A breaking change gets a new prefix (/v2), not a silent rewrite of /v1. Breaking means: removing or renaming a field, changing a type, turning an optional field required, or changing the meaning of a code.

There is no /v2 today. When there is, /v1 stays up long enough to migrate, and the two prefixes are documented side by side.

Deprecation

Nothing is deprecated today.

When a path or a field is going away we will:

  1. Mark it in the OpenAPI spec (deprecated: true).
  2. Say so on this page, with the replacement.
  3. Send a Sunset header (an HTTP date) on responses that still serve the old path, so a client can see the deadline without reading the docs.

Until that happens, do not treat /v1 as unstable. Additive growth is the point of the prefix.

Keys are not versioned

An organization API key works on whichever prefix is current. You do not mint a new key to keep using /v1, and a key is not scoped to a version.

On this page