Felo APIs
LLM API
Volejte endpointy modelů Felo přes protokoly kompatibilní s OpenAI a Anthropic.
/api/v1/modelsOvěřování
Bearer API key or X-API-Key
Typ obsahu
application/json
Poznámky k limitům
Model service limits may apply. Retry with backoff on 429 or 503.
LLM API zpřístupňuje endpointy pro přímé volání modelů prostřednictvím Felo API Platform. Použijte ho, když chcete volat univerzální jazykové modely, znovu použít klienty kompatibilní s OpenAI nebo Anthropic, nebo připojit agentní frameworky k Felo API Platform.
LLM API v současnosti obsahuje tři plochy pro volání modelů kompatibilní s chatem:
POST /api/v1/responses: kompatibilní s OpenAI ResponsesPOST /api/v1/chat/completions: kompatibilní s OpenAI Chat CompletionsPOST /api/v1/messages: kompatibilní s Anthropic Messages
Decisions API
POST https://openapi.felo.ai/api/v1/decisionsPosílejte stav a úzce typované otázky modelu jev-1.13 (přijímáno je také typesafe/jev-1.13). Použijte /api/v1/decisions, nikoli endpointy Chat Completions, Messages nebo Responses. Streamování není podporováno.
Pole požadavku
model:jev-1.13state: Kontext k vyhodnocení; řetězec nebo hodnota JSON.questions: Pojmenované otázky pomocítype,instructionsacriteria.
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"])Typy odpovědí
noul: pravděpodobnost od 0 do 1. choice: vybraná možnost a její rozdělení pravděpodobnosti. score: číselné skóre pro uspořádaná kritéria spolu s jeho rozdělením.
Chyby používají error.code (číselný stav HTTP) a error.message. Než začnete číst answers, ošetřete odpovědi, které nejsou 2xx.
Využití a ceny
Odpověď obsahuje usage.input_tokens, usage.output_tokens a může obsahovat usage.cost. Referenční sazby ověřené 2026-10-12: vstup USD 0.042 za milion tokenů; výstup USD 0. Nulová sazba za výstup neznamená, že je využití vstupu zdarma. Sazby se mohou změnit; pro odhady použijte zveřejněnou cenu modelu a příslušné slevy účtu.
Ověřování
Požadavky na LLM API vyžadují klíč Felo API Platform. Použijte buď Authorization: Bearer ..., nebo X-API-Key.
Authorization: Bearer YOUR_API_KEYX-API-Key: YOUR_API_KEYPodrobnosti o vytváření a správě API klíčů najdete v příručce k ověřování.
Základní URL
Použijte veřejný hostitel Felo API Platform:
https://openapi.felo.aiU klientů SDK nakonfigurujte základní URL specifickou pro protokol, jak je uvedeno v části Základní použití.
Společné hlavičky
| Hlavička | Povinné | Popis |
|---|---|---|
Authorization | Ano, pokud se nepoužívá X-API-Key | API klíč ve formátu Bearer YOUR_API_KEY |
X-API-Key | Ano, pokud se nepoužívá Authorization | Alternativa API klíče k hlavičce Bearer |
Content-Type | Ano | Musí být application/json |
X-Request-Id | Ne | Volitelné ID požadavku pro řešení problémů |
Objevování modelů
Obecný katalog zahrnuje všechny kategorie modelů. Pro objevení video modelů nebo rozhodovacích modelů použijte vyhrazené seznamy:
| Endpoint | Kategorie modelů |
|---|---|
GET /api/v1/models | Všechny kategorie (beze změny) |
GET /api/v1/videos/models | Generování videa (video_generation) |
GET /api/v1/decisions/models | Decisions, včetně Jev (decisions) |
Všechny tři endpointy přijímají volitelný parametr dotazu provider (například openrouter) a vracejí {"object":"list","data":[...]}. Každá položka obsahuje id, object, created, owned_by a model_kind. Vyhrazené seznamy používají efektivní kategorii po uplatnění překryvů mapování povolených poskytovatelů.
Vracejí se pouze povolené, uvedené a nesmazané modely s aktuálními cenami odpovídajícími podmínkám poskytovatele; nulová cena je platná. Nově synchronizované modely jsou skryté, dokud je správce neuvede. Všechny seznamy sdílejí nakonfigurované řazení, přičemž název modelu a ID slouží jako rozhodující kritéria. Pokud nic neodpovídá, vrací se HTTP 200 s prázdným polem data. Objevování čte místní katalog a nevyvolává ani neúčtuje volání modelu.
Pouze GET /api/v1/models přijímá exclude_video_and_decisions (boolean, výchozí false). Nastavte ho na true, chcete-li vyloučit efektivní typy video_generation a decisions; obrazové modely zůstávají zahrnuty. Lze jej kombinovat s provider. Vynechání nebo nastavení na false zachová celý katalog. Neplatné booleovské hodnoty vracejí 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 volání zvolte podle model_kind: chat pro Responses, Chat Completions nebo Messages podle toho, co model podporuje; video_generation pro POST /api/v1/videos/generations; decisions pro POST /api/v1/decisions; image_generation pro POST /api/v1/images/generations. Podrobnosti zůstávají na GET /api/v1/models/{model_id}. Uvedený model nemusí být nutně kompatibilní s každým endpointem volání.
Obrazové modely nemají vyhrazený endpoint seznamu. Filtrujte GET /api/v1/models podle model_kind: "image_generation". Pole požadavku pro obrázky najdete v části Generování obrázků.
Modely a ceny
Požadavky používají výchozí kanál modelu, pokud jeden neurčíte pomocí X-Felo-Channel. Předejte uspořádaný seznam veřejných kódů kanálů oddělených čárkami z katalogu modelů; vynecháním hlavičky použijete výchozí kanál. Hodnotu default používejte pouze samostatně. Odesílá se pouze skupina poskytovatele prvního kanálu; neexistuje automatický fallback. Viz Kanály a směrování poskytovatelů.
Ceny jsou uvedeny v USD. Sazby za tokeny jsou pro přehlednost uvedeny za 1 milion tokenů; účtování používá přesnost na úrovni jednotlivých tokenů z aktuálního snímku cen. Sazby mezipaměti platí pouze tehdy, když odpověď protokolu obsahuje využití mezipaměti. Pomlčka znamená, že neexistuje samostatně zveřejněná sazba ani zveřejněný limit. Využití webového vyhledávání, pokud je hlášeno službou modelu, se účtuje ve výši $0.01 za vyhledávání.
| ID modelu | Kontext | Max. výstup | Vstup / 1M tokenů | Výstup / 1M tokenů | Čtení mezipaměti / 1M tokenů | Zápis do mezipaměti / 1M tokenů |
|---|---|---|---|---|---|---|
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 používá odstupňované ceny: prompty do 100K tokenů se účtují podle standardních sazeb výše a požadavky, jejichž prompt přesahuje 100K tokenů, se za celý požadavek účtují sazbou $0.50 za vstup, $2.50 za výstup, $0.05 za čtení mezipaměti a $0.0625 za zápis do mezipaměti za 1M tokenů.
GPT-5.6 je k dispozici ve třech úrovních: Luna pro rychlé a nákladově efektivní úlohy; Terra pro vyvážené úlohy kódování, uvažování a agentních úloh; a Sol pro špičkové složité uvažování a kódování. Každá úroveň navíc nabízí ID modelu s příponou -pro (gpt-5.6-luna-pro, gpt-5.6-terra-pro a gpt-5.6-sol-pro), které používá stejný základní model s režimem pro uvažování. Ceny, délka kontextu a maximální výstup zůstávají u ID s příponou -pro nezměněné.
DeepSeek V4 Flash podporuje režimy s uvažováním i bez něj, výstup JSON, volání nástrojů, Responses API a kompatibilitu s Anthropic API. Je dostupný prostřednictvím ploch Responses, Chat Completions a Messages od Felo. Ceny za zápis do mezipaměti zatím nejsou zveřejněny.
Základní použití
Tyto příklady používají oficiální sady SDK OpenAI a Anthropic. Před spuštěním příkladů nastavte FELO_API_KEY na svůj klíč Felo API Platform.
export FELO_API_KEY="YOUR_API_KEY"Instalace sad SDK
OpenAI SDK
Použijte OpenAI SDK pro Responses API a Chat Completions API.
##### JavaScript
npm install openai##### Python
pip install openaiAnthropic SDK
Použijte Anthropic SDK pro Messages API.
##### JavaScript
npm install @anthropic-ai/sdk##### Python
pip install anthropicKonfigurace klientů
Endpointy kompatibilní s OpenAI používají základní URL OpenAI SDK s /api/v1, protože SDK připojuje cesty prostředků, jako jsou /responses a /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",
)Endpointy kompatibilní s Anthropic používají základní URL Anthropic SDK bez /v1, protože SDK připojuje /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",
)Použití Responses API
Použijte Responses API pro nové integrace kompatibilní s OpenAI a objekty odpovědí ve stylu agentů.
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)Použití Chat Completions
Použijte Chat Completions, když vaše aplikace už posílá messages ve stylu 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)Použití Messages
Použijte Messages, když váš klient nebo agentní framework očekává tvary požadavků a odpovědí kompatibilní s 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)Oficiální dokumentace
- OpenAI API Quickstart
- OpenAI Create response
- OpenAI Create chat completion
- Claude Messages API
- Anthropic TypeScript SDK
- Anthropic Python SDK
Nastavení klientských agentů najdete v části Konfigurace Claude Code a Codex.
Reference protokolů
Responses
Tento endpoint použijte pro klienty a integrace kompatibilní s OpenAI Responses API.
Endpoint
POST https://openapi.felo.ai/api/v1/responsesTělo požadavku
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
model | string | Ano | Veřejné ID modelu Felo |
input | string nebo array | Ano | Vstup uživatele, vstup pro více kol nebo multimodální vstup |
instructions | string | Ne | Systémové nebo vývojářské instrukce |
stream | boolean | Ne | Zda použít streamování Server-Sent Events |
temperature | number | Ne | Teplota vzorkování |
max_output_tokens | integer | Ne | Maximální počet výstupních tokenů |
Požadavek SDK
const response = await client.responses.create({
model: "gpt-5.6-sol",
input: "Reply with exactly: responses ok",
});
console.log(response.output_text);Cesta k textu odpovědi
output_textChat Completions
Tento endpoint použijte pro klienty a sady SDK kompatibilní s OpenAI Chat Completions.
Endpoint
POST https://openapi.felo.ai/api/v1/chat/completionsTělo požadavku
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
model | string | Ano | Veřejné ID modelu Felo |
messages | array | Ano | Zprávy konverzace |
messages[].role | string | Ano | system, user nebo assistant |
messages[].content | string | Ano | Obsah zprávy |
stream | boolean | Ne | Zda použít streamování Server-Sent Events |
temperature | number | Ne | Teplota vzorkování |
max_tokens | integer | Ne | Maximální počet výstupních tokenů |
Požadavek 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);Cesta k textu odpovědi
choices[0].message.contentMessages
Tento endpoint použijte pro klienty a sady SDK kompatibilní s Anthropic Messages.
Endpoint
POST https://openapi.felo.ai/api/v1/messagesTělo požadavku
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
model | string | Ano | Veřejné ID modelu Felo |
max_tokens | integer | Ano | Maximální počet výstupních tokenů |
messages | array | Ano | Zprávy konverzace |
messages[].role | string | Ano | user nebo assistant |
messages[].content | string nebo array | Ano | Prostý text nebo obsahové bloky Anthropic |
system | string | Ne | Systémový prompt |
stream | boolean | Ne | Zda použít streamování Server-Sent Events |
temperature | number | Ne | Teplota vzorkování |
Požadavek 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);Požadavek s obsahovými bloky
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",
},
],
},
],
});Cesta k textu odpovědi
content[].textStreamování
Nastavte stream na true, chcete-li přijímat Server-Sent Events. Formát datové části událostí odpovídá zvolenému protokolu:
- Streamy Responses vracejí události odpovědí kompatibilní s Responses.
- Streamy Chat Completions vracejí části dokončení chatu kompatibilní s OpenAI.
- Streamy Messages vracejí události zpráv kompatibilní s Anthropic.
const stream = await client.responses.create({
model: "gpt-5.6-sol",
input: "Write one sentence.",
stream: true,
});Klienti by měli stream parsovat podle protokolu, který používají, místo aby očekávali jedno společné schéma událostí pro všechny tři endpointy.
Chyby
LLM API vrací tvar chyby zvoleného protokolu, kdykoli je to možné. Mezi běžné příčiny patří:
| Stav HTTP | Příčina | Doporučená akce |
|---|---|---|
400 | Neplatné tělo JSON nebo chybějící povinná pole protokolu | Zkontrolujte model, messages, input, max_tokens a pole obsahových bloků |
401 | Chybějící nebo neplatný API klíč | Ověřte Authorization: Bearer ... nebo X-API-Key |
402 | Nedostatek kreditů na účtu | Zkontrolujte zůstatek svého účtu Felo |
429 | Překročen limit rychlosti | Zpomalte požadavky a zkuste to později znovu |
502 | Požadavek na službu modelu selhal | Zkuste to znovu a při kontaktu s podporou uveďte X-Request-Id |
503 | Služba modelu je dočasně nedostupná | Zkuste to znovu s exponenciálním zpožděním nebo zvolte jiný zveřejněný model |