Отказы бывают двух родов: легла площадка и легла модель. Первое мы закрываем сами, второе закрыть за вас нельзя — заменять модель на другую можно только с вашего согласия.
Работает по умолчанию и ничего не требует. Если выбранная площадка вернула 5xx, разорвала соединение или не уложилась в таймаут, запрос уходит следующей площадке той же модели. model в ответе при этом не меняется — меняется только provider.
| Что случилось | Переключаемся? |
|---|---|
| Таймаут соединения или ответа | Да |
| 500, 502, 503 от площадки | Да |
| 429 от площадки (её лимит, не ваш) | Да |
| 400 — запрос не разобран | Нет: другая площадка ответит так же |
| Контекст превышен | Нет |
| Отказ модели по содержанию запроса | Нет: это ответ, а не сбой |
finish_reason: "error". Отданные токены оплачены, и повторная генерация с нуля списала бы деньги дважды без вашего ведома. Решение о повторе здесь ваше.Поле models — список запасных моделей, который пробуется, когда основная недоступна целиком: снята с публикации, легли все её площадки, или запрос не проходит по её ограничениям.
{
"model": "anthropic/claude-sonnet-5",
"models": ["openai/gpt-5", "deepseek/deepseek-v3"],
"messages": [{"role": "user", "content": "…"}]
}Порядок значим. Ответ вернётся от той модели, что отработала, и её идентификатор будет в поле model — проверяйте его, если логика зависит от модели. Списание идёт по тарифу той модели, которая фактически ответила.
400 — резерва из неё не выйдет.tools или json_schema, запасная должна их уметь. Иначе список отработает вхолостую.Неудачная попытка не оплачивается: если площадка не отдала ни одного токена, платить не за что. Оплачивается только тот вызов, который дошёл до ответа. В логе активности такой запрос выглядит одной строкой с пометкой о переключении и перечнем попыток — так видно, что резерв реально срабатывает, а не лежит мёртвым грузом.
{
"model": "anthropic/claude-sonnet-5",
"provider": {"allow_fallbacks": false}
}Тогда единственный возможный исход при отказе — 502. Это нужный режим для замеров качества и для случаев, когда ответ не от той площадки хуже, чем ошибка. Переключатель по умолчанию для всего ключа — в настройках ключей.