Прозрачная маршрутизация и flight breakdown
Прозрачный роутер PlusVibe: явный выбор маршрута через :alias или auto-route по стратегии ключа. Публичные псевдонимы, failover, reveal/debug-заголовки x-plusvibe-route и поля route/address_as в истории.
PlusVibe — прозрачный маршрутизатор: вы либо явно выбираете публичный вариант через суффикс :alias, либо оставляете имя модели без суффикса — тогда шлюз сам подбирает маршрут по стратегии аккаунта/ключа и при сбоях переключается на другой доступный вариант. В ответах и истории используются только публичные идентификаторы маршрутов.
Два режима: pin или auto
| Параметр | Тип | Описание |
|---|---|---|
Явный pin | model:alias или model:N | Запрос всегда идёт через выбранный вариант. Межвариантный failover отключён: при 429/5xx ошибка возвращается как есть (допускается повтор на том же варианте). |
Auto (bare model) | только имя модели | Шлюз выбирает вариант по настройкам аккаунта или ключа. При 429/5xx и пустом 200 пробует другие варианты той же модели с ограничениями по стоимости и входным данным. |
"model": "claude-opus-4.8" // auto — стратегия аккаунта/ключа
"model": "claude-opus-4.8:sub" // pin — только :sub, без переключения на :nexus
"model": "claude-opus-4.8:2" // pin — вариант №2 из каталога (устаревший :N синтаксис)Публичные псевдонимы (:alias)
Суффикс после двоеточия — это публичный идентификатор маршрута, а не имя upstream. Полный перечень для конкретной модели — в каталоге (Модели, колонка «В API»). Основные псевдонимы:
| Параметр | Тип | Описание |
|---|---|---|
:sub | alias | Публичный вариант модели. Доступность и цена указаны в каталоге. |
:network | alias | Публичный вариант модели; цена и доступность указаны в каталоге. |
:sub5 | alias | Публичный вариант для совместимых моделей. |
:sub5plus | alias | Расширенный GPT-5.6 sub-пул (Plus tier). |
:sub5max | alias | Max-tier пул для Claude-моделей. |
:nexus | alias | Публичный вариант с широким каталогом, обычно дороже. |
:pixel / :flow | alias | Медиа-маршруты (изображения/видео), не чат. |
Настройки аккаунта и ключа
Для auto-запросов (bare model) в личном кабинете задаются:
| Параметр | Тип | Описание |
|---|---|---|
routingStrategy | string | priority (по умолчанию) — порядок providerPriority, иначе первый вариант в каталоге; price — самый дешёвый для нас вариант; latency — самый быстрый по недавним замерам; default — жёстко первый eligible вариант. |
providerPriority | список | Приоритет внутренних тегов провайдеров (в кабинете — человекочитаемые имена). Используется при strategy=priority. Ключ переопределяет аккаунт. |
disabledProviders | список | Исключить провайдеров из auto-маршрутизации. Объединяется по ключу и аккаунту (union). Явный :alias по-прежнему можно вызвать, если вариант существует. |
cacheOnly | boolean | Только варианты с поддержкой кэша промпта — выгодно при повторяющемся префиксе. |
allowedModels и лимиты в таблице ниже.Стратегия маршрутизации
| Параметр | Тип | Описание |
|---|---|---|
priority (по умолчанию) | strategy | Обычный маршрут по умолчанию. |
price | strategy | Выбирать вариант с наименьшей ценой среди доступных для модели. |
latency | strategy | Выбирать самый быстрый по недавним замерам вариант. |
cacheOnly | boolean | Только кэширующие варианты — выгодно при повторяющемся префиксе промпта. |
:sub) — он всегда уважается и маршрутизация его не переопределяет. Настраивается в личном кабинете для аккаунта или для конкретного ключа (ключ имеет приоритет над аккаунтом).Явный выбор провайдера
Добавьте псевдоним провайдера через двоеточие — он уважается независимо от стратегии маршрутизации. Полный список псевдонимов и примеры — в разделе Модели → Провайдеры.
"model": "claude-opus-4.8" // auto — стратегия аккаунта/ключа
"model": "claude-opus-4.8:sub" // явно зафиксировать провайдера :sub
"model": "claude-opus-4.8:nexus" // явно зафиксировать провайдера :nexusЛимиты ключа
Для каждого API-ключа в кабинете можно задать:
| Параметр | Тип | Описание |
|---|---|---|
allowedModels | список моделей | Белый список моделей, которые разрешено вызывать этим ключом. Пусто — разрешены все. Запрос модели вне списка получает 403. |
routingStrategy / cacheOnly | переопределение | Своя стратегия и фильтр кэша для ключа — переопределяют настройки аккаунта. |
limitRub | лимит трат | Лимит расходов на ключ. |
allowedIps | белый список IP | Ограничение по IP (см. раздел «Аутентификация»). |
Режим «Самый быстрый» для модели
В кабинете: Модели → карточка модели → Маршрутизация → «Самый быстрый», для всех ключей или для одного. Запрос без суффикса идёт в канал с самым быстрым первым токеном по живым замерам за последние 15 минут. Каналы на паузе после сбоев пропускаются, пока есть здоровые; каналы дороже вашего лимита цены не выбираются никогда. Цена — цена канала, который ответил. На запросы с явным :alias режим не влияет.
Лимит цены
Лимит в ₽ за 1 млн токенов сравнивается с ценой канала из каталога — той, что списывается. Должны пройти обе ноги, вход и выход. Запрос без суффикса идёт только в каналы не дороже лимита, в том числе при переключении после сбоя.
| Параметр | Тип | Описание |
|---|---|---|
Лимит цены, ₽/1 млн | настройка ключа | API-ключи → ключ → «Лимит цены»: вход и/или выход. Действует на каждый запрос этого ключа. |
max_price | число или объект | Лимит для одного запроса в теле: число ограничивает обе ноги, {"input": 2.5, "output": 10} — раздельно. Может только сузить лимит ключа, не расширить. |
{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "привет"}],
"max_price": {"input": 2.5, "output": 10}
}422 с типом price_ceiling_no_lane (лимит ключа) или price_bound_no_lane (max_price) и ценой самого дешёвого доступного канала. Закреплённый :alias дороже лимита тоже получает 422 — вместо него мы не подставляем другой канал.Failover (только auto)
При bare model шлюз может переключиться на другой публичный вариант той же модели, если текущий вернул 429, 5xx или пустой 200 без контента. Ограничения:
- Запросы с изображениями/PDF не переключаются на другой провайдер (vision-совместимость).
- Failover не уходит на вариант существенно дороже (кроме strategy=price).
- Есть верхняя граница числа попыток на один клиентский запрос.
- При pin (
:alias) межпровайдерный failover отключён — вы получаете ошибку выбранного маршрута.
Повтор с экспоненциальной задержкой при 429 описан в Ошибки и лимиты.
Flight breakdown — какой маршрут обслужил запрос
Для доверенных reveal/debug-клиентов после выполнения запроса (включая auto) доступны заголовки с тем, какой публичный вариант реально отработал. Обычным клиентам эти данные не возвращаются.
Заголовки ответа для доверенных reveal/debug-клиентов (chat / messages / responses)
| Параметр | Тип | Описание |
|---|---|---|
x-plusvibe-route | string | Публичный псевдоним маршрута: sub, sub5plus, network, cxc, … |
x-plusvibe-model | string | Значение model для повторного pin: base или base:alias (например gpt-5.6-luna:sub5plus). При явном pin совпадает с вашим выбором. |
x-pv-generation-id | string | ID записи в истории (не-stream). См. Баланс и история. |
curl -sD - https://plusvibeapi.ru/v1/chat/completions \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-luna","messages":[{"role":"user","content":"ping"}],"max_tokens":8}' \
-o /dev/null | grep -i x-plusvibe
# x-plusvibe-route: sub5plus
# x-plusvibe-model: gpt-5.6-luna:sub5plusИстория использования
В GET /v1/generations, GET /v1/usage и кабинете к каждой записи добавлены поля:
| Параметр | Тип | Описание |
|---|---|---|
model | string | Базовое имя модели (без внутренних суффиксов). |
route | string | null | Публичный :alias победившего маршрута. |
address_as | string | Точное значение для поля model при повторном pin (как в каталоге addressAs). |
cost_detail | object | Как рассчитано списание: строки токенов со ставкой за 1 млн (lines), надбавки (adjustments) и сумма (total). Если запрос обслужил ценовой уровень поставщика, а не базовый тариф, rateBasis = "tier", строки показаны по ставке этого уровня и в сумме дают списание, а tier называет эту ставку. |
model и cost_usd (кроме клиентов с reveal-исключением). Flight breakdown — только в заголовках и истории, без поломки SDK.Ограничения
PlusVibe не предоставляет «сырой» waterfall с перечислением upstream-провайдеров в теле запроса. Управление — через публичные :alias, стратегию ключа и auto-failover внутри каталога модели. Нет отдельного API «ignore providers» или ZDR-флагов маршрутизации.