
## Жизненный цикл моделей

Модель в каталоге Вайбкод находится в одном из трёх состояний. От состояния зависит, обслуживается ли вызов запрошенной моделью и какие сигналы приходят в заголовках ответа. Правила общие для всех вызовов модели — чата, эмбеддингов и распознавания речи.

| Состояние | Что происходит при вызове | Заголовки ответа |
|-----------|--------------------------|------------------|
| `ACTIVE` | Стандартное обслуживание, без сигналов клиенту | — |
| `DEPRECATED` | Запрос обрабатывается запрошенной моделью, в заголовках приходят сигналы об устаревании | `Deprecation: true`, `Sunset: <дата отключения>` если она назначена, `Link: </v1/models/<преемник>>; rel="successor-version"` и `X-Model-Replacement: <id-преемника>` если преемник назначен |
| `DISABLED` | Запрос **прозрачно** перенаправляется на модель-преемник. В `response.model` приходит фактически отработавшая модель | `X-Model-Fallback: <запрошенный modelId>`, `X-Model-Replacement: <фактический modelId>`, `X-Model-Fallback-Reason: model_disabled` |

## Что делать клиенту

- **`Deprecation: true`** — пометьте использование модели в логах. Если пришёл `Link: rel=successor-version`, спланируйте переход. До даты `Sunset` модель работает, после — будет отключена.
- **`X-Model-Replacement` без `X-Model-Fallback`** — это рекомендуемая модель-преемник для будущих запросов. Переключиться можно сразу.
- **`X-Model-Fallback` присутствует** — модель уже отключена, и ответ пришёл от преемника. Его идентификатор лежит в `response.model`. Обновите `model` в коде на этот идентификатор либо оставьте прежний: перенаправление продолжит работать.

Если для отключённой модели преемник не настроен, вызов вернёт `503 model_unavailable`. Это единственный случай, когда перенаправление для состояния `DISABLED` не срабатывает.

## Сигнал в каталоге моделей

В [`GET /v1/models`](./list.md) модели в состоянии `DEPRECATED` остаются — клиент видит, что они ещё работают. Модели в состоянии `DISABLED` из каталога скрыты, но прямой запрос по их `modelId` всё равно проходит через перенаправление на преемника.

Проверить состояние конкретной модели можно через [`GET /v1/models/:modelId`](./get.md): у снятой с публикации модели в ответе появляется поле `replaced_by` с идентификатором преемника, а `pricing` показывает цену преемника — ту, по которой вызов фактически тарифицируется.

## Известные особенности

**Заголовки соответствуют стандартам.** `Deprecation`, `Sunset` и `Link` следуют [`RFC 8594`](https://datatracker.ietf.org/doc/html/rfc8594) и [`RFC 8288`](https://datatracker.ietf.org/doc/html/rfc8288), поэтому распознаются стандартными HTTP-клиентами без дополнительного кода.

**Перенаправление не меняет цену запроса.** Вызов тарифицируется по цене модели, которая фактически его обслужила. Для отключённой модели это цена преемника, а не её собственная.

## Смотрите также

- [Список моделей](./list.md)
- [Получить модель](./get.md)
- [Создать чат-комплишен](/docs/ai/chat/completions)
- [AI Router](/docs/ai)
