# Изменения API: 11 июля 2026

[← Журнал изменений](/docs/changelog) · [Июль 2026](/docs/changelog/2026-07)

### FIX-0711-1: галактики: ошибка GALAXY_HOST_UNREACHABLE стала действенной — подсказка hint и точная причина в provisionError

**Было**

Когда хост галактики был временно недоступен, [POST /v1/infra/servers/:id/deploy](/docs/infra/deploy/deploy) отвечал голым 502 с кодом `GALAXY_HOST_UNREACHABLE`, а слот, созданный одним вызовом [POST /v1/infra/servers](/docs/infra/servers/create) с `source`, переходил в статус ошибки с текстом «Deploy failed unexpectedly — please retry; details are in the server logs». Ни причина, ни путь восстановления не сообщались — клиенты удаляли слот и создавали новый, что не помогает: новый слот попадает на тот же хост.

**Стало**

Ответ 502 `GALAXY_HOST_UNREACHABLE` — при деплое, exec-команде и удалении ([DELETE /v1/infra/servers/:id](/docs/infra/servers/delete)) — несёт структурную подсказку `error.hint`: состояние временное, слот и его данные целы, нужно повторить тот же запрос через 1–2 минуты, удалять слот не нужно. На пути «создание с `source`» поле `provisionError` теперь содержит настоящую причину («Galaxy host … became unreachable during build …») и тот же совет повторить деплой в существующий слот. Дополнительно: когда несколько серверов работают под одним OAuth-приложением, сохранённая версия исходников больше не теряется из-за конфликта нумерации версий — ни при автосохранении на деплое, ни при явном сохранении через [POST /v1/infra/servers/:id/sources](/docs/source-storage).

**Влияние на интеграторов**

Изменение аддитивное: коды и статусы ответов не менялись, добавилось поле `error.hint` и уточнился текст `provisionError`. Обновлять клиентов не нужно. AI-агентам стоит читать `hint.recovery` — там прямо сказано, что делать.

### NEW-0711-2: отдельный код ошибки, когда на портале не установлен модуль Vibecode Connector

Выписка ключа приложения через модуль-коннектор ([POST /v1/apps](/docs/apps)) теперь при отсутствии на портале модуля `vibecodeconnector` возвращает `409` с кодом `CONNECTOR_MODULE_NOT_INSTALLED` и понятным сообщением «установите модуль», вместо прежнего непрозрачного `502 CONNECTOR_APP_INSTALL_FAILED`. Это законное, постоянное состояние (особенно для коробки), а не временный сбой — повторять запрос бессмысленно, нужно установить модуль на портале. Остальные коды выписки не изменились.

### FIX-0711-3: pacing в GET /v1/ai/quota теперь может заполняться платформой по умолчанию (поэтапная раскатка)

Платформа теперь умеет включать пейсинг (равномерное расходование AI-квоты) по умолчанию для портала — без действий администратора. Раскатка поэтапная (пилотные порталы → все порталы): пока портал не попал под платформенный default-on, поле `data.pacing` в ответе [GET /v1/ai/quota](/docs/ai/consumption/quota) остаётся `null`, как и раньше. Когда портал под default-on: `mode: "ignore"` — информационный режим, `active: false` — лимит окна не отклоняет запросы (отказ `429 ai_pacing_limited` невозможен). Форма ответа не изменилась; интеграторам, уже обрабатывающим `data.pacing` как опциональное поле, ничего менять не нужно.
