الأخطاء والحدود
كل رمز خطأ يعيده Partner API، وكل حد يفرضه.
كل فشل له الشكل نفسه. فرّع على error.error_code؛ سجّل الوصف للقراءة البشرية؛ لا تطابق نصّه أبدًا. error.error_attributes يحمل التفاصيل التي يحددها الرمز، وهو لا قيمة للباقي.
{
"description": "story_document: يقدّم الرابط \"text/html\"، وهذا الإدخال لا يقبله. وجّه إلى الملف نفسه.",
"code": "url_type_not_allowed",
"error": {
"id": null,
"error_code": "url_type_not_allowed",
"error_attributes": null,
"user_readable_message": null,
"locale": "ar"
}
}الرمز يتكرر error.error_code للعملاء الأقدم؛ اقرأ error.error_code.
رموز الأخطاء
| HTTP | error_code | يعني | ما الذي يجب فعله |
|---|---|---|---|
| 400 | invalid_request | الجسم أو قيمة الإدخال غير صحيحة؛ يذكر الوصف اسم الإدخال | أصلحه وأعد الإرسال. لا تعِد المحاولة من دون تغيير مطلقًا |
| 400 | url_not_fetchable | تعذّر جلب الرابط، أو خالف إحدى قواعد الروابط، أو قدّم ملفًا فارغًا | قارنْه مع تمرير الملفات عبر عنوان URL |
| 400 | url_type_not_allowed | قدّم الرابط نوع محتوى لا يقبله هذا الإدخال، أو بايتات ليست من النوع الذي ادّعاه | قدّم الملف نفسه، بنوعه الحقيقي |
| 400 | url_too_large | يتجاوز حجم الملف الحد الأقصى للبايتات، أو يتجاوز ما تبقّى من ميزانية البايتات الخاصة بالتشغيل | أرسل ملفًا أصغر |
| 401 | غير مخوّل | المفتاح مفقود، أو مشوّه، أو ملغى، أو منتهي الصلاحية | توقف وأبلغ أحدًا. لا يمكن لإعادة المحاولة أن تفيد |
| 403 | api_key_credit_limit_reached | المفتاح عند أحد حدود الرصيد الخاصة به؛ error_attributes.period يوضح أيّ | اطلب من مسؤول رفع حد المفتاح في Studio، أو انتظر حتى تتم إعادة تعيين الحد اليومي أو الشهري |
| 403 | credits_exhausted | لم يتبقَّ لدى المؤسسة أي رصيد | اشحن رصيد المؤسسة |
| 403 | access_denied | org_id ليست هي المؤسسة الخاصة بالمفتاح، أو يفتقر المفتاح إلى النطاق، أو قد لا يُسمح له بتشغيل سير العمل هذا | تحقق من نطاقات المفتاح وقائمة السماح لسير العمل في Studio |
| 404 | entity_not_found | لا يوجد مثل هذا سير عمل أو مشروع أو تشغيل أو نقطة نهاية webhook في مؤسستك — أو تشغيل لسير عمل خارج قائمة السماح الخاصة بالمفتاح | تحقق من المعرّف |
| 409 | idempotency_conflict | نفس idempotency_key وصل مع جسم مختلف | استخدم مفتاحًا جديدًا للعمل الجديد |
| 429 | too_many_requests | تم الوصول إلى حد القراءة | انتظر Retry-After، ثم أعد الإرسال |
| 500 | internal_error | لنا | أعد المحاولة مع زيادة الفاصل؛ إذا استمر، فأرسل لنا x-morphic-trace-id |
الحدود
| الحد | الافتراضي | ملاحظات |
|---|---|---|
| الأرصدة | حدود المفتاح الخاصة به | إجمالي يملكه كل مفتاح، وحدود اختيارية يومية وشهرية — راجع حدود الرصيد |
| قراءات تشغيل واحد | 30 في الدقيقة، لكل مفتاح | قراءة واحدة في الدقيقة لكل تشغيل تكفي؛ wait=45 أرخص أيضًا |
| قراءات جميع العمليات | 1,200 في الدقيقة، لكل مفتاح | مساحة لمتابعة مئات العمليات في وقت واحد |
| الروابط لكل تشغيل | 10 | عبر جميع مدخلات الملفات معًا |
| البايتات لكل تشغيل | 500 MB | عبر جميع الروابط معًا |
| البايتات لكل ملف | الخاصة بالإدخال الحد الأقصى للبايتات | المستندات حتى 100 ميغابايت؛ حدود الوسائط تكون لكل إدخال |
| مدة التشغيل | 24 ساعة | أي تشغيل لم يكتمل بحلول expires_at يصبح منتهي الصلاحية |
| نقاط نهاية Webhook | 10 لكل مؤسسة | أزل واحدًا قبل إضافة آخر |
بدء العمليات لا يخضع أبدًا لتقييد المعدل: حدود رصيد المفتاح تحدد ما يمكن أن تنفقه حلقة إعادة المحاولة، و idempotency_key يجعل إعادة المحاولة إعادة تشغيل. وتُرفع حدود القراءة عند الطلب لحجمٍ ناقشناه.
الفوترة
تُحاسَب أرصدة أي تشغيل بدأ عبر API على المؤسسة التي تملك المفتاح، وتُحتسب على المفتاح الذي بدأه. يرى المسؤول الإنفاق تحت الفوترة والاستخدام → نشاط الرصيد في Studio، وتظهر حدود كل مفتاح على مفاتيح API الصفحة.
يستمر احتساب التشغيل على المفتاح الذي بدأه حتى لو تدخل أحدهم في الدردشة داخل Studio وتولّى الأمر، لذا فإن الميزانية المتبقية للمفتاح هي ميزانية التشغيل بأكمله.
أي تشغيل يُرفض قبل أن يبدأ — رابط غير صالح، أو مفتاح أو مؤسسة بلا رصيد — لا يكلف شيئًا. أما التشغيل الذي يفشل في منتصفه فقد استهلك تكلفة ما اكتمل من خطواته؛ الأرصدة المستخدمة في التشغيل يوضح المقدار.