Skip to main content
وثائق API

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

إرشادات أخطاء HTTP ومفاتيح Idempotency-Key وإعادة المحاولة الآمنة وحالات الفوترة غير المؤكدة في API.

تنطبق الأدلة المشتركة على واجهتي تحويل الصور إلى نصوص وجداول. راجع مرجع كل واجهة لمعرفة المدخلات والصيغ والأخطاء الخاصة بها.

استجابات الأخطاء

مثال لاستجابة خطأ JSON:

{
  "request_id": "b2c8ec98-2a36-4f87-99d2-3d7839b92518",
  "error": {
    "code": "insufficient_balance",
    "message": "Recognition did not complete",
    "required_reservation_usd": "0.011288000"
  }
}

رموز حالة HTTP

HTTPerror.code
400invalid_request, invalid_idempotency_key, invalid_image
401unauthorized
402insufficient_balance
403account_unavailable
405invalid_request
409idempotency_conflict, request_in_progress
413image_too_large, input_limit_exceeded
415unsupported_media_type
422recognition_blocked
429rate_limit_exceeded, concurrency_limit_exceeded
502recognition_failed, output_truncated, empty_result, invalid_usage
503service_unavailable, settlement_pending, export_failed
504request_timeout
HTTPالسببالإجراء
400 / 413 / 415طلب أو حجم صورة أو نوع وسائط غير صالحصحح الملف أو قلل حجمه
405طريقة HTTP غير صحيحةاستخدم POST
401مفتاح API مفقود أو غير صالحتحقق من مفتاح Bearer
403الحساب غير متاحأكمل التحقق أو عالج تقييد الحساب
402الرصيد المتاح غير كافاشحن الرصيد وراجع error.required_reservation_usd وقواعد الرصيد والحجز
409تعارض معرّف العملية أو استمرار معالجتهاعند request_in_progress احتفظ بالمعرّف والصورة ثم انتظر وأعد المحاولة؛ وعند التعارض صحح معرّف العملية
429تجاوز حد الطلبات أو التزامنانتظر وفق Retry-After
422 / 502 المؤكدإخفاق التعرف المؤكدلا تُفرض رسوم للتعرف؛ تحقق من الخطأ
503 / 504 / حالة غير مؤكدةعدم يقين الخدمة أو التسوية أو المهلةلا تفترض عدم الخصم؛ أعد المحاولة باستخدام Idempotency-Key والصورة الأصليين

تعود الأخطاء بصيغة JSON وتحتوي request_id وerror.code وerror.message. تستخدم جميع الاستجابات Cache-Control: no-store؛ التعرف غير متدفق، وتستخدم الاستجابة الناجحة الصيغة المحددة بينما تبقى الأخطاء JSON. احتفظ بـ X-Request-Id عند التواصل مع الدعم.

منع التكرار

Idempotency-Key هو معرّف العملية: من 16 إلى 128 حرف ASCII أو رقماً أو . _ : -. استخدم معرّفاً فريداً جديداً لكل صورة جديدة، واحتفظ بالمعرّف والبايتات الأصلية وMIME عند الإعادة. النطاق هو الحساب حتى عند تغيير المفتاح. خلال 24 ساعة من القبول تعيد العملية المكتملة request_id والنتيجة والتكلفة الأصلية مع Idempotency-Replayed: true دون توليد أو خصم جديد.

استخدم Idempotency-Key مختلفاً لكل عملية أو نقطة وصول جديدة. تؤدي مشاركته بين واجهتي النص والجداول إلى 409 idempotency_conflict. عند تغيير صيغة العملية نفسها أعد استخدام المفتاح والصورة الأصليين.

استراتيجية إعادة المحاولة

عند خطأ شبكة أو request_in_progress أو settlement_pending، احتفظ بالمعرّف والصورة وانتظر Retry-After ثانية ثم أعد المحاولة. لا تنشئ عملية أخرى ما دام التسوية غير مؤكدة. الإخفاقات النهائية المحفوظة تعيد الخطأ نفسه؛ استخدم معرّفاً جديداً فقط لبدء مقصود بعد تأكيد الفشل. بعد 24 ساعة قد ينشئ المعرّف عملية مدفوعة جديدة، ويظل الاسترداد غير المكتمل مانعاً لإعادة الاستخدام.

أمان الفوترة

إخفاق التعرف المؤكد لا يُحاسب، لكن فقدان الاستجابة أو settlement_pending قد يعني إتمام الخصم أو استمرار الحجز. لا تبدأ عملية بمعرّف Idempotency-Key جديد أثناء عدم وضوح النتيجة؛ أعد المحاولة بنفس المعرّف والصورة، واحتفظ بـ X-Request-Id للدعم.