# API changes: September 5, 2026

[← Changelog](/docs/changelog) · [September 2026](/docs/changelog/2026-09)

### FIX-0905-1: chat with a Cowork/Code key works while the product is disabled

**Before**

[POST /v1/chat/completions](/docs/ai/chat/completions) returned HTTP 503 with the lowercase code `cowork_feature_disabled` in the response body for an already-issued key carrying the `vibe:cowork` scope when Cowork/Code was disabled at the platform level.

**After**

The model call continues through the Cowork/Code subscription and still checks subscription activity, model availability, and quota. The switch continues to close Cowork/Code product interfaces and operations. Integrators do not need to change anything.

### FIX-0905-2: the key-issuance refusal now separates an unread plan from a free one

**Before**

An international account whose plan Vibecode could not read was refused key issuance with `402` and the code `INT_VIBE_PLUS_REQUIRED` (or `INT_TARIFF_REQUIRED`), advising a paid plan. That advice could be wrong — the account might already be paying — because the decision was made off an empty plan code, and the code is empty both for a read free account and for one whose licence could not be requested.

**After**

The two states are now told apart. When the plan code is absent AND the last licence probe failed, the answer is `403` with the code `PORTAL_TARIFF_UNREADABLE`: the plan was not read, and buying one does not change that. `details.requiredTariffs` is empty — no plan clears this refusal — while `details.upgradeUrl` and `alternatives[0].url` point to support. The previous codes keep their own state: an account with a plan read as free still gets `402` and the previous copy.
