راهنماها
خطاها، محدودیتها و تلاش مجدد
پاسخهای خطا و سرصفحههای محدودیت نرخ را بخوانید، با اطمینان دوباره تلاش کنید و خرابیهای رایج را عیبیابی کنید.
هر Felo API بدنه خطای JSON با یک کد خطای پایدار و یک شناسه درخواست برمیگرداند. نخست وضعیت HTTP را بخوانید، سپس کد و بعد message را.
پوشش خطا
پاسخهای تولید جاری از وضعیت HTTP بهعنوان status استفاده میکنند:
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "Invalid API Key",
"request_id": "202610221444486982113280416060637185"
}| فیلد | معنا |
|---|---|
status | کد وضعیت HTTP، تکرارشده در بدنه |
code | کد خطای قابل خواندن با ماشین |
message | توضیح قابل خواندن برای انسان |
request_id | شناسه مبهم این درخواست؛ آن را در درخواستهای پشتیبانی بگنجانید |
برخی نمونههای قدیمی endpoint از status: "error" و رشته کد متفاوتی استفاده میکنند. بر اساس وضعیت HTTP و code انشعاب بگیرید، نه بر اساس عبارت دقیق message.
کدهای رایج
| HTTP | کد | معنا | چه کاری کنید |
|---|---|---|---|
| 400 | کد اعتبارسنجی مخصوص endpoint | پارامتری گم شده یا نامعتبر است | درخواست را اصلاح کنید؛ بیتغییر دوباره تلاش نکنید |
| 401 | UNAUTHORIZED | کلید API گمشده، نامعتبر، منقضی یا لغوشده | Authorization: Bearer $FELO_API_KEY بفرستید؛ اگر لغو شده کلید را بچرخانید |
| 402 | INSUFFICIENT_CREDITS | اعتبار سرویس کافی نیست | در Console Billing شارژ کنید، سپس دوباره تلاش کنید |
| 404 | مخصوص endpoint | مدل، وظیفه یا مسیر ناشناخته | شناسه مدل یا وظیفه و مسیر endpoint را بررسی کنید |
| 429 | RATE_LIMITED | محدودیت نرخ نقض شد | برای Retry-After صبر کنید، سپس دوباره تلاش کنید |
| 5xx | CHAT_FAILED، *_FAILED، SERVICE_UNAVAILABLE | شکست بالادستی یا سرویس | با عقبنشینی دوباره تلاش کنید؛ اگر ادامه یافت با پشتیبانی تماس بگیرید |
مرجعهای endpoint کدهای مخصوص آن endpoint را فهرست میکنند. با خطاهای Chat API یا مرجع endpointی که صدا میزنید شروع کنید.
endpointهای تولید مدل
POST /api/v1/images/generations و POST /api/v1/videos/generations خطاهای سطح endpoint را در پوشش OpenAI برمیگردانند، نه در پوشش بالا:
{
"error": {
"message": "Model kind does not match this generation endpoint",
"type": "invalid_request_error",
"param": null,
"code": "model_kind_mismatch"
}
}شناسه درخواست در سرآیند پاسخ X-Request-Id است، نه در بدنه. درخواست ردشده وظیفهای نمیسازد. پس از آنکه وظیفهای وجود دارد، بیشتر شکستها بهصورت وضعیت وظیفه پایانی در پاسخ 200 میآیند، نه خطای HTTP: status را برای failed یا interrupted بررسی کنید، سپس error.message را بخوانید. تولید تصویر و وظایف ناهمگام را ببینید.
شناسههای درخواست
بدنههای خطای Felo شامل request_id هستند. آن را همراه endpoint، وضعیت HTTP، کد خطا، شناسه مدل و شناسه وظیفه ثبت کنید. هرگز کلید API کامل را ثبت نکنید.
Model API همچنین یک سرآیند اختیاری درخواست X-Request-Id را میپذیرد. وقتی یکی میفرستید، برای عیبیابی بازتاب داده میشود و این امکان را میدهد گزارشهای خودتان را با یک درخواست مرتبط کنید. اگر نمیفرستید، از request_id برگشتی استفاده کنید.
محدودیت نرخ
/v2/chat تنها endpoint Felo با محدودیت نرخ مستند و اعمالشده است:
- برای هر کلید API، پنجره 1 دقیقهای.
- برای هر کاربر، پنجره 1 دقیقهای.
- برای هر کاربر، پنجره 1 ساعته.
کاربران با اشتراک مؤثر پولی Felo، از جمله اشتراکهای سازمانی، معافاند و سرآیند X-RateLimit-* دریافت نمیکنند. اگر وضعیت اشتراک قابل تأیید نباشد، محدودیتها همچنان اعمال میشوند.
| سرآیند | معنا |
|---|---|
X-RateLimit-Limit | محدودیت تنگترین بُعدی که در حال حاضر اعمال میشود |
X-RateLimit-Remaining | کمینه سهمیه باقیمانده در سه بُعد |
X-RateLimit-Reset | برچسب زمانی Unix به ثانیه برای بازنشانی پنجره جاری |
Retry-After | در 429، تأخیر پیشنهادی به ثانیه |
دیگر endpointهای /v2/** در حال حاضر محدودیت نرخ اعمالشده ندارند. درخواستهای Model API همچنان ممکن است توسط ارائهدهنده بالادستی محدود شوند که میتواند بهصورت 429 ظاهر شود.
محدودیتهای عددی را سختکد نکنید. سرآیندها را در هر پاسخ بخوانید.
سیاست تلاش دوباره
| وضعیت | دوباره تلاش؟ |
|---|---|
| 400، 401، 402، 404 | نه. نخست درخواست، کلید یا مانده را اصلاح کنید. |
| 429 | بله، پس از Retry-After یا X-RateLimit-Reset. |
| 5xx، مهلتها، بازنشانی اتصال | بله، با عقبنشینی نمایی و jitter. |
| قطع اتصال جریان در میانه پاسخ | فقط اگر برنامه شما تحمل تولید تکراری را دارد دوباره تلاش کنید. |
حلقه پیشنهادی:
- فقط درخواستهای بیاثر یا تکرارپذیر ایمن را دوباره تلاش کنید.
- از عقبنشینی نمایی استفاده کنید: حدود 1 ثانیه شروع کنید، دو برابر کنید و در 30 ثانیه سقف بگذارید.
- jitter تصادفی اضافه کنید تا کلاینتها همزمان دوباره تلاش نکنند.
- پس از شمار کمی تلاش متوقف شوید و خطا را نشان دهید.
- در 429، بهجای برنامه خودتان به
Retry-Afterاحترام بگذارید.
توالی اشکالزدایی
- بررسی کنید کلید وجود دارد و لغو نشده است.
- با همان کلید
GET /api/v1/modelsرا صدا بزنید تا احراز هویت را تأیید کنید. - کوچکترین درخواست معتبر را به endpoint هدف بفرستید.
- جریاندهی، ابزارها یا ورودیهای بزرگ را یکییکی اضافه کنید.
- برای کار ناهمگام، پیش از ارسال دوباره وضعیت وظیفه را بررسی کنید.