Felo API PlatformFelo API Platform

Руководства

Каналы и маршрутизация провайдеров

Закрепляйте модели за конкретным провайдером через X-Felo-Channel и разберитесь с маршрутизацией по умолчанию, тарификацией и fallback.

Одна модель может обслуживаться несколькими upstream-провайдерами. По умолчанию Felo выбирает провайдера за вас. Когда нужен конкретный поставщик, отправьте заголовок запроса X-Felo-Channel с одним или несколькими публичными кодами каналов.

Поддерживаемые endpoint'ы

X-Felo-Channel принимается на каждом endpoint генерации Model API:

EndpointПротокол
POST /api/v1/chat/completionsOpenAI Chat Completions
POST /api/v1/responsesOpenAI Responses
POST /api/v1/messagesAnthropic Messages
POST /api/v1/images/generationsГенерация изображений
POST /api/v1/videos/generationsГенерация видео
POST /api/v1/decisionsDecisions

Он не применяется к 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.

Цены

Каждый публичный канал публикует свои стандартные тарифы и множитель скидки. Цена поставщика на странице модели — это цена клиента для этого канала. Закреплённый канал определяет, чей тариф применяется.

Перед закреплением канала для высоконагруженной задачи сравните строки поставщиков на странице модели и прочитайте Модели и цены.

Как найти код канала

  1. Откройте страницу модели и найдите таблицу поставщиков.
  2. Сопоставьте поставщика с его публичным кодом канала. Код — это стабильный идентификатор, используемый API.
  3. Если вы читаете каталог напрямую, используйте 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."}]
  }'

Связанные разделы