# API changes: September 5, 2026

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

### FIX-0905-1: chat with a Cowork 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 was disabled at the platform level.

**After**

The model call continues through the Cowork subscription and still checks subscription activity, model availability, and quota. The switch continues to close Cowork 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.
