API reference
Versioning and deprecation
The API is versioned in the URL. Within a version we only add things, and we give notice before anything is removed or changed.
v1 is additive only
Everything under /api/v1 follows these rules. Changes we can make at any time, without notice:
- New endpoints.
- New optional request parameters or body fields.
- New fields in responses. Ignore fields you do not recognise.
- New error codes. Handle unknown codes by their HTTP status.
- Changes to error
messagetext. Match onerror.code, not the message.
Breaking changes
A breaking change is anything that can make a correct client fail: removing or renaming an endpoint, field or parameter, changing a type or default, making an optional input required, or changing the status code or error code for an existing case.
- We announce it in the changelog at least 90 days before it takes effect.
- Affected responses carry a
Deprecationheader from the announcement, and aSunsetheader with the date the old behaviour ends.
The exception is a fix for a security issue, which may ship with shorter notice. It will still be recorded in the changelog.
History
Before this policy was published, a validation change shipped on 30 September 2026 without a notice period (unknown require values and extra PATCH fields now return 422). It is listed in the changelog. Changes since then follow the rules above.
SDKs
The Python and TypeScript SDKs and the MCP server follow semantic versioning. While they are below 1.0, a minor version (0.x) may contain breaking changes; each one is noted in the package changelog and in ours.