مستندات
شروع سریع
سه چیز تغییر میکند: آدرس پایه، کلید و نام مدل. باقی کد سازگار با OpenAI شما دستنخورده میماند.
from openai import OpenAI
client = OpenAI(
base_url="https://api.fluxcdn.com/v1",
api_key=os.environ["FLUXCDN_KEY"],
)
resp = client.chat.completions.create(
model="router/auto",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)احراز هویت
کلیدها را فلاکسسیدیان صادر میکند و هرکدام به یک پروژه محدودند. آنها را بهصورت توکن Bearer بفرستید. ما فقط هش کلید را نگه میداریم، بنابراین متن کامل کلید دقیقاً یکبار هنگام ساخت نمایش داده میشود.
Authorization: Bearer flux_live_7Yc2Kq9m4Rt8Wv1sHb3dPz6Lمحدودیتهای هر کلید شامل مدلهای مجاز، RPM، TPM، همزمانی، بودجهٔ روزانه و ماهانه و فهرست IP مجاز اختیاری است.
مدلها
فهرست آنچه کلید شما به آن دسترسی دارد، همراه با قیمت زنده و فرادادهٔ قابلیتها. این فهرست در برابر تغییر ارائهدهندگان پایدار میماند.
GET /v1/models
{
"data": [
{
"id": "anthropic/claude-sonnet-4.5",
"context_window": 200000,
"max_output_tokens": 64000,
"capabilities": ["text", "vision", "tools", "json", "reasoning"],
"pricing": { "input_per_mtok": "3.00", "output_per_mtok": "15.00" },
"status": "healthy"
}
]
}تکمیل گفتوگو
ساختار درخواست و پاسخ سازگار با OpenAI، شامل پخش زنده، فراخوانی ابزار و خروجی ساختیافته. هدرهای پاسخ به شما میگویند کدام نقطهٔ اتصال واقعاً درخواست را سرویس داده و چقدر هزینه داشته است.
POST /v1/chat/completions
{
"model": "router/auto",
"messages": [{"role": "user", "content": "Summarise this ticket"}],
"stream": true
}کنترلهای مسیریابی
نام یک مدل را ببرید و بگذارید مسیریاب نقطهٔ اتصال را انتخاب کند، یا خودتان محدودش کنید. هر چیزی که در سطح درخواست تعیین کنید با سیاست سازمان شما اشتراک گرفته میشود و مقدار سختگیرانهتر برنده است.
| router/auto | بهترین کیفیت بهازای هزینه برای کاری که تشخیص داده شده. |
| router/fast | کمترین زمان تا نخستین توکن، میان نقاط اتصال سالم. |
| router/cheap | کمترین هزینهٔ کل که همچنان نیازهای قابلیتی را برآورده کند. |
| vendor/model | یک مدل مشخص، که نقطهٔ اتصالش همچنان بر پایهٔ سلامت و قیمت انتخاب میشود. |
قرارداد خطا
خطاهای ارائهدهندگان به یک ساختار و یک مجموعهٔ بسته از انواع نگاشت میشوند، بنابراین منطق تلاش دوبارهٔ شما به شاخهٔ جداگانه برای هر فروشنده نیاز ندارد.
{
"error": {
"type": "upstream_unavailable",
"message": "All endpoints for this model are unavailable.",
"request_id": "req_8Kd2Qm",
"retryable": true,
"attempts": 3
}
}