التوثيق
المساعدة

الأخطاء والحدود

Markdown

رموز الردود ومعانيها والإجراءات المطلوبة. جميع الأخطاء بصيغة JSON ومع Request ID.

الدليل الكامل

صيغة الخطأ

يأتي الخطأ بصيغة API التي استدعيتها: الكائن error لـOpenAI، و {"type": "error", "error": {...}} لـAnthropic، و error بالحقول status و details لـGemini. لذلك تتعرف حزم SDK عليها كأخطاء API عادية.

  • error.code و error.reason — فئة الخطأ من الجدول أدناه، وهما متطابقان. error.type — القيمة القياسية للصيغة (مثل invalid_request_error أو server_error).
  • error.request_id (في Anthropic يكون request_id في المستوى الأعلى)، والترويسة X-Request-ID ونهاية نص الرسالة — معرّف الطلب.
  • في Gemini توجد الفئة في error.details: ErrorInfo.reason — الرمز نفسه بالأحرف الكبيرة (مثل MODEL_OVERLOADED), domain — ailoot.ai؛ ويوجد معرّف الطلب في RequestInfo.requestId.
  • في صيغة Gemini، يأتي خطأ 5xx الذي لا يجوز تكراره تلقائياً، وكذلك result_pending_check بحالة 409 و status ABORTED، كي لا يعيد Gemini SDK وCLI الطلب تلقائياً. توجد فئة الخطأ في ErrorInfo.reason (مثل MODEL_TIMEOUT أو RESULT_PENDING_CHECK).
  • يتضمن الرد بصيغة OpenAI أيضاً حقلي المستوى الأعلى code و message — للعملاء الأقدم.
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}

رموز الأخطاء

HTTPالفئة (reason)ما الذي حدثالإجراء المطلوب
400invalid_requestالطلب غير صالح: جسم أو معامل غير صحيح؛ أو النموذج لا يدعم حقلاً أو مرفقاً أو أداة في الطلب؛ أو أُرسل المفتاح في العنوان صحح الطلب وفق نص الخطأ: احذف الحقل أو المرفق أو الأداة غير المدعومة، وأرسل المفتاح في الترويسة. يحدث الرفض لعدم دعم حقل أو مرفق أو أداة قبل الحجز، دون خصم أي مبلغ
400context_length_exceededيتجاوز الطلب نافذة سياق النموذجاختصر السجل أو اختر نموذجاً بسياق أكبر
400content_policy_violationرُفض الطلب بسبب قواعد النموذجأعد صياغة الطلب
401invalid_api_keyالمفتاح مفقود أو غير صحيحتحقق من إرسال المفتاح كاملاً
401api_key_disabledالمفتاح معطّلفعّل المفتاح أو أنشئ مفتاحاً جديداً
402insufficient_balance, insufficient_quotaالرصيد المتاح غير كافٍ حتى للحد الأدنى من الحجز (insufficient_quota — الحالة نفسها بصيغة مألوفة لـOpenAI SDK)اشحن الرصيد أو اخفض max_tokens
402api_key_quota_exhaustedاستُنفد الحد الإجمالي لإنفاق المفتاحارفع حد المفتاح في لوحة الحساب
402payment_disputedعلى الحساب دين بسبب دفعة محل اعتراضتُوقف الطلبات الجديدة حتى التسديد؛ تواصل مع الدعم
403api_key_expiredانتهت صلاحية المفتاحأنشئ مفتاحاً جديداً
403account_inactiveحسابك معطّلتواصل مع الدعم
403permission_deniedلا يسمح المفتاح بهذا الطلب (مثلاً بسبب IP)تحقق من قيود المفتاح
404model_not_foundلا يوجد هذا النموذجطابق ID مع /v1/models
404unsupported_endpointلا يعمل النموذج بهذه الصيغةاختر صيغة أو نموذجاً آخر
404not_foundلا يوجد هذا المسار أو الكائن (مثل المهمة)تحقق من العنوان والمعرّف
409duplicate_requestقُبلت بالفعل عملية بالمفتاح نفسه لعدم التكرار، وربما اكتملتتحقق من نتيجة العملية الأولى ولا ترسل عملية جديدة
409not_ready, video_not_readyالفيديو أو المهمة الأخرى غير جاهزة بعداستعلم عن الحالة لاحقاً
409, 503result_pending_checkنتحقق من نتيجة الطلب. في مهمة الفيديو يكون ذلك بالعلامة result_pending_check: true في رد الحالة، وتبقى المهمة نفسها in_progressلا تُعد إرسال الطلب؛ ستظهر الحالة في السجل (GET https://ailoot.ai/api/v1/usage). لا تنشئ مهمة الفيديو مجدداً؛ تحقق منها لاحقاً عبر GET /v1/videos/{id}
410model_retiredأُوقف النموذج عن الخدمةاختر إصداراً جديداً من GET /v1/models
413request_too_largeجسم الطلب كبير جداًقلل حجم الملفات أو السجل
429rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_fullعدد الطلبات أو الطلبات المتزامنة من حسابك كبير جداًانتظر (الترويسة Retry-After، عادةً 10 ثوانٍ) ثم أعد المحاولة
429usage_limit_reachedاستُنفدت نافذة إنفاق المفتاح (5 ساعات أو يوم واحد أو7 أيام)انتظر تحديث النافذة أو ارفع حد المفتاح
500internal_errorخطأ في Ailootتواصل مع الدعم مع إرفاق Request ID
502invalid_model_response, empty_response, incomplete_responseأعاد النموذج رداً غير صالح أو فارغاً أو غير مكتملابحث عن Request ID في سجل لوحة الحساب. إذا وُجدت نتيجة أو عملية خصم، فستنشئ الإعادة طلبًا مدفوعًا ثانيًا. عدم وجود سجل لا يؤكد أن الطلب لم يُرسل أو لم يُنفَّذ: لا تُعِد إرسال طلب مجهول الحالة؛ تواصل مع الدعم وأرفق Request ID.
502result_not_deliveredلم تُسلّم النتيجة بسبب خطأ من Ailoot، وأُعيد المبلغ المحجوز أو المخصوميمكن إرسال الطلب مجدداً
503model_overloadedالنموذج مثقل مؤقتاًإذا كانت X-Should-Retry: true، فأعد المحاولة بعد عدد الثواني في Retry-After؛ وإذا كانت false، فتحقق أولاً من Request ID في السجل
503model_unavailableالنموذج غير متاح مؤقتاًاختر نموذجاً آخر. إذا كانت X-Should-Retry: true، فأعد المحاولة بعد عدد الثواني في Retry-After؛ وإذا كانت false، فتحقق أولاً من Request ID في السجل
503service_unavailableعطل مؤقت من جهة Ailootإذا كانت X-Should-Retry: true، فأعد المحاولة بعد عدد الثواني في Retry-After؛ وإذا كانت false، فتحقق أولاً من Request ID في السجل
503charge_not_confirmedلم يُقدّم الرد: تعذر تأكيد الخصم؛ أُعيد المبلغ المحجوز ولم يُخصم أي مبلغإذا كانت X-Should-Retry: true، فأعد المحاولة بعد عدد الثواني في Retry-After؛ وإذا كانت false، فتحقق أولاً من Request ID في السجل
504model_timeoutلم يرد النموذج في الوقت المحدد، وقد تظهر النتيجة لاحقاًلا تُعد إرسال الطلب حتى تتحقق من Request ID في السجل

أصبحت رموز ردود النموذج والتحقق من النتيجة (502 و503 و504) تشير إلى النموذج أو الطلب: model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed و result_pending_check. إذا كان الكود يقارن error.code بالقيم السابقة، فاستبدلها برموز الجدول؛ وسيبيّن مطابقة الرموز القديمة بالجديدة الدعم.

متى تعيد الطلب

  • تحقق أولاً من X-Should-Retry: عند false, result_pending_check أو model_timeout لا تُعد المحاولة تلقائياً. ابحث عن Request ID في سجل لوحة الحساب، حيث تظهر النتيجة والخصم.
  • تكون إعادة المحاولة آمنة عندما تتلقى X-Should-Retry: true: انتظر Retry-After ثانية. لا يكفي رمز 5xx وحده: فقد تكون النتيجة ظهرت بالفعل. تحقق أولاً من السجل في لوحة الحساب أو تواصل مع الدعم مع إرفاق Request ID. يهم ذلك خصوصاً للصور والفيديو والموسيقى وخطوات الوكلاء الطويلة.
  • إعادة المحاولة لن تفيد: 400, 401, 402, 403, 404 — صحح الطلب أو المفتاح أو الرصيد أولاً.

الحدود

تُطبق حدود المعدل وعدد الطلبات المتزامنة على حسابك بأكمله، لا على كل مفتاح منفرد. عند تجاوزها، يأتي الرد 429 rate_limit_exceeded بالترويسة Retry-After: 10. إذا كان النموذج نفسه مثقلاً، يأتي الرد 503 model_overloaded مع Retry-After: 30. إذا احتجت إلى حمل أكبر، فتواصل مع الدعم.

تُحدد حدود الإنفاق لكل مفتاح: الحد الإجمالي — 402 api_key_quota_exhausted، ونوافذ 5 ساعات ويوم واحد و7 أيام — 429 usage_limit_reached. مزيد من التفاصيل — المفاتيح وعنوان API.

نماذج NVIDIA: قائمة الانتظار

يمكن طلب قائمة النماذج حتى برصيد صفري، لكن التوليد يحتاج إلى رصيد للحجز. تعمل نماذج NVIDIA (Nemotron وغيرها) عبر قائمة انتظار مشتركة: قد يتأخر الرد عند الحمل العالي أو يأتي خطأ «النموذج مثقل مؤقتاً» مع ترويسة Retry-After؛ أعد المحاولة بعد المدة المحددة. الأسعار في الكتالوج، والخصم كما في النماذج الأخرى.

يحدد النموذج حدود الحجم: السياق (عدد التوكنات التي يمكن إرسالها) وأقصى طول للرد. وهي موضحة في الكتالوج.

السجل والتكاليف

السجل والتكاليف · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN

JWT ≠ sk-… · تسجيل الدخول والجلسات

هل لديك أسئلة أخرى؟ أرسل Request ID ووصفاً للمشكلة وسنساعدك على فهمها.مراسلة الدعم