Changelog
What changed in the API
Changes that alter what a caller sees, newest first, each linked to the pull request that shipped it.
Health checks name the build serving your request
GET /health/quick now returns the commit behind the response, so a deploy can be confirmed from outside rather than assumed.
A stream that fails upstream ends with an error event
If a provider fails partway through a streamed /v1/messages response, the stream now ends with an explicit error event. Before, it could simply stop, which a client would read as a short, successful answer.
Unknown model ids stop looking retryable; undated aliases resolve
Undated vendor aliases such as claude-sonnet-4-5 resolve to their exact snapshot. An id that isn't in the catalog returns 400 model_not_found instead of a 503 that SDKs retry. We resolve aliases; we never substitute a different model.
Terminal conditions return terminal statuses
Vendor-native model ids are accepted and unknown ids return 400. A spent credit or request ceiling returns 402 with a machine-readable code instead of a 429. A request that supplies an invalid API key is rejected instead of being served as anonymous.
Changes to the dashboard and chat app are listed on the app release notes.
