الانتقال إلى المحتوى الرئيسي

غلاف الخطأ

تستخدم معظم استجابات الخطأ شكل JSON المتوافق مع OpenAI التالي:
{
  "error": {
    "message": "Descriptive error message",
    "type": "orcarouter_api_error",
    "code": "model_not_found"
  }
}
type فئة عامة، وcode معرّف محدد. تُرجع بعض حالات الفشل في المسار السريع (وبخاصة 429 على مستوى مساحة العمل) رمز حالة HTTP فقط مع الرؤوس ذات الصلة دون نص JSON.

رموز حالة HTTP

الحالةالمعنىالسبب النموذجي
400طلب غير صالحمعاملات غير صالحة، أو حقول مطلوبة مفقودة، أو انتهاك للمخطط
401غير مصرّحمفتاح API مفقود أو غير صالح
403محظورحصة غير كافية، أو المفتاح لا يمكنه استدعاء هذا النموذج
404غير موجودالنموذج أو نقطة النهاية غير موجودة
429طلبات كثيرة جدًاتم بلوغ حد المعدل — راجع حدود المعدل. تتضمن الاستجابة دائمًا رأس Retry-After.
500خطأ داخليخطأ من جانب OrcaRouter
502خطأ من المزود الأعلىفشل جميع المزودين الأعليين (بما في ذلك أي سلسلة بدائل)
503الخدمة غير متاحةالنموذج المطلوب غير متاح مؤقتًا في المنبع

أنواع الأخطاء التي قد تراها في error.type

error.typeمصدرها
orcarouter_api_errorإخفاقات من جانب البوابة (مصادقة، حصة، حد المعدل، داخلي)
upstream_errorأرجع المزود الأعلى خطأً أو انتهت مهلته
openai_errorخطأ من المنبع المتوافق مع OpenAI محفوظ حرفيًا
claude_errorخطأ من منبع Anthropic محفوظ حرفيًا
gemini_errorخطأ من منبع Gemini محفوظ حرفيًا

رموز الأخطاء التي قد تراها في error.code

هذه رموز تصدرها البوابة لإخفاقات تنشأ من OrcaRouter (وليس من المنبع):
error.codeHTTPالمعنى
insufficient_user_quota403استنفد رصيد الحساب. قم بشحنه.
model_not_found503هذا النموذج غير متاح لحسابك.
model_price_error400لم يتم إعداد التسعير لهذا النموذج. اتصل بالدعم.
api_not_implemented400نقطة النهاية أو العملية غير مدعومة للنموذج الذي اخترته.
bad_request_body400تعذّر تحليل نص الطلب.
prompt_blocked400حظرت سياسة سلامة المزود الموجّه قبل التوليد.
sensitive_words_detected400رفض مرشّح المحتوى الحساس الموجّه.
إذا احتجت إلى التمييز برمجيًا، فطابق error.code أولًا (محدد) ثم ارجع إلى error.type (فئة عامة).

أخطاء البث

لا يمكن للأخطاء أثناء استجابة مبثوثة استخدام رموز حالة HTTP (تم إرسال الحالة عند فتح البث). يعتمد التنسيق على نقطة النهاية:

/v1/chat/completions و/v1/responses (متوافق مع OpenAI)

يصل الخطأ كقطعة data: {...} ضمن البث:
data: {"error":{"message":"...","type":"upstream_error","code":""}}

data: [DONE]
حلّل كل قطعة data: كـ JSON؛ إذا احتوت على حقل error، فعامل البث على أنه فشل.

/v1/messages (متوافق مع Anthropic)

تستخدم Anthropic أحداث SSE المسمّاة. يصل فشل البث كالتالي:
event: error
data: {"type":"error","error":{"type":"overloaded_error","message":"..."}}
يُنهى البث بـ event: message_stop (أو يُقطع) بعد حدث الخطأ.

أخطاء البدائل

عند ضبط extra_body.models وفشل جميع النماذج في السلسلة، تحصل على 502 مع تفاصيل عن آخر خطأ من المنبع. تشير رؤوس الاستجابة X-Orca-Fallback-Level وX-Orca-Fallback-Model إلى أي بديل كان قيد المحاولة عند استنفاد السلسلة. راجع رؤوس الاستجابة.