Changelog
Every change to /v1, dated, marked additive or fixed, whether or not anyone was affected.
A breaking change is a new version, never a mutation of /v1 — see what is breaking.
2026-09-05 — /v1 first published
Additive. The complete surface: runs (submit, list, get, delete, cancel, transcript, deliver),
uploads (open, state, parts, complete, abort), destinations (list, register, update, remove, test,
deliveries) and health. Signed webhooks for run.completed, run.failed, run.canceled with the
t=…,v1=… signature scheme and the 1m, 5m, 30m, 2h, 12h retry ladder. The OpenAPI document and
the generated TypeScript client.
What is breaking
| Breaking — needs /v2 | Not breaking — ships to /v1 |
|---|---|
| Removing or renaming an endpoint, a field or a query parameter | Adding an endpoint |
| Adding a required request field | Adding an optional request field with a default that preserves today's behaviour |
| Changing a field's type, or making it null more often | Adding a response field |
| Adding a value to an enumeration a client branches on (run_status, error_class, step, lane) | Adding an api_error_code for a situation that previously returned internal_error |
| Changing an HTTP status for an unchanged situation | Loosening validation |
| Changing the signature scheme, the signed string or the header name | Adding a v2= field beside v1= in the signature header |
| Changing a default | Changing a cursor's internal encoding — it is opaque |
/v1 does not disappear while anything is using it: it is retired when its request count over 30
days is zero, or with at least 12 months' notice here, an email to every account holding a live
key, and Deprecation and Sunset headers on every response for the whole period. A /v2 would
arrive side by side, and a destination's payload shape stays at the version that created it.