Felo APIs
LLM API
Викликайте endpoint моделей Felo через протоколи, сумісні з OpenAI та Anthropic.
/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 ResponsesPOST /api/v1/chat/completions: сумісний з OpenAI Chat CompletionsPOST /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.13state: контекст для оцінювання; рядок або значення 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_KEYX-API-Key: YOUR_API_KEYПро створення та керування API-ключами див. посібник з автентифікації.
Базова URL-адреса
Використовуйте публічний хост Felo API Platform:
https://openapi.felo.aiДля клієнтів SDK налаштуйте базову URL-адресу відповідного протоколу, як показано в Базове використання.
Спільні заголовки
| Заголовок | Обов'язковий | Опис |
|---|---|---|
Authorization | Так, якщо не використовується X-API-Key | API-ключ у форматі Bearer YOUR_API_KEY |
X-API-Key | Так, якщо не використовується Authorization | API-ключ як альтернатива заголовку 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-5 | 200K | 64K | $1.00 | $5.00 | $0.10 | $1.25 |
claude-sonnet-4-6 | 1M | 128K | $3.00 | $15.00 | $0.30 | $3.75 |
claude-opus-4-8 | 1M | 128K | $5.00 | $25.00 | $0.50 | $6.25 |
claude-sonnet-5 | 1M | 128K | $2.00 | $10.00 | $0.20 | $2.50 |
claude-haiku-5-5 | 1M | 128K | $0.10 | $0.50 | $0.01 | $0.0125 |
gpt-5.5 | 1.05M | 128K | $5.00 | $30.00 | $0.50 | - |
gpt-5.5-pro | 1.05M | 128K | $30.00 | $180.00 | - | - |
gpt-5.6-luna | 1.05M | 128K | $1.00 | $6.00 | $0.10 | $1.25 |
gpt-5.6-terra | 1.05M | 128K | $2.50 | $15.00 | $0.25 | $3.125 |
gpt-5.6-sol | 1.05M | 128K | $5.00 | $30.00 | $0.50 | $6.25 |
grok-4.5 | 500K | - | $2.00 | $6.00 | $0.50 | - |
deepseek-v4-flash | 1M | 384K | $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 openaiAnthropic 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)Офіційна документація
- Швидкий старт OpenAI API
- Створення відповіді в OpenAI
- Створення завершення чату в OpenAI
- Claude Messages API
- Anthropic TypeScript SDK
- Anthropic Python SDK
Про налаштування клієнтів агентів див. Налаштування Claude Code і Codex.
Довідник протоколів
Responses
Використовуйте цей endpoint для клієнтів та інтеграцій, сумісних з OpenAI Responses API.
Endpoint
POST https://openapi.felo.ai/api/v1/responsesТіло запиту
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
model | string | Так | Публічний ID моделі Felo |
input | string or array | Так | Вхідні дані користувача, багатоходові вхідні дані або мультимодальні вхідні дані |
instructions | string | Ні | Системні інструкції або інструкції розробника |
stream | boolean | Ні | Чи використовувати потокову передачу Server-Sent Events |
temperature | number | Ні | Температура вибірки |
max_output_tokens | integer | Ні | Максимальна кількість вихідних токенів |
Запит через SDK
const response = await client.responses.create({
model: "gpt-5.6-sol",
input: "Reply with exactly: responses ok",
});
console.log(response.output_text);Шлях до тексту відповіді
output_textChat Completions
Використовуйте цей endpoint для клієнтів і SDK, сумісних з OpenAI Chat Completions.
Endpoint
POST https://openapi.felo.ai/api/v1/chat/completionsТіло запиту
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
model | string | Так | Публічний ID моделі Felo |
messages | array | Так | Повідомлення розмови |
messages[].role | string | Так | system, user або assistant |
messages[].content | string | Так | Вміст повідомлення |
stream | boolean | Ні | Чи використовувати потокову передачу Server-Sent Events |
temperature | number | Ні | Температура вибірки |
max_tokens | integer | Ні | Максимальна кількість вихідних токенів |
Запит через 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.contentMessages
Використовуйте цей endpoint для клієнтів і SDK, сумісних з Anthropic Messages.
Endpoint
POST https://openapi.felo.ai/api/v1/messagesТіло запиту
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
model | string | Так | Публічний ID моделі Felo |
max_tokens | integer | Так | Максимальна кількість вихідних токенів |
messages | array | Так | Повідомлення розмови |
messages[].role | string | Так | user або assistant |
messages[].content | string or array | Так | Звичайний текст або блоки вмісту Anthropic |
system | string | Ні | Системна підказка |
stream | boolean | Ні | Чи використовувати потокову передачу Server-Sent Events |
temperature | number | Ні | Температура вибірки |
Запит через 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 | Модельний сервіс тимчасово недоступний | Повторіть спробу зі збільшенням інтервалу або виберіть іншу опубліковану модель |