الأدلة الأساسية

التعامل مع أخطاء API

اقرأ رموز الخطأ، وأعد المحاولة فقط عند الضرورة، واحتفظ بمعرف الطلب (Request ID)

تعامل مع الأخطاء بناءً على حالة HTTP و code. تم كتابة message للمستخدمين البشريين وقد تتغير دون إشعار مسبق.

تستخدم Chat Completions و Responses كائن error بنمط OpenAI. بينما تحتفظ Anthropic Messages و Gemini بتنسيقات الأخطاء الخاصة بها، لذا لا تستخدم محللًا (parser) واحدًا لكل TokenLab API.

{
  "error": {
    "message": "Human-readable description",
    "type": "error_type",
    "code": "error_code",
    "param": "parameter_name",
    "retryable": true,
    "retry_after": 30
  }
}

فقط message و type موجودان دائمًا في الأخطاء المتوافقة مع OpenAI التي تم إنشاؤها بواسطة TokenLab. تظهر الحقول الأخرى عندما تكون ذات صلة.

رموز الحالة (Status codes)

الحالةالمعنىالإجراء المعتاد
400حقل أو معرف نموذج أو مدخل غير صالحصحح الطلب؛ لا تكرره دون تغيير
401مفتاح API مفقود أو غير صالح أو منتهي الصلاحية أو ملغىاستبدل المفتاح
402الرصيد أو حد مفتاح API منخفض جدًااشحن الرصيد، أو ارفع الحد، أو قلل الطلب
403هذا المفتاح لا يمكنه استخدام المورد أو النموذجغيّر صلاحيات المفتاح أو النموذج
404المورد غير موجود أو لم يعد متاحًاتحقق من المعرف ومفتاح API الذي أنشأه
413الطلب أو الملف المرفوع كبير جدًاقلل المدخلات لتناسب حد النموذج أو نقطة النهاية الموثقة
429تم الوصول إلى حد الطلباتانتظر وفقًا لـ Retry-After
500–504الخدمة غير متاحة أو حدث خطأ في الشبكةأعد المحاولة فقط عندما تكون retryable بقيمة true، مع الالتزام بـ retry_after وحد أقصى للمحاولات

رموز الخطأ الشائعة

الرمزماذا يعنيماذا يجب أن تغير
invalid_api_keyمفتاح API مفقود أو غير صالح أو غير نشط أو ملغىتحقق من ترويسة Authorization وقيمة المفتاح
expired_api_keyانتهت صلاحية مفتاح APIأنشئ أو اختر مفتاحًا نشطًا
insufficient_balanceرصيد الحساب لا يغطي الطلبأضف رصيدًا، أو قلل الطلب، أو اختر نموذجًا أقل تكلفة
quota_exceededوصل مفتاح API إلى حده الخاصزد حد ذلك المفتاح أو استخدم مفتاحًا مصرحًا به آخر
model_not_allowedالمفتاح لا يمكنه استخدام النموذج المطلوبحدّث قائمة نماذج المفتاح أو اختر نموذجًا مسموحًا به
model_not_foundمعرف النموذج غير معروف أو غير متاحاقرأ /v1/models واستخدم معرف نموذج حالي
context_length_exceededالمدخلات أطول مما يقبله النموذجاحذف السجل أو اختر نموذجًا بنافذة سياق أكبر
rate_limit_exceededتم إرسال الكثير من الطلبات في النافذة الحاليةانتظر وفقًا لـ Retry-After
payload_too_largeجسم الطلب أو الملف يتجاوز حد نقطة النهايةقلل أو اضغط المدخلات
all_channels_failedلا يستطيع النموذج المحدد معالجة هذا الطلبأعد المحاولة فقط عندما تكون retryable بقيمة true، مع الالتزام بـ retry_after وحد أقصى للمحاولات
timeout_errorلم ينتهِ الطلب في الوقت المحددأعد المحاولة فقط عندما تكون العملية آمنة للتكرار

لا يعني 503 all_channels_failed أو 503 delivery_tier_unavailable دائمًا وجود عطل مؤقت. إذا لم تتوفر خدمة للعملية المطلوبة ضمن مستوى Delivery المحدد، تكون retryable بقيمة false ولا يُرجع retry_after. لا تكرر الطلب نفسه. تحقق من توفر العملية ومستوى Delivery باستخدام GET /v1/models قبل اختيار نموذج آخر. تشابه الأسماء لا يثبت التوفر؛ ولا تُعرض البدائل غير المتحقق منها.

تتضمن بعض الأخطاء المتوافقة مع OpenAI حقولًا اختيارية مثل did_you_mean أو suggestions أو alternatives أو hint أو retryable أو retry_after. راجع الأخطاء التي يمكن للوكلاء (Agents) التعامل معها.

عندما يُنفَّذ الطلب عبر مسار Official ويرفض الخدمة المصدر (upstream) الطلب نفسه، مثل مدخل لا تقبله أو قرار سياسة محتوى، يتضمن الخطأ أيضًا upstream: رسالة message كما أبلغت بها الخدمة المصدر، بالإضافة إلى code وsource (اسم الخدمة المصدر) عند معرفتهما. تحمل أخطاء Anthropic Messages وGemini الكائن نفسه داخل error الخاص بها. استمر في الاعتماد على code وtype؛ فقيم upstream.code تحددها الخدمة المصدر وقد تتغير.

قرارات إعادة المحاولة

الخطأهل تكرر نفس الطلب؟
400, 401, 402, 403, 404, 413لا. غيّر الطلب أو بيانات الاعتماد أو الرصيد أو الصلاحيات أو المدخلات.
429نعم، بعد التأخير الذي يحدده الخادم.
500–504أعد المحاولة فقط عندما تكون retryable بقيمة true، مع الالتزام بـ retry_after وحد أقصى للمحاولات
انقطاع الاتصال قبل أي استجابةأحيانًا. بالنسبة لعمليات الإنشاء، تحقق مما إذا كانت المهمة أو الأثر الجانبي موجودًا بالفعل.
انقطاع البث بعد وصول المخرجاتلا تعتبرها استجابة كاملة. قد يؤدي التكرار إلى إنشاء مخرجات مختلفة أو فرض رسوم ثانية.

بالنسبة لإنشاء الصور والفيديو والموسيقى والنماذج ثلاثية الأبعاد والعوالم، احفظ معرف المهمة (task ID) بمجرد إرجاعه. إذا انتهت مهلة طلب الإنشاء، تحقق من سجل المهمة قبل إرسال طلب إنشاء آخر.

احتفظ بمعرف الطلب (Request ID)

تتضمن ترويسات الاستجابة معرف طلب (Request ID) للتتبع. احفظه مع نقطة النهاية، والنموذج، والوقت، ومعرف المستخدم أو الوظيفة الخاص بك. بالنسبة للعمليات غير المتزامنة (async)، احفظ أيضًا task_id و billing_transaction_id عند توفرهما.

عند التواصل مع الدعم، قم بتضمين تلك المعرفات ومثال منقح. لا ترسل أبدًا مفاتيح API، أو رموز الإدارة (management tokens)، أو الوسائط الخاصة، أو الروابط الموقعة، أو المطالبات الخاصة الكاملة.

من الطلب إلى التحقيق والدعم

في هذه الصفحة