Руководства
Каналы и маршрутизация провайдеров
Закрепляйте модели за конкретным провайдером через X-Felo-Channel и разберитесь с маршрутизацией по умолчанию, тарификацией и fallback.
Одна модель может обслуживаться несколькими upstream-провайдерами. По умолчанию Felo выбирает провайдера за вас. Когда нужен конкретный поставщик, отправьте заголовок запроса X-Felo-Channel с одним или несколькими публичными кодами каналов.
Поддерживаемые endpoint'ы
X-Felo-Channel принимается на каждом endpoint генерации Model API:
| Endpoint | Протокол |
|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions |
POST /api/v1/responses | OpenAI Responses |
POST /api/v1/messages | Anthropic Messages |
POST /api/v1/images/generations | Генерация изображений |
POST /api/v1/videos/generations | Генерация видео |
POST /api/v1/decisions | Decisions |
Он не применяется к Data API (/v1/beta) или Felo APIs (/v2).
Значения заголовка
Значение — упорядоченный список публичных кодов каналов через запятую:
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic
X-Felo-Channel: defaultПравила из публичной спецификации Model API:
- Пропустите заголовок, чтобы использовать маршрут по умолчанию.
defaultдопустим только сам по себе. Не комбинируйте его с кодами каналов.- Публичные коды каналов берутся из поля
channels[].codeмодели в каталоге. Используйте код, а не отображаемое имя поставщика. - Маршрутизировать можно только исполняемые и опубликованные каналы.
Маршрутизация по умолчанию
Если пропустить заголовок или отправить только default, провайдера выбирает платформа. В режиме wallet она просматривает эффективный публичный порядок каналов модели в обратном направлении, пропускает неопубликованные и недоступные каналы и выбирает провайдера первого доступного канала. Она может включить доступные endpoint'ы этого провайдера с тем же upstream ID модели и service tier.
Отправлять X-Felo-Channel: default не нужно; пропуск заголовка — обычный способ использовать маршрут по умолчанию.
Явная маршрутизация
Когда вы отправляете коды каналов, они проверяются в указанном порядке. Отправляется только группа провайдера первого канала. Автоматического fallback к другому провайдеру нет.
Это значит, что список каналов — это выбор, а не политика повторных попыток. Если нужен failover, реализуйте его в приложении: после сбоя первого канала отправьте новый запрос с другим каналом.
Устаревшие заголовки провайдеров не могут переопределить X-Felo-Channel. Если другой заголовок в клиенте тоже требует провайдера, приоритет у X-Felo-Channel.
Цены
Каждый публичный канал публикует свои стандартные тарифы и множитель скидки. Цена поставщика на странице модели — это цена клиента для этого канала. Закреплённый канал определяет, чей тариф применяется.
Перед закреплением канала для высоконагруженной задачи сравните строки поставщиков на странице модели и прочитайте Модели и цены.
Как найти код канала
- Откройте страницу модели и найдите таблицу поставщиков.
- Сопоставьте поставщика с его публичным кодом канала. Код — это стабильный идентификатор, используемый API.
- Если вы читаете каталог напрямую, используйте
channels[].codeи проверяйтеrunnable.
Например, claude-haiku-5-5 публикует несколько каналов, включая anthropic (по умолчанию), azure, google-vertex-global и claude-cc. Строка claude-cc показывает собственную скидку, поэтому её закрепление меняет и провайдера, и тариф.
Примеры
Chat Completions, закреплённый за одним каналом:
curl https://openapi.felo.ai/api/v1/chat/completions \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Felo-Channel: claude-cc" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'Anthropic Messages с тем же каналом:
curl https://openapi.felo.ai/api/v1/messages \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Felo-Channel: claude-cc" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'Маршрутизация по умолчанию, без заголовка маршрутизации:
curl https://openapi.felo.ai/api/v1/chat/completions \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'