Felo API PlatformFelo API Platform

Felo APIs

LLM API

Викликайте endpoint моделей Felo через протоколи, сумісні з OpenAI та Anthropic.

GET/api/v1/models

Автентифікація

Bearer API key or X-API-Key

Тип вмісту

application/json

Примітки щодо обмежень

Model service limits may apply. Retry with backoff on 429 or 503.

LLM API надає endpoint прямого виклику моделей через Felo API Platform. Використовуйте його, коли хочете викликати універсальні мовні моделі, повторно використовувати клієнти, сумісні з OpenAI або Anthropic, або підключати агентні фреймворки до Felo API Platform.

Наразі LLM API містить три поверхні виклику моделей, сумісні з чатом:

  • POST /api/v1/responses: сумісний з OpenAI Responses
  • POST /api/v1/chat/completions: сумісний з OpenAI Chat Completions
  • POST /api/v1/messages: сумісний з Anthropic Messages

Decisions API

POST https://openapi.felo.ai/api/v1/decisions

Надсилайте стан і вузькі типізовані запитання до jev-1.13 (також приймається: typesafe/jev-1.13). Використовуйте /api/v1/decisions, а не endpoint Chat Completions, Messages чи Responses. Потокова передача не підтримується.

Поля запиту

  • model: jev-1.13
  • state: контекст для оцінювання; рядок або значення JSON.
  • questions: іменовані запитання з type, instructions і criteria.
import os
import requests

response = requests.post(
    "https://openapi.felo.ai/api/v1/decisions",
    headers={"Authorization": f"Bearer {os.environ['FELO_API_KEY']}"},
    json={
        "model": "jev-1.13",
        "state": "Help! My payouts have been failing for 3 days.",
        "questions": {
            "is_urgent": {
                "type": "noul",
                "instructions": "Does this message convey urgency?",
                "criteria": {"true": "Time-sensitive", "false": "No urgency"},
            },
            "department": {
                "type": "choice",
                "instructions": "Which team should handle this?",
                "criteria": {
                    "billing": "Payments, invoicing, refunds",
                    "technical": "Bugs, outages, integrations",
                    "sales": "Pricing, upgrades, new accounts",
                },
            },
            "frustration": {
                "type": "score",
                "instructions": "How frustrated is the customer?",
                "criteria": ["Calm", "Frustrated", "Very angry"],
            },
        },
    },
    timeout=60,
)
response.raise_for_status()
answers = response.json()["answers"]
print(answers["is_urgent"]["noul"])
print(answers["department"]["choice"], answers["department"]["probabilities"])
print(answers["frustration"]["score"])

Типи відповідей

noul: імовірність від 0 до 1. choice: вибраний варіант та його розподіл імовірностей. score: числова оцінка для впорядкованих критеріїв разом із її розподілом.

Помилки використовують error.code (числовий статус HTTP) і error.message. Обробляйте відповіді, що не належать до 2xx, перш ніж читати answers.

Використання та ціни

Відповідь містить usage.input_tokens, usage.output_tokens і може містити usage.cost. Довідкові тарифи станом на 2026-10-12: вхідні дані — 0,042 дол. США за мільйон токенів; вихідні — 0 дол. США. Нульовий тариф на вихідні дані не робить використання вхідних даних безкоштовним. Тарифи можуть змінюватися; для оцінок використовуйте опубліковану ціну моделі та чинні знижки облікового запису.

Автентифікація

Запити до LLM API потребують ключа Felo API Platform. Використовуйте Authorization: Bearer ... або X-API-Key.

Authorization: Bearer YOUR_API_KEY
X-API-Key: YOUR_API_KEY

Про створення та керування API-ключами див. посібник з автентифікації.

Базова URL-адреса

Використовуйте публічний хост Felo API Platform:

https://openapi.felo.ai

Для клієнтів SDK налаштуйте базову URL-адресу відповідного протоколу, як показано в Базове використання.

Спільні заголовки

ЗаголовокОбов'язковийОпис
AuthorizationТак, якщо не використовується X-API-KeyAPI-ключ у форматі Bearer YOUR_API_KEY
X-API-KeyТак, якщо не використовується AuthorizationAPI-ключ як альтернатива заголовку Bearer
Content-TypeТакМає бути application/json
X-Request-IdНіНеобов'язковий ID запиту для діагностики

Виявлення моделей

Загальний каталог містить усі категорії моделей. Використовуйте окремі списки, щоб знайти відеомоделі або моделі рішень:

EndpointКатегорії моделей
GET /api/v1/modelsУсі категорії (без змін)
GET /api/v1/videos/modelsГенерація відео (video_generation)
GET /api/v1/decisions/modelsРішення, зокрема Jev (decisions)

Усі три endpoint приймають необов'язковий параметр запиту provider (наприклад, openrouter) і повертають {"object":"list","data":[...]}. Кожен елемент містить id, object, created, owned_by і model_kind. Окремі списки використовують фактичну категорію після перевизначень зіставлення увімкнених постачальників.

Повертаються лише увімкнені, внесені до списку та не видалені моделі з поточною ціною, що відповідає умовам постачальника; нульова ціна є припустимою. Новосинхронізовані моделі приховані, доки адміністратор не внесе їх до списку. Усі списки мають спільний налаштований порядок, а назва й ID моделі слугують критеріями розв'язання нічиєї. За відсутності збігів повертається HTTP 200 із порожнім масивом data. Виявлення читає локальний каталог і не викликає модель та не списує кошти за виклик.

Лише GET /api/v1/models приймає exclude_video_and_decisions (boolean, за замовчуванням false). Установіть true, щоб виключити фактичні типи video_generation і decisions; моделі зображень залишаються доступними. Його можна поєднувати з provider. Якщо параметр пропущено або встановлено false, зберігається повний каталог. Некоректні булеві значення повертають HTTP 422.

curl "https://openapi.felo.ai/api/v1/models?exclude_video_and_decisions=true&provider=openrouter" \
  -H "Authorization: Bearer ${FELO_API_KEY}"
curl "https://openapi.felo.ai/api/v1/videos/models?provider=openrouter" \
  -H "Authorization: Bearer ${FELO_API_KEY}"
curl "https://openapi.felo.ai/api/v1/decisions/models?provider=openrouter" \
  -H "Authorization: Bearer ${FELO_API_KEY}"

Вибирайте endpoint виклику за model_kind: chat для Responses, Chat Completions або Messages, якщо модель їх підтримує; video_generation для POST /api/v1/videos/generations; decisions для POST /api/v1/decisions; image_generation для POST /api/v1/images/generations. Подробиці доступні за GET /api/v1/models/{model_id}. Модель зі списку не обов'язково сумісна з кожним endpoint виклику.

Моделі зображень не мають окремого endpoint списку. Фільтруйте GET /api/v1/models за model_kind: "image_generation". Поля запиту для зображень див. у Генерація зображень.

Моделі та ціни

Запити використовують канал моделі за замовчуванням, якщо ви не закріпите інший через X-Felo-Channel. Передайте впорядкований список публічних кодів каналів із каталогу моделей, розділених комами; пропустіть заголовок, щоб використати канал за замовчуванням. Використовуйте default лише окремо. Надсилається лише група постачальника першого каналу; автоматичного резервного переходу немає. Див. Канали та маршрутизація постачальників.

Ціни наведено в доларах США. Для зручності тарифи за токени показано за 1 мільйон токенів; білінг використовує точність за токен із поточного знімка цін. Тарифи кешу застосовуються лише тоді, коли відповідь протоколу містить дані про використання кешу. Прочерк означає відсутність окремого опублікованого тарифу або ліміту. Використання вебпошуку, якщо модельний сервіс його повідомляє, оплачується за $0.01 за пошук.

ID моделіВікно контекстуМакс. вихідВхід / 1M токенівВихід / 1M токенівЧитання кешу / 1M токенівЗапис кешу / 1M токенів
claude-haiku-4-5200K64K$1.00$5.00$0.10$1.25
claude-sonnet-4-61M128K$3.00$15.00$0.30$3.75
claude-opus-4-81M128K$5.00$25.00$0.50$6.25
claude-sonnet-51M128K$2.00$10.00$0.20$2.50
claude-haiku-5-51M128K$0.10$0.50$0.01$0.0125
gpt-5.51.05M128K$5.00$30.00$0.50-
gpt-5.5-pro1.05M128K$30.00$180.00--
gpt-5.6-luna1.05M128K$1.00$6.00$0.10$1.25
gpt-5.6-terra1.05M128K$2.50$15.00$0.25$3.125
gpt-5.6-sol1.05M128K$5.00$30.00$0.50$6.25
grok-4.5500K-$2.00$6.00$0.50-
deepseek-v4-flash1M384K$0.09$0.18$0.018-

Claude Haiku 5.5 використовує ступінчасті ціни: запити до 100K токенів оплачуються за стандартними тарифами вище, а запити, чий запит перевищує 100K токенів, оплачуються за $0.50 за вхідні дані, $2.50 за вихідні, $0.05 за читання кешу та $0.0625 за запис кешу на 1M токенів для всього запиту.

GPT-5.6 доступний у трьох рівнях: Luna для швидких і економних робочих навантажень; Terra для збалансованого кодування, міркування та агентних завдань; Sol для флагманських складних міркувань і кодування. Кожен рівень також надає ID моделі -pro (gpt-5.6-luna-pro, gpt-5.6-terra-pro і gpt-5.6-sol-pro), що використовує ту саму базову модель із pro-режимом міркування. Ціни, довжина контексту та максимальний вихід для ID -pro не змінюються.

DeepSeek V4 Flash підтримує режими міркування та без міркування, виведення JSON, виклики інструментів, Responses API і сумісність з Anthropic API. Він доступний через поверхні Responses, Chat Completions і Messages від Felo. Тариф на запис кешу ще не опубліковано.

Базове використання

У цих прикладах використовуються офіційні SDK OpenAI та Anthropic. Установіть FELO_API_KEY зі своїм ключем Felo API Platform перед запуском прикладів.

export FELO_API_KEY="YOUR_API_KEY"

Встановлення SDK

OpenAI SDK

Використовуйте OpenAI SDK для Responses API та Chat Completions API.

##### JavaScript

npm install openai

##### Python

pip install openai

Anthropic SDK

Використовуйте Anthropic SDK для Messages API.

##### JavaScript

npm install @anthropic-ai/sdk

##### Python

pip install anthropic

Налаштування клієнтів

Endpoint, сумісні з OpenAI, використовують базову URL-адресу OpenAI SDK з /api/v1, оскільки SDK додає шляхи ресурсів, як-от /responses і /chat/completions.

JavaScript

import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: process.env.FELO_API_KEY,
  baseURL: "https://openapi.felo.ai/api/v1",
});

Python

import os
from openai import OpenAI

openai = OpenAI(
    api_key=os.environ.get("FELO_API_KEY"),
    base_url="https://openapi.felo.ai/api/v1",
)

Endpoint, сумісні з Anthropic, використовують базову URL-адресу Anthropic SDK без /v1, оскільки SDK додає /v1/messages.

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const anthropic = new Anthropic({
  apiKey: process.env.FELO_API_KEY,
  baseURL: "https://openapi.felo.ai/api",
});

Python

import os
from anthropic import Anthropic

anthropic = Anthropic(
    api_key=os.environ.get("FELO_API_KEY"),
    base_url="https://openapi.felo.ai/api",
)

Використання Responses API

Використовуйте Responses API для нових інтеграцій, сумісних з OpenAI, та об'єктів відповідей в агентному стилі.

JavaScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FELO_API_KEY,
  baseURL: "https://openapi.felo.ai/api/v1",
});

const response = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Write a one-sentence bedtime story about a unicorn.",
});

console.log(response.output_text);

Python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("FELO_API_KEY"),
    base_url="https://openapi.felo.ai/api/v1",
)

response = client.responses.create(
    model="gpt-5.6-sol",
    input="Write a one-sentence bedtime story about a unicorn.",
)

print(response.output_text)

Використання Chat Completions

Використовуйте Chat Completions, коли ваш застосунок уже надсилає messages у стилі OpenAI.

JavaScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FELO_API_KEY,
  baseURL: "https://openapi.felo.ai/api/v1",
});

const completion = await client.chat.completions.create({
  model: "gpt-5.6-sol",
  messages: [
    {
      role: "user",
      content: "Give me one sentence about why API compatibility matters.",
    },
  ],
});

console.log(completion.choices[0].message.content);

Python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("FELO_API_KEY"),
    base_url="https://openapi.felo.ai/api/v1",
)

completion = client.chat.completions.create(
    model="gpt-5.6-sol",
    messages=[
        {
            "role": "user",
            "content": "Give me one sentence about why API compatibility matters.",
        }
    ],
)

print(completion.choices[0].message.content)

Використання Messages

Використовуйте Messages, коли ваш клієнт або агентний фреймворк очікує структури запитів і відповідей, сумісні з Anthropic.

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.FELO_API_KEY,
  baseURL: "https://openapi.felo.ai/api",
});

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 128,
  messages: [
    {
      role: "user",
      content: "Summarize the value of direct model APIs in one sentence.",
    },
  ],
});

const text = message.content
  .filter((block) => block.type === "text")
  .map((block) => block.text)
  .join("");

console.log(text);

Python

import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ.get("FELO_API_KEY"),
    base_url="https://openapi.felo.ai/api",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=128,
    messages=[
        {
            "role": "user",
            "content": "Summarize the value of direct model APIs in one sentence.",
        }
    ],
)

text = "".join(block.text for block in message.content if block.type == "text")
print(text)

Офіційна документація

Про налаштування клієнтів агентів див. Налаштування Claude Code і Codex.

Довідник протоколів

Responses

Використовуйте цей endpoint для клієнтів та інтеграцій, сумісних з OpenAI Responses API.

Endpoint

POST https://openapi.felo.ai/api/v1/responses

Тіло запиту

ПараметрТипОбов'язковийОпис
modelstringТакПублічний ID моделі Felo
inputstring or arrayТакВхідні дані користувача, багатоходові вхідні дані або мультимодальні вхідні дані
instructionsstringНіСистемні інструкції або інструкції розробника
streambooleanНіЧи використовувати потокову передачу Server-Sent Events
temperaturenumberНіТемпература вибірки
max_output_tokensintegerНіМаксимальна кількість вихідних токенів

Запит через SDK

const response = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Reply with exactly: responses ok",
});

console.log(response.output_text);

Шлях до тексту відповіді

output_text

Chat Completions

Використовуйте цей endpoint для клієнтів і SDK, сумісних з OpenAI Chat Completions.

Endpoint

POST https://openapi.felo.ai/api/v1/chat/completions

Тіло запиту

ПараметрТипОбов'язковийОпис
modelstringТакПублічний ID моделі Felo
messagesarrayТакПовідомлення розмови
messages[].rolestringТакsystem, user або assistant
messages[].contentstringТакВміст повідомлення
streambooleanНіЧи використовувати потокову передачу Server-Sent Events
temperaturenumberНіТемпература вибірки
max_tokensintegerНіМаксимальна кількість вихідних токенів

Запит через SDK

const completion = await client.chat.completions.create({
  model: "gpt-5.6-sol",
  messages: [
    {
      role: "user",
      content: "Reply with exactly: chat completions ok",
    },
  ],
});

console.log(completion.choices[0].message.content);

Шлях до тексту відповіді

choices[0].message.content

Messages

Використовуйте цей endpoint для клієнтів і SDK, сумісних з Anthropic Messages.

Endpoint

POST https://openapi.felo.ai/api/v1/messages

Тіло запиту

ПараметрТипОбов'язковийОпис
modelstringТакПублічний ID моделі Felo
max_tokensintegerТакМаксимальна кількість вихідних токенів
messagesarrayТакПовідомлення розмови
messages[].rolestringТакuser або assistant
messages[].contentstring or arrayТакЗвичайний текст або блоки вмісту Anthropic
systemstringНіСистемна підказка
streambooleanНіЧи використовувати потокову передачу Server-Sent Events
temperaturenumberНіТемпература вибірки

Запит через SDK

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 64,
  messages: [
    {
      role: "user",
      content: "Reply with exactly: messages ok",
    },
  ],
});

const text = message.content
  .filter((block) => block.type === "text")
  .map((block) => block.text)
  .join("");

console.log(text);

Запит із блоками вмісту

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 64,
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: "Reply with exactly: messages ok",
        },
      ],
    },
  ],
});

Шлях до тексту відповіді

content[].text

Потокова передача

Установіть stream у true, щоб отримувати Server-Sent Events. Формат корисного навантаження подій відповідає вибраному протоколу:

  • Потоки Responses повертають події відповідей, сумісні з Responses.
  • Потоки Chat Completions повертають фрагменти завершень чату, сумісні з OpenAI.
  • Потоки Messages повертають події повідомлень, сумісні з Anthropic.
const stream = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Write one sentence.",
  stream: true,
});

Клієнти мають розбирати потік відповідно до протоколу, який вони використовують, а не очікувати єдиної спільної схеми подій для всіх трьох endpoint.

Помилки

LLM API за можливості повертає структуру помилки вибраного протоколу. Типові причини:

Статус HTTPПричинаРекомендована дія
400Некоректне тіло JSON або відсутні обов'язкові поля протоколуПеревірте model, messages, input, max_tokens і поля блоків вмісту
401Відсутній або недійсний API-ключПеревірте Authorization: Bearer ... або X-API-Key
402Недостатньо кредитів на обліковому записіПеревірте баланс свого облікового запису Felo
429Перевищено обмеження швидкостіУповільніть запити та повторіть спробу пізніше
502Запит до модельного сервісу не вдавсяПовторіть спробу та надайте X-Request-Id під час звернення до підтримки
503Модельний сервіс тимчасово недоступнийПовторіть спробу зі збільшенням інтервалу або виберіть іншу опубліковану модель