Felo API PlatformFelo API Platform

الأدلة

الأخطاء والحدود وإعادة المحاولة

اقرأ استجابات الأخطاء ورؤوس حدود المعدل، وأعد المحاولة بأمان، وشخّص الأعطال الشائعة.

تعيد كل واجهة Felo API نص خطأ JSON يتضمن رمز خطأ ثابتًا ومعرّف طلب. اقرأ حالة HTTP أولًا، ثم الرمز، ثم الرسالة.

غلاف الخطأ

تستخدم استجابات الإنتاج الحالية حالة HTTP كقيمة status:

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
الحقلالمعنى
statusرمز حالة HTTP، مكرر في النص
codeرمز خطأ قابل للقراءة آليًا
messageتفسير قابل للقراءة البشرية
request_idمعرّف غامض لهذا الطلب؛ أدرجه في طلبات الدعم

تستخدم بعض أمثلة endpoints الأقدم status: "error" وسلسلة رمز مختلفة. اعتمد على حالة HTTP وcode، لا على الصياغة الدقيقة لـmessage.

الرموز الشائعة

HTTPالرمزما يعنيهما يجب فعله
400رمز تحقق خاص بـendpointمعامل مفقود أو غير صالحأصلح الطلب؛ لا تعده دون تغيير
401UNAUTHORIZEDمفتاح API مفقود أو غير صالح أو منتهي الصلاحية أو ملغىأرسل Authorization: Bearer $FELO_API_KEY؛ دوّر المفتاح إذا كان ملغى
402INSUFFICIENT_CREDITSأرصدة خدمة غير كافيةأعد الشحن في Console Billing، ثم أعد المحاولة
404خاص بـendpointنموذج أو مهمة أو مسار غير معروفتحقق من معرّف النموذج أو معرّف المهمة ومسار endpoint
429RATE_LIMITEDتجاوزت حد المعدلانتظر Retry-After، ثم أعد المحاولة
5xxCHAT_FAILED و*_FAILED وSERVICE_UNAVAILABLEفشل في المنبع أو في الخدمةأعد المحاولة مع تراجع تدريجي؛ تواصل مع الدعم إذا استمر

تسرد مراجع endpoint الرموز الخاصة بذلك endpoint. ابدأ بـأخطاء Chat API أو بمرجع endpoint الذي تستدعيه.

endpoints توليد النماذج

تُرجع 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، نافذة دقيقة واحدة.
  • لكل مستخدم، نافذة دقيقة واحدة.
  • لكل مستخدم، نافذة ساعة واحدة.

يُستثنى المستخدمون الذين لديهم اشتراك Felo مدفوع ساري، بما في ذلك اشتراكات المؤسسات، ولا يتلقون رؤوس X-RateLimit-*. إذا تعذّر التحقق من حالة الاشتراك، تظل الحدود سارية.

الرأسالمعنى
X-RateLimit-Limitحد أضيق بُعد سارٍ حاليًا
X-RateLimit-Remainingالحد الأدنى للحصة المتبقية عبر الأبعاد الثلاثة
X-RateLimit-Resetطابع زمني Unix بالثواني لإعادة تعيين النافذة الحالية
Retry-Afterعند 429، التأخير الموصى به بالثواني

لا توجد حاليًا حدود معدل مفروضة على endpoints أخرى ضمن /v2/**. قد تظل طلبات Model API محدودة من قِبل المزوّد الأعلى، وقد يظهر ذلك على هيئة 429.

لا تضع الحدود الرقمية مباشرة في الشيفرة. اقرأ الرؤوس في كل استجابة.

سياسة إعادة المحاولة

الحالةإعادة المحاولة؟
400 و401 و402 و404لا. أصلح الطلب أو المفتاح أو الرصيد أولًا.
429نعم، بعد Retry-After أو X-RateLimit-Reset.
5xx والمهلات وإعادات تعيين الاتصالنعم، مع تراجع أسّي وتشويش عشوائي.
انقطاع اتصال البث أثناء الاستجابةأعد المحاولة فقط إذا كان تطبيقك يتحمل توليدًا مكررًا.

الحلقة الموصى بها:

  1. أعد المحاولة فقط للطلبات المتكررة بأمان (idempotent) أو الآمنة التكرار.
  2. استخدم تراجعًا أسّيًا: ابدأ بنحو ثانية واحدة، وضاعفها، وبحد أقصى 30 ثانية.
  3. أضف تشويشًا عشوائيًا حتى لا يعيد العملاء المحاولة في تزامن تام.
  4. توقف بعد عدد قليل من المحاولات وأظهر الخطأ.
  5. عند 429، التزم بـRetry-After بدلًا من جدولك الخاص.

تسلسل تصحيح الأخطاء

  1. تحقق من وجود المفتاح وأنه غير ملغى.
  2. استدعِ GET /api/v1/models بالمفتاح نفسه لتأكيد المصادقة.
  3. أرسل أصغر طلب صالح إلى endpoint المستهدف.
  4. أضف البث أو الأدوات أو المدخلات الكبيرة واحدًا في كل مرة.
  5. للعمل غير المتزامن، تحقق من حالة المهمة قبل إعادة الإرسال.

ذو صلة