Felo APIs
LLM API
קראו ל-endpoints של מודלי 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 חושף נקודות קצה לקריאה ישירה למודלים דרך 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, לא ב-endpoints של 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: קלט USD 0.042 למיליון טוקנים; פלט USD 0. תעריף פלט של אפס אינו הופך את שימוש הקלט לחינמי. התעריפים עשויים להשתנות; השתמשו במחיר המודל המפורסם ובהנחות החשבון החלות לצורך הערכות.
אימות
בקשות LLM API דורשות מפתח של Felo API Platform. השתמשו ב-Authorization: Bearer ... או ב-X-API-Key.
Authorization: Bearer YOUR_API_KEYX-API-Key: YOUR_API_KEYראו את מדריך האימות לפרטים על יצירת מפתחות API וניהולם.
כתובת בסיס
השתמשו במארח הציבורי של Felo API Platform:
https://openapi.felo.aiעבור לקוחות SDK, הגדירו את כתובת הבסיס הייחודית לפרוטוקול שמופיעה בBasic Usage.
כותרות נפוצות
| כותרת | חובה | תיאור |
|---|---|---|
Authorization | כן, אלא אם משתמשים ב-X-API-Key | מפתח API בפורמט Bearer YOUR_API_KEY |
X-API-Key | כן, אלא אם משתמשים ב-Authorization | חלופה לכותרת ה-Bearer של מפתח ה-API |
Content-Type | כן | חייב להיות application/json |
X-Request-Id | לא | מזהה בקשה אופציונלי לאיתור בעיות |
גילוי מודלים
הקטלוג הכללי כולל את כל קטגוריות המודלים. השתמשו ברשימות הייעודיות כדי לגלות מודלי וידאו או החלטות:
| Endpoint | קטגוריות מודלים |
|---|---|
GET /api/v1/models | כל הקטגוריות (ללא שינוי) |
GET /api/v1/videos/models | יצירת וידאו (video_generation) |
GET /api/v1/decisions/models | החלטות, כולל Jev (decisions) |
כל שלוש נקודות הקצה מקבלות את פרמטר השאילתה האופציונלי provider (למשל openrouter) ומחזירות {"object":"list","data":[...]}. כל פריט מכיל id, object, created, owned_by ו-model_kind. רשימות ייעודיות משתמשות בקטגוריה האפקטיבית לאחר עקיפות מיפוי ספקים מופעלות.
מוחזרים רק מודלים מופעלים, רשומים ולא מחוקים עם תמחור נוכחי שמתאים לתנאי הספק; מחיר אפס הוא חוקי. מודלים שסונכרנו לאחרונה מוסתרים עד שמנהל רושם אותם. כל הרשימות חולקות את הסדר המוגדר, עם שם המודל והמזהה כשוברי שוויון. אין התאמות מחזיר HTTP 200 עם מערך data ריק. הגילוי קורא את הקטלוג המקומי ואינו מפעיל או מחייב קריאת מודל.
רק GET /api/v1/models מקבל exclude_video_and_decisions (בוליאני, ברירת מחדל 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}"בחרו נקודת קצה לקריאה לפי 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}. מודל רשום אינו בהכרח תואם לכל נקודת קצה לקריאה.
למודלי תמונה אין נקודת קצה ייעודית לרשימה. סננו את GET /api/v1/models לפי model_kind: "image_generation". ראו יצירת תמונות לשדות הבקשה של התמונות.
Models and Pricing (מודלים ותמחור)
בקשות משתמשות בערוץ ברירת המחדל של המודל אלא אם אתם מצמידים ערוץ עם X-Felo-Channel. העבירו רשימה מסודרת, מופרדת בפסיקים, של קודי ערוץ ציבוריים מקטלוג המודלים; השמיטו את הכותרת כדי להשתמש בברירת המחדל. השתמשו ב-default בלבד. רק קבוצת הספק של הערוץ הראשון נשלחת; אין נפילה חלופית אוטומטית. ראו ערוצים וניתוב ספקים.
המחירים מופיעים בדולר ארה״ב. תעריפי טוקנים מוצגים לפי מיליון טוקנים לשם קריאות; החיוב משתמש בדיוק לפי טוקן מתמונת המחיר הנוכחית. תעריפי cache חלים רק כשתגובת הפרוטוקול כוללת שימוש ב-cache. מקף פירושו אין תעריף מפורסם נפרד או מגבלה מפורסמת. שימוש בחיפוש באינטרנט, כשמדווח על ידי שירות המודל, מחויב ב-$0.01 לחיפוש.
| מזהה מודל | חלון הקשר | פלט מרבי | קלט / מיליון טוקנים | פלט / מיליון טוקנים | קריאת cache / מיליון טוקנים | כתיבת cache / מיליון טוקנים |
|---|---|---|---|---|---|---|
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 קריאת cache ו-$0.0625 כתיבת cache למיליון טוקנים עבור הבקשה כולה.
GPT-5.6 זמין בשלוש דרגות: Luna לעומסי עבודה מהירים וחסכוניים; Terra לקידוד, הסקה ומשימות סוכנים מאוזנות; ו-Sol להסקה מורכבת וקידוד ברמת דגל. כל דרגה חושפת גם מזהה מודל -pro (gpt-5.6-luna-pro, gpt-5.6-terra-pro ו-gpt-5.6-sol-pro) שמשתמש באותו מודל בסיס עם מצב הסקת pro. התמחור, אורך חלון ההקשר והפלט המרבי אינם משתנים עבור מזהי ה--pro.
DeepSeek V4 Flash תומך במצבי הסקה ולא-הסקה, פלט JSON, קריאות לכלים, Responses API ותאימות ל-Anthropic API. הוא זמין דרך משטחי Responses, Chat Completions ו-Messages של Felo. תמחור כתיבת cache עדיין לא מפורסם.
Basic Usage (שימוש בסיסי)
הדוגמאות האלה משתמשות ב-SDKs הרשמיים של OpenAI ו-Anthropic. הגדירו את FELO_API_KEY למפתח של Felo API Platform לפני הרצת הדוגמאות.
export FELO_API_KEY="YOUR_API_KEY"התקנת SDKs
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הגדרת לקוחות
נקודות קצה תואמות OpenAI משתמשות בכתובת הבסיס של 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",
)נקודות קצה תואמות Anthropic משתמשות בכתובת הבסיס של 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 Quickstart
- OpenAI Create response
- OpenAI Create chat completion
- 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 | כן | מזהה מודל ציבורי של 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 הזה עבור לקוחות ו-SDKs תואמי OpenAI Chat Completions.
Endpoint
POST https://openapi.felo.ai/api/v1/chat/completionsגוף הבקשה
| פרמטר | סוג | חובה | תיאור |
|---|---|---|---|
model | string | כן | מזהה מודל ציבורי של 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 הזה עבור לקוחות ו-SDKs תואמי Anthropic Messages.
Endpoint
POST https://openapi.felo.ai/api/v1/messagesגוף הבקשה
| פרמטר | סוג | חובה | תיאור |
|---|---|---|---|
model | string | כן | מזהה מודל ציבורי של 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,
});לקוחות צריכים לנתח את הזרם לפי הפרוטוקול שבו הם משתמשים, ולא לצפות לסכימת אירועים משותפת אחת בכל שלושת נקודות הקצה.
שגיאות
ה-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 | שירות המודל אינו זמין זמנית | נסו שוב עם השהיה גדלה או בחרו מודל מפורסם אחר |