Versioning
The API is versioned by date. The current version is 2026-08-14, and
every response tells you which version shaped it:
Agentency-Version: 2026-08-14
There is no version in the URL. /v1 is the surface; the dated version is the
contract within it.
What counts as breaking
The distinction decides whether a change can ship silently or needs a new version, so it is worth being precise.
Not breaking — can appear at any time:
- A new field on a response.
- A new optional request parameter.
- A new endpoint.
- A new event type.
- A new value in a list you already have to handle unknown members of.
Breaking — needs a new dated version:
- Removing or renaming a response field.
- Removing an endpoint, or changing its path or method.
- Making an optional request field required.
- Narrowing what a field accepts.
- Changing the type of an existing field.
Because additive changes ship without warning, ignore fields you do not recognise rather than erroring on them. A strict parser that rejects unknown keys will break on a change that was designed to be safe.
Deprecation
When an operation is on its way out it keeps working and starts announcing itself:
Deprecation: true
Sunset: Wed, 31 Dec 2026 23:59:59 GMTSunset is the date it stops working. Between the two you have a window to
migrate, and the endpoint behaves exactly as it always did.
The cheapest possible early warning: if your client logs a `Deprecation` header, you find out months ahead instead of on the day it stops. Nobody reads a changelog for an integration that is working.
Worth logging
Three values make a support conversation short instead of long:
Agentency-Version— which contract shaped the response.request_id— on every response header and in every error body. This is the single most useful thing to quote when reporting a problem.error.code— the machine-readable failure, e.g.RATE_LIMITED.
The spec is the contract
The published OpenAPI document is generated from the running API, not written by hand, so it cannot describe an endpoint that does not exist or miss one that does.
curl https://api.agentency.com/v1/openapi.json -o agentency.jsonDiff it between releases to see exactly what changed, or generate a typed client from it. Both SDKs are built this way.