Felo APIs
LLM API
Gọi endpoint mô hình Felo qua giao thức tương thích OpenAI và Anthropic.
/api/v1/modelsXác thực
Bearer API key or X-API-Key
Loại nội dung
application/json
Ghi chú về giới hạn
Model service limits may apply. Retry with backoff on 429 or 503.
LLM API cung cấp các endpoint gọi mô hình trực tiếp qua Felo API Platform. Hãy dùng nó khi bạn muốn gọi các mô hình ngôn ngữ đa dụng, tái sử dụng máy khách tương thích OpenAI hoặc tương thích Anthropic, hoặc kết nối các framework agent với Felo API Platform.
LLM API hiện bao gồm ba bề mặt gọi mô hình tương thích chat:
POST /api/v1/responses: tương thích OpenAI ResponsesPOST /api/v1/chat/completions: tương thích OpenAI Chat CompletionsPOST /api/v1/messages: tương thích Anthropic Messages
Decisions API
POST https://openapi.felo.ai/api/v1/decisionsGửi trạng thái và các câu hỏi có kiểu hẹp đến jev-1.13 (cũng chấp nhận: typesafe/jev-1.13). Hãy dùng /api/v1/decisions, không dùng các endpoint Chat Completions, Messages hay Responses. Không hỗ trợ truyền trực tiếp.
Các trường yêu cầu
model:jev-1.13state: Ngữ cảnh cần đánh giá; một chuỗi hoặc giá trị JSON.questions: Các câu hỏi có tên dùngtype,instructionsvà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"])Các loại câu trả lời
noul: một xác suất từ 0 đến 1. choice: tùy chọn được chọn và phân phối xác suất của nó. score: điểm số cho các tiêu chí có thứ tự, cùng phân phối của nó.
Lỗi dùng error.code (trạng thái HTTP dạng số) và error.message. Hãy xử lý các phản hồi không phải 2xx trước khi đọc answers.
Mức sử dụng và giá
Phản hồi bao gồm usage.input_tokens, usage.output_tokens và có thể bao gồm usage.cost. Mức giá tham chiếu được kiểm tra ngày 2026-10-12: đầu vào 0,042 USD mỗi triệu token; đầu ra 0 USD. Mức giá đầu ra bằng 0 không làm cho việc dùng đầu vào trở nên miễn phí. Mức giá có thể thay đổi; hãy dùng giá mô hình được công bố và các khoản giảm giá áp dụng cho tài khoản để ước tính.
Xác thực
Các yêu cầu LLM API cần khóa Felo API Platform. Dùng Authorization: Bearer ... hoặc X-API-Key.
Authorization: Bearer YOUR_API_KEYX-API-Key: YOUR_API_KEYXem Hướng dẫn xác thực để biết chi tiết về cách tạo và quản lý khóa API.
Base URL
Dùng host công khai của Felo API Platform:
https://openapi.felo.aiVới máy khách SDK, hãy cấu hình base URL theo giao thức được hiển thị trong Sử dụng cơ bản.
Header chung
| Header | Bắt buộc | Mô tả |
|---|---|---|
Authorization | Có, trừ khi dùng X-API-Key | Khóa API theo định dạng Bearer YOUR_API_KEY |
X-API-Key | Có, trừ khi dùng Authorization | Khóa API thay thế cho header Bearer |
Content-Type | Có | Phải là application/json |
X-Request-Id | Không | Request ID tùy chọn để khắc phục sự cố |
Khám phá mô hình
Danh mục chung bao gồm mọi danh mục mô hình. Hãy dùng các danh sách chuyên dụng để khám phá mô hình video hoặc quyết định:
| Endpoint | Danh mục mô hình |
|---|---|
GET /api/v1/models | Mọi danh mục (không thay đổi) |
GET /api/v1/videos/models | Tạo video (video_generation) |
GET /api/v1/decisions/models | Quyết định, bao gồm Jev (decisions) |
Cả ba endpoint đều chấp nhận tham số truy vấn provider tùy chọn (ví dụ openrouter) và trả về {"object":"list","data":[...]}. Mỗi mục chứa id, object, created, owned_by và model_kind. Các danh sách chuyên dụng dùng danh mục hiệu lực sau khi áp dụng ghi đè ánh xạ nhà cung cấp đang bật.
Chỉ các mô hình đang bật, đã được liệt kê, chưa bị xóa và có giá hiện tại khớp với điều kiện của nhà cung cấp mới được trả về; mức giá bằng 0 là hợp lệ. Các mô hình mới được đồng bộ sẽ bị ẩn cho đến khi quản trị viên liệt kê chúng. Mọi danh sách dùng chung thứ tự đã cấu hình, với tên mô hình và ID làm tiêu chí phụ. Không có kết quả khớp trả về HTTP 200 với mảng data rỗng. Việc khám phá chỉ đọc danh mục cục bộ và không gọi hay tính phí một lệnh gọi mô hình.
Chỉ GET /api/v1/models chấp nhận exclude_video_and_decisions (boolean, mặc định false). Đặt thành true để loại trừ các loại hiệu lực video_generation và decisions; các mô hình hình ảnh vẫn đủ điều kiện. Có thể kết hợp với provider. Bỏ qua hoặc đặt false sẽ giữ nguyên danh mục đầy đủ. Giá trị boolean không hợp lệ trả về 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}"Chọn endpoint gọi theo model_kind: chat cho Responses, Chat Completions hoặc Messages tùy theo mô hình hỗ trợ; video_generation cho POST /api/v1/videos/generations; decisions cho POST /api/v1/decisions; image_generation cho POST /api/v1/images/generations. Chi tiết vẫn ở GET /api/v1/models/{model_id}. Một mô hình được liệt kê không nhất thiết tương thích với mọi endpoint gọi.
Các mô hình hình ảnh không có endpoint liệt kê riêng. Hãy lọc GET /api/v1/models theo model_kind: "image_generation". Xem Tạo hình ảnh để biết các trường yêu cầu hình ảnh.
Mô hình và giá
Các yêu cầu dùng kênh mặc định của mô hình trừ khi bạn ghim một kênh bằng X-Felo-Channel. Truyền một danh sách mã kênh công khai có thứ tự, phân tách bằng dấu phẩy từ danh mục mô hình; bỏ header để dùng mặc định. Chỉ dùng default một mình. Chỉ nhóm nhà cung cấp của kênh đầu tiên được gửi đi; không có tự động chuyển đổi dự phòng. Xem Kênh và định tuyến nhà cung cấp.
Giá được liệt kê bằng USD. Để dễ đọc, mức giá token được hiển thị theo 1 triệu token; việc tính phí dùng độ chính xác theo từng token từ ảnh chụp giá hiện tại. Mức giá cache chỉ áp dụng khi phản hồi giao thức bao gồm mức sử dụng cache. Dấu gạch ngang nghĩa là không có mức giá hoặc giới hạn riêng được công bố. Mức sử dụng tìm kiếm web, khi được dịch vụ mô hình báo cáo, được tính $0.01 mỗi lần tìm kiếm.
| Model ID | Ngữ cảnh | Đầu ra tối đa | Đầu vào / 1M token | Đầu ra / 1M token | Đọc cache / 1M token | Ghi cache / 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 dùng giá theo bậc: các prompt tối đa 100K token được tính theo mức giá tiêu chuẩn ở trên, và các yêu cầu có prompt vượt quá 100K token được tính $0.50 đầu vào, $2.50 đầu ra, $0.05 đọc cache và $0.0625 ghi cache mỗi 1M token cho toàn bộ yêu cầu.
GPT-5.6 có sẵn ở ba bậc: Luna cho khối lượng công việc nhanh, tiết kiệm chi phí; Terra cho các tác vụ viết mã, suy luận và agent cân bằng; và Sol cho suy luận và viết mã phức tạp hàng đầu. Mỗi bậc cũng cung cấp một model ID -pro (gpt-5.6-luna-pro, gpt-5.6-terra-pro và gpt-5.6-sol-pro) dùng cùng mô hình nền với chế độ suy luận pro. Giá, độ dài ngữ cảnh và đầu ra tối đa không thay đổi với các ID -pro.
DeepSeek V4 Flash hỗ trợ chế độ suy luận và không suy luận, đầu ra JSON, gọi công cụ, Responses API và tương thích Anthropic API. Nó có sẵn qua các bề mặt Responses, Chat Completions và Messages của Felo. Giá ghi cache chưa được công bố.
Sử dụng cơ bản
Các ví dụ này dùng SDK chính thức của OpenAI và Anthropic. Đặt FELO_API_KEY thành khóa Felo API Platform của bạn trước khi chạy các ví dụ.
export FELO_API_KEY="YOUR_API_KEY"Cài đặt SDK
OpenAI SDK
Dùng OpenAI SDK cho Responses API và Chat Completions API.
##### JavaScript
npm install openai##### Python
pip install openaiAnthropic SDK
Dùng Anthropic SDK cho Messages API.
##### JavaScript
npm install @anthropic-ai/sdk##### Python
pip install anthropicCấu hình máy khách
Các endpoint tương thích OpenAI dùng base URL của OpenAI SDK với /api/v1, vì SDK nối thêm các đường dẫn tài nguyên như /responses và /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",
)Các endpoint tương thích Anthropic dùng base URL của Anthropic SDK không có /v1, vì SDK nối thêm /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",
)Dùng Responses API
Dùng Responses API cho các tích hợp tương thích OpenAI mới và các đối tượng phản hồi kiểu 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)Dùng Chat Completions
Dùng Chat Completions khi ứng dụng của bạn đã gửi messages kiểu 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)Dùng Messages
Dùng Messages khi máy khách hoặc framework agent của bạn mong đợi cấu trúc yêu cầu và phản hồi tương thích 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)Tài liệu chính thức
- OpenAI API Quickstart
- OpenAI Create response
- OpenAI Create chat completion
- Claude Messages API
- Anthropic TypeScript SDK
- Anthropic Python SDK
Để thiết lập máy khách agent, xem Cấu hình Claude Code và Codex.
Tham chiếu giao thức
Responses
Dùng endpoint này cho máy khách và tích hợp tương thích OpenAI Responses API.
Endpoint
POST https://openapi.felo.ai/api/v1/responsesNội dung yêu cầu
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
model | string | Có | Model ID công khai của Felo |
input | string or array | Có | Đầu vào người dùng, đầu vào nhiều lượt hoặc đầu vào đa phương thức |
instructions | string | Không | Chỉ dẫn hệ thống hoặc nhà phát triển |
stream | boolean | Không | Có dùng truyền trực tiếp Server-Sent Events hay không |
temperature | number | Không | Nhiệt độ lấy mẫu |
max_output_tokens | integer | Không | Số token đầu ra tối đa |
Yêu cầu qua SDK
const response = await client.responses.create({
model: "gpt-5.6-sol",
input: "Reply with exactly: responses ok",
});
console.log(response.output_text);Đường dẫn văn bản phản hồi
output_textChat Completions
Dùng endpoint này cho máy khách và SDK tương thích OpenAI Chat Completions.
Endpoint
POST https://openapi.felo.ai/api/v1/chat/completionsNội dung yêu cầu
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
model | string | Có | Model ID công khai của Felo |
messages | array | Có | Các thông điệp hội thoại |
messages[].role | string | Có | system, user hoặc assistant |
messages[].content | string | Có | Nội dung thông điệp |
stream | boolean | Không | Có dùng truyền trực tiếp Server-Sent Events hay không |
temperature | number | Không | Nhiệt độ lấy mẫu |
max_tokens | integer | Không | Số token đầu ra tối đa |
Yêu cầu qua 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);Đường dẫn văn bản phản hồi
choices[0].message.contentMessages
Dùng endpoint này cho máy khách và SDK tương thích Anthropic Messages.
Endpoint
POST https://openapi.felo.ai/api/v1/messagesNội dung yêu cầu
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
model | string | Có | Model ID công khai của Felo |
max_tokens | integer | Có | Số token đầu ra tối đa |
messages | array | Có | Các thông điệp hội thoại |
messages[].role | string | Có | user hoặc assistant |
messages[].content | string or array | Có | Văn bản thuần hoặc các khối nội dung Anthropic |
system | string | Không | Prompt hệ thống |
stream | boolean | Không | Có dùng truyền trực tiếp Server-Sent Events hay không |
temperature | number | Không | Nhiệt độ lấy mẫu |
Yêu cầu qua 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);Yêu cầu khối nội dung
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",
},
],
},
],
});Đường dẫn văn bản phản hồi
content[].textTruyền trực tiếp
Đặt stream thành true để nhận Server-Sent Events. Định dạng nội dung sự kiện theo giao thức đã chọn:
- Các luồng Responses trả về sự kiện phản hồi tương thích Responses.
- Các luồng Chat Completions trả về chunk hoàn tất chat tương thích OpenAI.
- Các luồng Messages trả về sự kiện thông điệp tương thích Anthropic.
const stream = await client.responses.create({
model: "gpt-5.6-sol",
input: "Write one sentence.",
stream: true,
});Máy khách nên phân tích luồng theo giao thức mình đang dùng thay vì mong đợi một lược đồ sự kiện chung trên cả ba endpoint.
Lỗi
LLM API trả về cấu trúc lỗi của giao thức đã chọn bất cứ khi nào có thể. Các nguyên nhân thường gặp bao gồm:
| Trạng thái HTTP | Nguyên nhân | Hành động đề xuất |
|---|---|---|
400 | Nội dung JSON không hợp lệ hoặc thiếu trường giao thức bắt buộc | Kiểm tra model, messages, input, max_tokens và các trường khối nội dung |
401 | Thiếu hoặc sai khóa API | Xác minh Authorization: Bearer ... hoặc X-API-Key |
402 | Không đủ tín dụng tài khoản | Kiểm tra số dư tài khoản Felo của bạn |
429 | Đã vượt giới hạn tần suất | Giảm tốc độ yêu cầu và thử lại sau |
502 | Yêu cầu đến dịch vụ mô hình thất bại | Thử lại và cung cấp X-Request-Id khi liên hệ hỗ trợ |
503 | Dịch vụ mô hình tạm thời không khả dụng | Thử lại với thời gian chờ tăng dần hoặc chọn một mô hình được công bố khác |