Felo API PlatformFelo API Platform

Felo APIs

LLM API

OpenAI-compatible ও Anthropic-compatible প্রোটোকল দিয়ে Felo মডেল endpoints কল করুন।

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-এর মাধ্যমে সরাসরি মডেল কলিং endpoint প্রকাশ করে। সাধারণ উদ্দেশ্যের ভাষা মডেল কল করতে, OpenAI-সামঞ্জস্যপূর্ণ বা Anthropic-সামঞ্জস্যপূর্ণ ক্লায়েন্ট পুনরায় ব্যবহার করতে, বা এজেন্ট ফ্রেমওয়ার্ক Felo API Platform-এ সংযুক্ত করতে চাইলে এটি ব্যবহার করুন।

LLM API বর্তমানে তিনটি chat-সামঞ্জস্যপূর্ণ মডেল কলিং সারফেস অন্তর্ভুক্ত করে:

  • 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

state এবং সংকীর্ণ টাইপযুক্ত প্রশ্ন jev-1.13-এ পাঠান (এছাড়া গ্রহণযোগ্য: typesafe/jev-1.13)। Chat Completions, Messages বা Responses endpoint নয়, /api/v1/decisions ব্যবহার করুন। স্ট্রিমিং সমর্থিত নয়।

অনুরোধ ফিল্ড

  • model: jev-1.13
  • state: মূল্যায়নের জন্য context; একটি string বা 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: ক্রমবদ্ধ criteria-র জন্য সাংখ্যিক score, তার বণ্টনসহ।

ত্রুটি error.code (সাংখ্যিক HTTP স্ট্যাটাস) ও error.message ব্যবহার করে। answers পড়ার আগে নন-2xx রেসপন্স সামলান।

ব্যবহার ও মূল্য

রেসপন্সে usage.input_tokens, usage.output_tokens থাকে এবং usage.cost থাকতে পারে। 2026-10-12-এ যাচাই করা রেফারেন্স রেট: input USD 0.042 প্রতি মিলিয়ন টোকেন; output USD 0। output রেট শূন্য হলে input ব্যবহার বিনামূল্যে হয় না। রেট বদলাতে পারে; আনুমানিক হিসাবের জন্য প্রকাশিত মডেল মূল্য ও প্রযোজ্য অ্যাকাউন্ট ডিসকাউন্ট ব্যবহার করুন।

প্রমাণীকরণ

LLM API অনুরোধের জন্য একটি Felo API Platform key প্রয়োজন। Authorization: Bearer ... বা X-API-Key যেকোনোটি ব্যবহার করুন।

Authorization: Bearer YOUR_API_KEY
X-API-Key: YOUR_API_KEY

API key তৈরি ও পরিচালনার বিস্তারিত জানতে Authentication গাইড দেখুন।

Base URL

পাবলিক Felo API Platform host ব্যবহার করুন:

https://openapi.felo.ai

SDK ক্লায়েন্টের জন্য Basic Usage-এ দেখানো প্রোটোকল-নির্দিষ্ট base URL কনফিগার করুন।

Headerআবশ্যকবর্ণনা
Authorizationহ্যাঁ, X-API-Key ব্যবহার না করলেBearer YOUR_API_KEY ফরম্যাটে API key
X-API-Keyহ্যাঁ, Authorization ব্যবহার না করলেBearer header-এর বিকল্প API key
Content-Typeহ্যাঁঅবশ্যই application/json হতে হবে
X-Request-Idনাসমস্যা সমাধানের জন্য ঐচ্ছিক request ID

মডেল ডিসকভারি

সাধারণ ক্যাটালগ সব মডেল ক্যাটাগরি অন্তর্ভুক্ত করে। ভিডিও বা ডিসিশন মডেল আবিষ্কার করতে নির্দিষ্ট তালিকা ব্যবহার করুন:

Endpointমডেল ক্যাটাগরি
GET /api/v1/modelsসব ক্যাটাগরি (অপরিবর্তিত)
GET /api/v1/videos/modelsভিডিও জেনারেশন (video_generation)
GET /api/v1/decisions/modelsDecisions, Jev সহ (decisions)

তিনটি endpoint-ই ঐচ্ছিক provider query প্যারামিটার গ্রহণ করে (যেমন openrouter) এবং {"object":"list","data":[...]} ফেরত দেয়। প্রতিটি আইটেমে id, object, created, owned_by ও model_kind থাকে। নির্দিষ্ট তালিকা সক্রিয় প্রোভাইডার ম্যাপিং override-এর পর কার্যকর ক্যাটাগরি ব্যবহার করে।

কেবল সক্রিয়, তালিকাভুক্ত, মুছে না ফেলা এবং প্রোভাইডার শর্তের সাথে মিলে যাওয়া বর্তমান মূল্যযুক্ত মডেল ফেরত আসে; শূন্য মূল্য বৈধ। নতুন সিঙ্ক করা মডেল অ্যাডমিনিস্ট্রেটর তালিকাভুক্ত না করা পর্যন্ত লুকানো থাকে। সব তালিকা কনফিগার করা ক্রম শেয়ার করে, টাই-ব্রেকার হিসেবে মডেলের নাম ও ID সহ। কোনো মিল না থাকলে খালি data অ্যারে সহ HTTP 200 ফেরত আসে। ডিসকভারি লোকাল ক্যাটালগ পড়ে এবং মডেল কল আহ্বান বা চার্জ করে না।

কেবল GET /api/v1/models exclude_video_and_decisions গ্রহণ করে (boolean, ডিফল্ট false)। কার্যকর video_generation ও decisions ধরন বাদ দিতে এটি true সেট করুন; ইমেজ মডেল যোগ্য থাকে। এটি provider-এর সাথে একত্র করা যায়। বাদ দিলে বা false সেট করলে সম্পূর্ণ ক্যাটালগ অপরিবর্তিত থাকে। অবৈধ boolean মান 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 অনুযায়ী কলিং endpoint বেছে নিন: মডেল সমর্থিত Responses, Chat Completions বা Messages-এর জন্য chat; POST /api/v1/videos/generations-এর জন্য video_generation; POST /api/v1/decisions-এর জন্য decisions; POST /api/v1/images/generations-এর জন্য image_generation। বিস্তারিত GET /api/v1/models/{model_id}-এ থাকে। তালিকাভুক্ত মডেল প্রতিটি কলিং endpoint-এর সাথে সামঞ্জস্যপূর্ণ হওয়া আবশ্যক নয়।

ইমেজ মডেলের কোনো নির্দিষ্ট তালিকা endpoint নেই। GET /api/v1/models-কে model_kind: "image_generation" দিয়ে ফিল্টার করুন। ইমেজ অনুরোধ ফিল্ডের জন্য Image Generation দেখুন।

Models and Pricing (মডেল ও মূল্য)

X-Felo-Channel দিয়ে পিন না করলে অনুরোধ মডেলের ডিফল্ট চ্যানেল ব্যবহার করে। মডেল ক্যাটালগ থেকে পাবলিক চ্যানেল কোডের একটি ক্রমানুসারী, কমা-বিচ্ছিন্ন তালিকা পাঠান; ডিফল্ট ব্যবহার করতে header বাদ দিন। default কেবল একা ব্যবহার করুন। কেবল প্রথম চ্যানেলের প্রোভাইডার গ্রুপ সাবমিট হয়; স্বয়ংক্রিয় ফলব্যাক নেই। Channels and Provider Routing দেখুন।

মূল্য USD-তে তালিকাভুক্ত। পাঠযোগ্যতার জন্য টোকেন রেট প্রতি 1 মিলিয়ন টোকেনে দেখানো হয়; বিলিং বর্তমান মূল্য স্ন্যাপশটের প্রতি-টোকেন নির্ভুলতা ব্যবহার করে। প্রোটোকল রেসপন্সে cache ব্যবহার থাকলে কেবল তখনই cache রেট প্রযোজ্য। ড্যাশ মানে আলাদা প্রকাশিত রেট বা প্রকাশিত সীমা নেই। মডেল সার্ভিস রিপোর্ট করলে web search ব্যবহার প্রতি সার্চে $0.01 চার্জ করা হয়।

মডেল IDকনটেক্সটসর্বোচ্চ outputInput / 1M টোকেনOutput / 1M টোকেনCache read / 1M টোকেনCache write / 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 টোকেন পর্যন্ত prompt উপরের স্ট্যান্ডার্ড রেটে বিল হয়, এবং যেসব অনুরোধের prompt 100K টোকেন ছাড়ায় সেগুলো সম্পূর্ণ অনুরোধের জন্য প্রতি 1M টোকেনে $0.50 input, $2.50 output, $0.05 cache read ও $0.0625 cache write-এ বিল হয়।

GPT-5.6 তিনটি টিয়ারে উপলব্ধ: দ্রুত, সাশ্রয়ী ওয়ার্কলোডের জন্য Luna; ভারসাম্যপূর্ণ কোডিং, রিজনিং ও এজেন্টিক কাজের জন্য Terra; এবং ফ্ল্যাগশিপ জটিল রিজনিং ও কোডিংয়ের জন্য Sol। প্রতিটি টিয়ার একটি -pro মডেল ID-ও প্রকাশ করে (gpt-5.6-luna-pro, gpt-5.6-terra-pro ও gpt-5.6-sol-pro) যা pro রিজনিং মোডসহ একই অন্তর্নিহিত মডেল ব্যবহার করে। -pro ID-এর জন্য মূল্য, কনটেক্সট দৈর্ঘ্য ও সর্বোচ্চ output অপরিবর্তিত।

DeepSeek V4 Flash রিজনিং ও নন-রিজনিং মোড, JSON output, টুল কল, Responses API এবং Anthropic API সামঞ্জস্য সমর্থন করে। এটি Felo-র Responses, Chat Completions ও Messages সারফেসের মাধ্যমে উপলব্ধ। Cache write মূল্য এখনো প্রকাশিত হয়নি।

Basic Usage (মূল ব্যবহার)

এই উদাহরণগুলো অফিসিয়াল OpenAI ও Anthropic SDK ব্যবহার করে। উদাহরণ চালানোর আগে FELO_API_KEY-তে আপনার Felo API Platform key সেট করুন।

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

ক্লায়েন্ট কনফিগার করুন

OpenAI-সামঞ্জস্যপূর্ণ endpoint OpenAI SDK-র base URL-এ /api/v1 সহ ব্যবহার করে, কারণ SDK /responses ও /chat/completions-এর মতো resource path যোগ করে।

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-সামঞ্জস্যপূর্ণ endpoint Anthropic SDK-র base URL /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-সামঞ্জস্যপূর্ণ ইন্টিগ্রেশন ও এজেন্ট-ধাঁচের response অবজেক্টের জন্য 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 ব্যবহার

আপনার অ্যাপ্লিকেশন ইতিমধ্যে OpenAI-ধাঁচের messages পাঠালে 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 and Codex Configuration দেখুন।

প্রোটোকল রেফারেন্স

Responses

OpenAI Responses API সামঞ্জস্যপূর্ণ ক্লায়েন্ট ও ইন্টিগ্রেশনের জন্য এই endpoint ব্যবহার করুন।

Endpoint

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

অনুরোধ বডি

প্যারামিটারধরনআবশ্যকবর্ণনা
modelstringহ্যাঁপাবলিক Felo মডেল ID
inputstring or arrayহ্যাঁব্যবহারকারীর input, বহু-পালা input বা মাল্টিমোডাল input
instructionsstringনাসিস্টেম বা ডেভেলপার নির্দেশনা
streambooleanনাServer-Sent Events স্ট্রিমিং ব্যবহার করবে কি না
temperaturenumberনাস্যাম্পলিং temperature
max_output_tokensintegerনাসর্বোচ্চ output টোকেন

SDK অনুরোধ

const response = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Reply with exactly: responses ok",
});

console.log(response.output_text);

রেসপন্স টেক্সট path

output_text

Chat Completions

OpenAI Chat Completions সামঞ্জস্যপূর্ণ ক্লায়েন্ট ও SDK-র জন্য এই endpoint ব্যবহার করুন।

Endpoint

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

অনুরোধ বডি

প্যারামিটারধরনআবশ্যকবর্ণনা
modelstringহ্যাঁপাবলিক Felo মডেল ID
messagesarrayহ্যাঁকথোপকথনের message
messages[].rolestringহ্যাঁsystem, user বা assistant
messages[].contentstringহ্যাঁMessage কনটেন্ট
streambooleanনাServer-Sent Events স্ট্রিমিং ব্যবহার করবে কি না
temperaturenumberনাস্যাম্পলিং temperature
max_tokensintegerনাসর্বোচ্চ output টোকেন

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

রেসপন্স টেক্সট path

choices[0].message.content

Messages

Anthropic Messages সামঞ্জস্যপূর্ণ ক্লায়েন্ট ও SDK-র জন্য এই endpoint ব্যবহার করুন।

Endpoint

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

অনুরোধ বডি

প্যারামিটারধরনআবশ্যকবর্ণনা
modelstringহ্যাঁপাবলিক Felo মডেল ID
max_tokensintegerহ্যাঁসর্বোচ্চ output টোকেন
messagesarrayহ্যাঁকথোপকথনের message
messages[].rolestringহ্যাঁuser বা assistant
messages[].contentstring or arrayহ্যাঁপ্লেইন টেক্সট বা Anthropic content block
systemstringনাসিস্টেম prompt
streambooleanনাServer-Sent Events স্ট্রিমিং ব্যবহার করবে কি না
temperaturenumberনাস্যাম্পলিং temperature

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

Content Block অনুরোধ

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",
        },
      ],
    },
  ],
});

রেসপন্স টেক্সট path

content[].text

স্ট্রিমিং

Server-Sent Events পেতে stream-কে true সেট করুন। ইভেন্ট পেলোড ফরম্যাট নির্বাচিত প্রোটোকল অনুসরণ করে:

  • Responses স্ট্রিম Responses-সামঞ্জস্যপূর্ণ response ইভেন্ট ফেরত দেয়।
  • Chat Completions স্ট্রিম OpenAI-সামঞ্জস্যপূর্ণ chat completion chunk ফেরত দেয়।
  • Messages স্ট্রিম Anthropic-সামঞ্জস্যপূর্ণ message ইভেন্ট ফেরত দেয়।
const stream = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Write one sentence.",
  stream: true,
});

ক্লায়েন্টদের তিনটি endpoint জুড়ে একটি শেয়ার করা event schema প্রত্যাশা করার বদলে তারা যে প্রোটোকল ব্যবহার করছে সেই অনুযায়ী স্ট্রিম পার্স করা উচিত।

ত্রুটি

LLM API সম্ভব হলে নির্বাচিত প্রোটোকলের error আকার ফেরত দেয়। সাধারণ কারণগুলোর মধ্যে আছে:

HTTP স্ট্যাটাসকারণপ্রস্তাবিত পদক্ষেপ
400অবৈধ JSON body বা অনুপস্থিত আবশ্যক প্রোটোকল ফিল্ডmodel, messages, input, max_tokens ও content block ফিল্ড দেখুন
401API key অনুপস্থিত বা অবৈধAuthorization: Bearer ... বা X-API-Key যাচাই করুন
402অ্যাকাউন্টে অপর্যাপ্ত ক্রেডিটআপনার Felo অ্যাকাউন্টের ব্যালেন্স দেখুন
429রেট সীমা অতিক্রমঅনুরোধ ধীর করুন এবং পরে রিট্রাই করুন
502মডেল সার্ভিস অনুরোধ ব্যর্থরিট্রাই করুন এবং সহায়তার সাথে যোগাযোগের সময় X-Request-Id দিন
503মডেল সার্ভিস সাময়িকভাবে অনুপলব্ধব্যাকঅফসহ রিট্রাই করুন বা অন্য প্রকাশিত মডেল বেছে নিন