الأخطاء ورموز الحالة HTTP
تستخدم أخطاء التطبيق application/problem+json وفق RFC 9457. عالج الأخطاء اعتمادًا على الحقلين الثابتين code وaction، وليس النص التوضيحي في detail. يتضمن errors مواقع JSON Pointer للحقول التي فشل التحقق منها. أرفق request_id عند التواصل مع الدعم. قد تعيد أخطاء الاتصال أو الوكيل محتوى مختلفًا؛ افحص Content-Type قبل تحليل JSON.
يوضح المثال التركيبي 422 التالي بنية بريد إلكتروني غير صالحة قبل إعداد الفواتير. يسرد كتالوج الأخطاء العام كل رمز وحالة وشرح وإجراء مقترح.
| حالة HTTP | معنى نموذجي | الخطوة التالية |
|---|---|---|
| 400 / 413 / 415 | JSON غير صحيح أو جسم كبير الحجم أو نوع وسائط غير مدعوم. | تصحيح الطلب. |
| 401 / 403 | تم رفض الوصول أو تقييد الحساب أو عدم كفاية الاعتمادات. | فحص code؛ الوصول الصحيح أو تجديد الاعتمادات / انتظر إعادة تعيين النسخة التجريبية. |
| 422 | إدخال غير صالح أو خيارات غير متوافقة. | قم بتصحيح الحقول المحددة في errors. |
| 404 / 405 | مسار غير معروف أو طريقة HTTP غير مدعومة. | تحقق من مسار نقطة النهاية ورأس الاستجابة Allow. |
| 429 | حد المعدل أو التزامن. | انتظر Retry-After قبل إرسال طلب آخر. |
| 500 | فشل غير متوقع في الخادم. | اتصل بالدعم مع request_id؛ تحقق من الفواتير قبل إعادة المحاولة. |
| 502 / 503 / 504 | فشل الموفر أو التبعية أو الفوترة أو انتهاء المهلة. | افحص code وaction وbilling_status قبل إعادة المحاولة. |
{
"type": "urn:genderapi:problem:validation_error",
"title": "validation error",
"status": 422,
"detail": "A valid email address is required.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "validation_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "correct_request",
"errors": [
{
"pointer": "/value",
"message": "Invalid email address."
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 0,
"remaining_credits": null,
"billing_status": "not_charged",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
}
}
}إعادة المحاولة وإعداد الفواتير
كل طلب تنبؤ هو عملية جديدة، بما في ذلك طلب مماثل تم إرساله مرة أخرى. تنطبق قواعد الائتمان العادية على كل طلب. لا توجد حماية للطلبات المكررة، لذا تجنب إعادة المحاولة التلقائية بعد فقدان الاتصال أو نتيجة غير معروفة.
للحصول على رد 429، انتظر Retry-After قبل إرسال طلب آخر. بالنسبة لحالات فشل التنبؤ، قم بفحص code وaction وmeta.usage.billing_status أولاً. بالنسبة إلى billing_reconciliation_required أو الفواتير غير المؤكدة، اتصل بالدعم مع request_id قبل إعادة المحاولة.
قد تُرجع الدفعة الناجحة جزئيًا HTTP 200. تحقق من كل عنصر وأعد إرسال العناصر الفاشلة فقط بعد تأكيد الفواتير؛ سيتم إصدار فاتورة بالعناصر الناجحة مرة أخرى في حالة إعادة إرسالها.
يحدد X-Request-ID وmeta.request_id محاولة HTTP الحالية. اقرأ /usage لمعرفة الرصيد الحالي. لا يبدأ HEAD تنبؤًا قابلاً للفوترة. التنبؤ واستجابات الحساب غير قابلة للتخزين المؤقت.
يجب على العملاء قبول حقول الاستجابة الإضافية والحفاظ على قيم null عند عدم توفر المعلومات.
حدود الطلب
تعامل مع HTTP 429 وRetry-After بدلاً من افتراض أنه سيتم قبول الطلبات دائمًا عند هذه الحدود القصوى. يتم تقاسم القدرة على الخدمة. القيم المعروضة هي الإعدادات الافتراضية للخدمة الحالية. تتضمن استجابات الحد الأقصى للمعدل X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset (ثواني Unix). Retry-After هو تأخير بالثواني. تصف هذه الرؤوس حدود الطلب، وليس الاعتمادات المتبقية. حتى قراءة /usage المجانية يتم احتسابها ضمن حدود المعدل.
| الحد | القيمة |
|---|---|
| نص الطلب JSON | 64 KiB الحد الأقصى |
| قيمة التنبؤ | 1–254 حرفًا |
| الدفعة | 50 عنصرًا بمفتاح API؛ 10 مع تجربة IP |
| معدل الحساب | 120 طلب في الدقيقة |
| معدل IP | 600 طلب في الدقيقة |
| العمليات المتزامنة | 2 لكل حساب؛ 16 عبر الخدمة |