Changelog

    What changed in the API

    Changes that alter what a caller sees, newest first, each linked to the pull request that shipped it.

    1. 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.

      #2302

    2. 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.

      #2296

    3. 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.

      #2297

    4. 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.

      #2291 · #2292 · #2293

    Changes to the dashboard and chat app are listed on the app release notes.