Felo API PlatformFelo API Platform

Felo APIs

LLM API

קראו ל-endpoints של מודלי 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 חושף נקודות קצה לקריאה ישירה למודלים דרך 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, לא ב-endpoints של 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: קלט USD 0.042 למיליון טוקנים; פלט USD 0. תעריף פלט של אפס אינו הופך את שימוש הקלט לחינמי. התעריפים עשויים להשתנות; השתמשו במחיר המודל המפורסם ובהנחות החשבון החלות לצורך הערכות.

אימות

בקשות LLM API דורשות מפתח של Felo API Platform. השתמשו ב-Authorization: Bearer ... או ב-X-API-Key.

Authorization: Bearer YOUR_API_KEY
X-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-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 קריאת 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 openai

Anthropic 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)

תיעוד רשמי

להגדרת לקוח סוכן, ראו תצורת Claude Code ו-Codex.

מסמכי הפרוטוקול

Responses

השתמשו ב-endpoint הזה עבור לקוחות ושילובים תואמי OpenAI Responses API.

Endpoint

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

גוף הבקשה

פרמטרסוגחובהתיאור
modelstringכןמזהה מודל ציבורי של 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 הזה עבור לקוחות ו-SDKs תואמי OpenAI Chat Completions.

Endpoint

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

גוף הבקשה

פרמטרסוגחובהתיאור
modelstringכןמזהה מודל ציבורי של 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 הזה עבור לקוחות ו-SDKs תואמי Anthropic Messages.

Endpoint

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

גוף הבקשה

פרמטרסוגחובהתיאור
modelstringכןמזהה מודל ציבורי של 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,
});

לקוחות צריכים לנתח את הזרם לפי הפרוטוקול שבו הם משתמשים, ולא לצפות לסכימת אירועים משותפת אחת בכל שלושת נקודות הקצה.

שגיאות

ה-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שירות המודל אינו זמין זמניתנסו שוב עם השהיה גדלה או בחרו מודל מפורסם אחר