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، base URL مخصوص پروتکل را که در Basic Usage نشان داده شده پیکربندی کنید.

سرآیندهای مشترک

سرآیندالزامیتوضیح
Authorizationبله، مگر آنکه از X-API-Key استفاده شودکلید API در قالب Bearer YOUR_API_KEY
X-API-Keyبله، مگر آنکه از Authorization استفاده شودجایگزین کلید API برای سرآیند Bearer
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)

هر سه endpoint پارامتر پرس‌وجوی اختیاری 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}"

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" فیلتر کنید. برای فیلدهای درخواست تصویر تولید تصویر را ببینید.

Models and Pricing (مدل‌ها و قیمت‌گذاری)

درخواست‌ها از کانال پیش‌فرض مدل استفاده می‌کنند مگر آنکه با X-Felo-Channel یکی را پین کنید. فهرستی مرتب و جداشده با کاما از کدهای کانال عمومی از کاتالوگ مدل بفرستید؛ برای استفاده از پیش‌فرض سرآیند را حذف کنید. default را فقط به‌تنهایی به کار ببرید. فقط گروه ارائه‌دهنده نخستین کانال ارسال می‌شود؛ بازگشت خودکار وجود ندارد. کانال‌ها و مسیریابی ارائه‌دهنده را ببینید.

قیمت‌ها به دلار آمریکا فهرست شده‌اند. نرخ‌های توکن برای خوانایی بر حسب هر 1 میلیون توکن نمایش داده می‌شوند؛ صورت‌حساب از دقت هر توکن در تصویر قیمت جاری استفاده می‌کند. نرخ‌های کش فقط وقتی اعمال می‌شوند که پاسخ پروتکل مصرف کش را شامل شود. خط تیره یعنی نرخ منتشرشده جداگانه یا محدودیت منتشرشده‌ای وجود ندارد. مصرف جستجوی وب، وقتی سرویس مدل آن را گزارش کند، برای هر جستجو $0.01 محاسبه می‌شود.

شناسه مدلزمینهبیشینه خروجیورودی / 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 برای استدلال و کدنویسی پیچیده و پرچم‌دار. هر پله همچنین یک شناسه مدل -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 در دسترس است. قیمت‌گذاری نوشتن کش هنوز منتشر نشده است.

Basic Usage (استفاده پایه)

این نمونه‌ها از SDKهای رسمی OpenAI و Anthropic استفاده می‌کنند. پیش از اجرای نمونه‌ها FELO_API_KEY را روی کلید Felo API Platform خود تنظیم کنید.

export FELO_API_KEY="YOUR_API_KEY"

نصب SDKها

OpenAI SDK

برای Responses API و Chat Completions API از OpenAI SDK استفاده کنید.

##### JavaScript

npm install openai

##### Python

pip install openai

Anthropic SDK

برای Messages API از Anthropic SDK استفاده کنید.

##### JavaScript

npm install @anthropic-ai/sdk

##### Python

pip install anthropic

پیکربندی کلاینت‌ها

endpointهای سازگار با OpenAI از base 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 از base 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

برای یکپارچگی‌های تازه سازگار با OpenAI و اشیاء پاسخ به سبک عامل از Responses API استفاده کنید.

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

وقتی برنامه شما از قبل messages به سبک OpenAI می‌فرستد از Chat Completions استفاده کنید.

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

وقتی کلاینت یا چارچوب عامل شما شکل درخواست و پاسخ سازگار با Anthropic را انتظار دارد از Messages استفاده کنید.

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 یا 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بلهشناسه عمومی مدل 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بلهشناسه عمومی مدل Felo
max_tokensintegerبلهبیشینه توکن خروجی
messagesarrayبلهپیام‌های گفت‌وگو
messages[].rolestringبلهuser یا assistant
messages[].contentstring یا 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 تکه‌های chat completion سازگار با 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سرویس مدل موقتاً در دسترس نیستبا عقب‌نشینی دوباره تلاش کنید یا مدل منتشرشده دیگری انتخاب کنید