Felo API PlatformFelo API Platform

LLM-шлюз

LLM-шлюз со встроенным слоем данных

Три базовых URL, один ключ, один баланс. Чат, изображения, видео и решающие модели — на вашем текущем SDK; поиск, документы и слайды — с того же баланса, от десятой доли официальной цены провайдера.

  • ⁦10⁩%

    Стартовая ставка относительно официальной цены API провайдера

  • ⁦5,000+⁩

    API в том же каталоге

У шлюза обычно одна поверхность. Здесь их три.

У них общий аккаунт, ключ и баланс, но отвечают они на разные вопросы и живут по разным базовым URL. Понять, какую именно вы вызываете, — это и есть вся суть.

ПоверхностьБазовый URLДля чего
Модельный APIopenapi.felo.ai/api/v1 · openapi.felo.ai/apiПрямой вызов языковой, графической, видео- или решающей модели
API данныхopenapi.felo.ai/v1/betaВызов указанного стороннего поставщика данных или поиска
Felo APIsopenapi.felo.ai/v2Собственные процессы Felo: поиск, офис, извлечение, знания

Один ключ покрывает все три. Пополнение покупает сервисные кредиты в долларах США, и вызов модели, вызов API данных и процесс Felo списываются из одного и того же — отдельный аккаунт на каждого поставщика не нужен.

Читать документацию

Шесть эндпоинтов, а не один

Всё под /api/v1 — это вызов модели, но вид модели определяет, какой эндпоинт может ответить; и каждый эндпоинт возвращает свой формат.

ЭндпоинтПротоколВозвращает
POST /api/v1/chat/completionsOpenAI Chat CompletionsПоток или один ответ
POST /api/v1/responsesOpenAI ResponsesПоток или один ответ
POST /api/v1/messagesAnthropic MessagesПоток или один ответ
POST /api/v1/images/generationsКонверт изображений OpenAItask_id для опроса
POST /api/v1/videos/generationsКонверт видео OpenAItask_id для опроса
POST /api/v1/decisionsСхема решений FeloТипизированные ответы, без потока

Три чат-поверхности — нативные реализации, а не слой трансляции: каждая отдаёт события в своём протоколе, так что поток разбирается точно так же, как сейчас.

Эндпоинт выбирают по виду модели, а не на глаз

У каждой модели в каталоге есть model_kind, и вид определяет, какой эндпоинт может её вызвать. Обнаружение бесплатно: читается локальный каталог.

# discover before you call — free, reads the catalog
GET /api/v1/models   # every kind, with channels and rates
GET /api/v1/models/{model_id}  # one model, in detail
GET /api/v1/videos/models     # video_generation only
GET /api/v1/decisions/models  # decisions only
model_kindЭндпоинт
chatResponses, Chat Completions или Messages — что поддерживает модель
image_generationPOST /api/v1/images/generations
video_generationPOST /api/v1/videos/generations
decisionsPOST /api/v1/decisions

Фильтр ?provider= оставляет одного поставщика, ?exclude_video_and_decisions=true — только чат и изображения. Наличие в каталоге не обещание: видео-модель не ответит на чат-запрос, а API вернёт model_kind_mismatch.

Маршрут по умолчанию или один заголовок для выбора провайдера

Одну модель могут отдавать несколько вышестоящих каналов, у каждого свой поставщик и опубликованная ставка. Без заголовка платформа выберет канал сама; с X-Felo-Channel выбираете вы.

# first channel only — no automatic fallback
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic  # ordered selection, not a retry list
  • Значение — упорядоченный список публичных кодов каналов из channels[].code модели, проверяемый в том порядке, в котором вы его записали.
  • Отправляется только группа поставщика первого канала, и платите вы по ставке этого канала.
  • Автоматического переключения нет. Список каналов — это выбор, а не политика повторов: если поставщик отказал, повторите из своего приложения с другим каналом.

X-Felo-Channel работает на всех шести эндпоинтах генерации выше. На API данных и Felo APIs он не действует: там запрос идёт к поставщику, указанному в самом запросе.

Читать документацию

Сколько на самом деле стоит вызов

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

  • Ставки кэша применяются только когда ответ протокола сообщает об использовании кэша; модель без такой отчётности тарифицируется целиком по входной ставке.
  • Веб-поиск, который модельный сервис реально выполнил и отразил в отчёте, стоит $0.01 за поиск.
  • Некоторые модели тарифицируются ступенями по размеру промпта: Claude Haiku 5.5 стоит $0.10 на входе и $0.50 на выходе за 1 млн токенов до промпта в 100K токенов, а выше — $0.50 и $2.50 за весь запрос.
  • Первое пополнение — от $1. Ни подписки, ни платы за рабочее место, ни минимальных обязательств: простаивающий ключ ничего не стоит.

Вызовы API данных и процессы Felo списываются с того же баланса, каждый по своей опубликованной базе: за успешный запрос, за возвращённый элемент или по фактическому расходу.

Ставки и кредиты

Два ограничения, похожих внешне и совершенно разных

Кончились кредиты — 402 INSUFFICIENT_CREDITS. Слишком частые вызовы — 429 RATE_LIMITED. Ожидание снимает второе и никогда не снимает первое.

СтатусКодЧто делать
401UNAUTHORIZEDИсправить или перевыпустить ключ
402INSUFFICIENT_CREDITSПополнить в разделе оплаты консоли и повторить
404зависит от эндпоинтаПроверить ID модели, задачи или маршрута
429RATE_LIMITEDДождаться Retry-After и повторить
5xxCHAT_FAILED, SERVICE_UNAVAILABLEПовторить с экспоненциальной задержкой и джиттером

Сегодня документированные жёсткие лимиты есть только у /v2/chat. Вызовы моделей тоже могут ограничиваться на стороне апстрима, и это проявляется как 429 — читайте X-RateLimit-* и Retry-After, а не зашивайте числа. В каждом ответе есть request_id, а отправленный вами X-Request-Id возвращается обратно, так что логи сходятся.

Читать документацию

Изображения и видео доделываются в фоне

Оба эндпоинта генерации возвращают task_id вместо результата. Отправить, опросить, забрать — и учтите: после создания задачи большинство отказов приходит как 200 с терминальным статусом, а не как HTTP-ошибка.

# submit, then poll the task
POST /api/v1/images/generations       → task_id
GET  /api/v1/images/generations/{id}  → status, result
POST /api/v1/videos/generations       → task_id
GET  /api/v1/videos/generations/{id}  → status, result

Сначала статус, потом результат: failed и interrupted — тоже ответы, причина в error.message. Если 402 пришёл при отправке, задача не создавалась. SuperAgent работает иначе — отдаёт stream_key и присылает события по SSE, опрашивать нечего.

Читать документацию

Смените базовый URL — клиент остаётся

Обоим SDK достаточно указать этот базовый URL, код менять не нужно. npx feloapi-cli setup запишет ту же конфигурацию для Claude Code и Codex.

# OpenAI SDK
base_url = "https://openapi.felo.ai/api/v1"

# Anthropic SDK — one level up; the SDK appends /v1/messages
base_url = "https://openapi.felo.ai/api"

# pin a provider (optional)
default_headers = {"X-Felo-Channel": "claude-cc"}

ID моделей у разных поставщиков не совпадают. Выберите модель в каталоге до того, как переключите базовый URL, иначе первый же вызов вернёт 404.

Та половина, которую шлюз обычно оставляет вам

LLM-шлюз маршрутизирует вызовы моделей. Здесь тот же ключ достаёт до каталога на ⁦5,000+⁩ API — так что шаг поиска в вашем агенте, сделанные им слайды и прочитанный им документ списываются с одних и тех же кредитов, а не ещё с трёх поставщиков.

  • Search
  • PPT Task
  • SuperAgent
  • Web Fetch
  • X Search
  • Mindmap
  • Landing Page Task
  • LiveDoc
  • YouTube Subtitling

Вызовы API данных идут под /v1/beta к именованным поставщикам — Tavily, Exa, Apollo и остальным из каталога — каждый по своей опубликованной базе.

Все API

Где шлюз заканчивается

  • Автоматического переключения между каналами нет — повторы остаются на вашем приложении, и это осознанно.
  • Наличие в каталоге не гарантирует совместимость: у каждого вида модели одна поверхность вызова.
  • Документированного лимита запросов на вызовы моделей нет, но лимит вышестоящего провайдера действует.
  • Кредиты предоплатные, невозвратные и не выводятся — пополняйте на сумму, которую собираетесь потратить.

Шесть вопросов об LLM-шлюзе

Что такое LLM-шлюз?

Один эндпоинт перед множеством поставщиков моделей: код обращается к одному базовому URL, одному ключу и одному балансу вместо дюжины SDK разных вендоров. AI-шлюз делает то же самое; этот ещё и продаёт API данных, нужные агенту.

Можно оставить свой OpenAI или Anthropic SDK?

Да. Chat Completions и Responses имеют форму OpenAI, Messages — нативный. Базовые URL: https://openapi.felo.ai/api/v1 и https://openapi.felo.ai/api — на уровень выше, потому что этот SDK сам дописывает /v1/messages.

Как понять, какую модель вызывать?

GET /api/v1/models перечисляет все виды с каналами и ставками; у видео- и решающих моделей свои списки. Смотрите model_kind и вызывайте соответствующий эндпоинт. Наличие в списке не значит, что модель принимает каждый эндпоинт.

Есть ли переключение при отказе провайдера?

Нет, и это осознанно. Список каналов — это выбор, а не политика повторов: отправляется только первый. Переключение должно жить в вашем приложении, где видны ошибка, бюджет и тот запасной вариант, который вам действительно нужен.

Сколько это стоит?

У каждой модели есть ставка Felo, начинающаяся с десятой доли официальной цены провайдера, а платите вы по ставке выбранного канала. Предоплата, оплата за вызов, первое пополнение от $1, без подписки.

Можно вызывать изображения, видео и API данных?

Да. Один ключ достаёт до чат-, графических, видео- и решающих моделей и каталога на ⁦5,000+⁩ API за /v1/beta — всё списывается с одного баланса.

Попробуйте на одном вызове

Создайте ключ, пополните баланс и направьте свой текущий SDK на один базовый URL.