# API changes: October 10, 2026

[← Changelog](/docs/changelog) · [October 2026](/docs/changelog/2026-10)

### BC-1010-1: Cloud task service routes moved to V1

> Old format supported until: not provided

**Before**

Session exchange and closure used `POST /internal/cloud-task-sessions/exchange` and `POST /internal/cloud-task-sessions/close`. Events used `POST /internal/cloud-task-events`.

**After**

Use `POST /v1/internal/cloud-task-sessions/exchange`, `POST /v1/internal/cloud-task-sessions/close` and `POST /v1/internal/cloud-task-events`. Service JWT requirements and request and response formats remain unchanged. The previous routes are unavailable.

**What integrators should do**

Update request URLs after the new routes are deployed on Vibecode.

### NEW-1010-2: Application secret names

Added `GET/POST/DELETE /v1/applications/:id/secrets[/:name]` and MCP `manage_app_secrets` to list, create and delete application secret names. Values are neither accepted nor returned through the API or MCP. The API returns 404 for accounts where the feature is unavailable. [Documentation](/docs/applications/app-secrets).

### FIX-1010-3: AI quota is checked before wallet balance

**Before**

A negative wallet balance could block chat, embeddings, images and audio transcription even with available tariff AI quota. Monetary refusals did not always include a top-up link.

**After**

Calls explicitly covered by tariff quota in enforce mode with v2 pricing skip wallet monetary preflight. Overage checks and transactional charges remain in place. Monetary refusals for AI, search and research include `error.topupUrl` independently of the copay notification flag. The reasons `wallet_empty`, `wallet_off` and `breaker` have distinct explanations. The bot's insufficient-funds message includes a top-up button.

**Integrator impact**

Public error codes remain unchanged. Use the error code and reason to choose an action, and the optional `error.topupUrl` field to open the top-up page, rather than parsing message text.

### FIX-1010-4: consistent denial status when the plan or subscription could not be read

**Before**

When creating a server through [POST /v1/infra/servers](/docs/infra/servers/create), `PORTAL_TARIFF_UNREADABLE` and `PORTAL_SUBSCRIPTION_UNREADABLE` could return HTTP 402 instead of the documented HTTP 403.

**After**

Both codes return HTTP 403 on every server creation path. Payment and trial denials retain HTTP 402.

**Impact on integrators**

Handle denials by `error.code`. An unreadable plan or subscription does not mean a purchase is needed.

### NEW-1010-5: Connector price in the connector list

[GET /v1/connectors](/docs/connectors-host) returns a `pricing` field for each connector: the price range of its tools in Vibe credits per successful call (`minVibes`, `maxVibes` as strings), or `null` when the connector is free. A paid call in the gateway may end with `INSUFFICIENT_BALANCE`, `ACCOUNT_FROZEN`, `DAILY_CAP_REACHED` or `COMPANY_BUDGET_EXHAUSTED` in `_meta["vibe/error"]`.

### NEW-1010-6: Cowork money-pause reason in AI responses

When Cowork is paused due to insufficient funds, `cowork_subscription_inactive` errors from `POST /v1/chat/completions` and `POST /v1/images/generations` include optional fields `reason: INSUFFICIENT_BALANCE` and `topupUrl`, linking to the Bitrix24 account balance top-up page. The status remains `402`; other reasons do not receive these fields.
