Skip to main content
These are the promises behind every notice we send you. There are three, plus the rules that decide when one of them applies.

API and proxy

You get at least 90 days’ notice before a breaking change to the API or the proxy.

How the API is versioned

The version is in the path: every endpoint is under /api/v1. There is one version, v1, and no version header or dated pin to set. Every request already names its version, so nothing moves under a client that has never chosen one. A breaking change ships as a new endpoint or a new version, never as a change to an existing /api/v1 endpoint. If a v2 ever ships, v1 keeps working unchanged for at least 90 days after we announce it.

What counts as a breaking change

  • Removing or renaming an endpoint, a request or response field, or an error code.
  • Changing a field’s type, or the default used when you leave a field out.
  • Making an optional request field required.
  • Tightening validation, so a request that used to be accepted is refused.
  • Changing the status code returned for an existing condition.
  • Changing what an existing field means, even if its type stays the same.

What changes without notice

These ship whenever they are ready and are listed in the changelog:
  • New endpoints.
  • New optional request fields.
  • New response fields and headers.
  • New error codes for new conditions, and new values in fields that list things, such as threat types.
  • Loosened validation.
  • Changes to what a scan detects. Detection improves continuously; the shape of the request and response does not change with it.
Write clients that ignore fields they do not recognise and handle an unknown error code as a generic failure.

How a deprecation is signalled

A deprecated endpoint is marked as deprecated in the API reference, and every response from it carries a Deprecation: true header and a Sunset header with the date it will be removed. It is listed in the table below.

SDKs

The SDKs use semantic versioning: anything in an SDK’s public interface is removed or renamed only in a new major version. When a new major version of an SDK ships, the previous major version gets security fixes for 12 months. Moving from 1.x to 2.0 of the Python SDK, the Node.js SDK or the CLI: Upgrade to SDK and CLI 2.0 lists every removed call and what to use instead.

Self-hosted

A Release of the self-hosted platform is supported while it is less than 90 days old. Security fixes ship in new Releases, never as backports to older ones: to get a fix, upgrade.

Deprecations and removals

Where you hear about it

  • A change that needs you to act comes as an email to the owners and admins of each affected organization and to the technical contact on each self-host licence, whatever your marketing email preferences, and is also listed in the changelog.
  • What changed for you is in the changelog, dated by the release that delivered it. It has an RSS feed. Filter it by the product you use, or show only breaking changes and deprecations. An entry that needs you to act is marked Breaking change or Deprecation and says what to do.
  • What to do when you upgrade a self-hosted deployment or roll out the desktop agent is on Platform upgrade notes and Shadow AI desktop agent upgrade notes.
Last modified on October 31, 2026