وثائق API V2

GenderAPI.io V2: استجابات JSON ودرجة الثقة

اقرأ حقول data وmeta في GenderAPI.io V2: التقديرات، وconfidence_kind، والنتائج غير المعروفة، ومصدر الأدلة، ووضع الوصول، وحالة الخصم.

فهم استجابة JSON

تعيد التقديرات الفردية في GenderAPI.io V2 كائن data للنتيجة وكائن meta لمعلومات الطلب والوصول والخصم. اقرأ data.gender وdata.confidence مع data.confidence_kind وdata.source. مثال مجموعة البيانات التالي استجابة حقيقية جرى الحصول عليها في 1 أكتوبر 2026 باستخدام مفتاح API، ولم يُستبدل فيها سوى رصيد الحساب. وهو لا يمثّل دقة مقيسة للمنتج، وقد يعيد طلب حي نتيجة مختلفة. تُظهر الطلبات التي تستخدم مفتاح API القيمة access.mode: api_key وقيمة null في حقول الحصة الخاصة بالتجربة؛ أما طلبات التجربة حسب عنوان IP فتُظهر ip_trial مع حد التجربة ووقت إعادة التعيين.

مثال على استجابة JSON
{
  "data": {
    "input": {
      "type": "name",
      "value": "محمد",
      "country": "SA"
    },
    "name": "محمد",
    "gender": "male",
    "country": "SA",
    "confidence": 0.9850187265917603,
    "confidence_kind": "observed_frequency",
    "sample_count": 1869,
    "source": "dataset",
    "result_status": "identified",
    "reason": null,
    "country_source": "dataset",
    "match": {
      "name": "محمد",
      "method": "normalized",
      "scope": "country",
      "country": "SA"
    }
  },
  "meta": {
    "request_id": "64092cee-096a-4ae9-abc9-53addc430187",
    "duration_ms": 9,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 1,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}

حقول استجابة التقدير

الحقلالنوعيمكن أن يكون nullمثالالوصف
data.inputobjectلا{"type":"name","value":"محمد","country":"SA"}نوع الإدخال والقيمة والدولة. يُضمَّن forceToGenderize عندما تكون قيمته true.
data.namestringنعم"محمد"الاسم الأول المطابق أو المستخرج؛ وnull إذا لم يتوفر.
data.genderstringنعم"male"male أو female أو JSON null. تقدير، وليس هوية شخصية موثَّقة.
data.result_statusstringلا"identified"identified عند إعادة جنس؛ وإلا unknown.
data.reasonstringنعمnullnull للنتائج identified. أسباب unknown: not_found أو no_name_candidate أو ambiguous أو insufficient_evidence.
data.confidencenumberنعم0.95قيمة من 0 إلى 1 أو null. إذا كان gender هو null، فدرجة الثقة null أيضًا.
data.confidence_kindstringنعم"observed_frequency"observed_frequency: العدد الغالب في مجموعة البيانات مقسومًا على الإجمالي. model_reported: قيمة يقدّمها الذكاء الاصطناعي، وليست احتمالًا معايرًا. null إذا لم تتوفر.
data.sample_countintegerنعم1200حجم العينة في مجموعة البيانات أو null. لا يختلق الذكاء الاصطناعي عددًا للعينات.
data.sourcestringلا"dataset"dataset أو ai أو none.
data.countrystringنعم"SA"ارتباط بدولة مصدره dataset أو ai_association، أو null. لا يحدد الجنسية أو مكان الإقامة أو الأصل العرقي.
data.country_sourcestringنعم"dataset"مصدر الارتباط بالدولة: dataset أو ai_association أو null.
data.matchobjectلا{"name":"محمد","method":"normalized","scope":"country","country":"SA"}الاسم المطابق في مجموعة البيانات، والطريقة (normalized أو token أو substring أو model_inference)، والنطاق country أو global، والدولة المطابقة. الأدلة غير المتوفرة قيمتها null.

حقول الإدخال المُعادة

الحقلالنوعيمكن أن يكون nullمثالالوصف
data.input.typestringلا"name"فئة الإدخال: name أو email أو username.
data.input.valuestringلا"محمد"القيمة المُرسلة للتقدير.
data.input.countrystringنعم"SA"سياق الدولة المُرسل؛ وnull إذا حُذف.
data.input.forceToGenderizebooleanلاtrueلا يظهر إلا عند تفعيل وضع الأسماء المستعارة؛ ويُحذف في غير ذلك.

حقول المطابقة في مجموعة البيانات

الحقلالنوعيمكن أن يكون nullمثالالوصف
data.match.namestringنعم"محمد"المرشح المختار من مجموعة البيانات؛ وnull إذا لم يُختر أي صف من مجموعة البيانات.
data.match.methodstringنعم"normalized"normalized أو token أو substring أو model_inference؛ وnull إذا لم يتوفر.
data.match.scopestringنعم"country"country أو global لعمليات البحث في مجموعة البيانات؛ وnull للذكاء الاصطناعي أو عند غياب الأدلة.
data.match.countrystringنعم"SA"دولة الصف المختار في مجموعة البيانات؛ وnull للصفوف العامة أو للذكاء الاصطناعي.

البيانات الوصفية للوصول والخصم والطلب

الحقلالنوعيمكن أن يكون nullمثالالوصف
meta.request_idstringلا"550e8400-e29b-41d4-a716-446655440000"معرّف فريد لمحاولة HTTP هذه؛ ويُرسل أيضًا في X-Request-ID.
meta.duration_msintegerلا42مدة معالجة الطلب بالمللي ثانية.
meta.access.modestringلا"api_key"api_key أو ip_trial أو unauthenticated. عند استخدام حساب مدفوع، تحقّق من ظهور api_key.
meta.access.reasonstringنعمnullسبب الانتقال إلى التجربة حسب عنوان IP: api_key_missing أو api_key_invalid أو api_key_not_found؛ وإلا null.
meta.usage.charged_creditsintegerنعم1صافي الأرصدة المخصومة. صفر قبل الخصم أو بعد استرداد كامل مؤكد؛ وnull إذا لم يُؤكَّد الخصم.
meta.usage.remaining_creditsintegerنعم99الرصيد عند اكتمال العملية. قد يكون سالبًا؛ وnull إذا لم يتوفر أو لم يُؤكَّد الخصم.
meta.usage.billing_statusstringلا"confirmed"not_charged أو confirmed أو unconfirmed. تحقّق منه قبل إعادة محاولة تقدير فاشل.
meta.usage.resets_atstringنعم"2026-09-27T12:00:00.000Z"موعد تجديد التجربة حسب عنوان IP بتوقيت UTC (ISO 8601)؛ وnull لحسابات مفاتيح API أو إذا كان غير معروف.
meta.usage.limitintegerنعم10حصة التجربة حسب عنوان IP؛ وnull لحسابات مفاتيح API.
meta.usage.period_secondsintegerنعم86400مدة فترة التجربة حسب عنوان IP بالثواني؛ وnull لحسابات مفاتيح API.

نتيجة غير معروفة ناجحة

يعني HTTP 200 أن العملية اكتملت، لكنه لا يضمن وجود جنس. احتفظ بقيمة JSON null بدلًا من تحويلها إلى male أو female أو سلسلة فارغة أو درجة ثقة صفرية. تحقّق من data.result_status وdata.reason بمعزل عن أخطاء HTTP.

يعيد هذا المثال الحقيقي، القائم على مجموعة البيانات فقط والذي جرى الحصول عليه في 1 أكتوبر 2026، source: none وreason: not_found، وتكلفته مع ذلك رصيد واحد. قد يعيد صف متعادل في مجموعة البيانات reason: ambiguous مع الاحتفاظ بقيمة sample_count. وتستخدم النتيجة غير المعروفة من الذكاء الاصطناعي source: ai وreason: insufficient_evidence.

مثال على استجابة JSON
{
  "data": {
    "input": {
      "type": "name",
      "value": "zzzxxyy",
      "country": null
    },
    "name": null,
    "gender": null,
    "country": null,
    "confidence": null,
    "confidence_kind": null,
    "sample_count": null,
    "source": "none",
    "result_status": "unknown",
    "reason": "not_found",
    "country_source": null,
    "match": {
      "name": null,
      "method": null,
      "scope": null,
      "country": null
    }
  },
  "meta": {
    "request_id": "54fdcd4e-f8bc-4224-918f-3a5732e08b9c",
    "duration_ms": 10,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 1,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}

تفسير درجة الثقة وأدلة المطابقة

درجة الثقة 0.9 مُعبَّر عنها على مقياس من 0 إلى 1. في observed_frequency، تعني العدد الغالب مقسومًا على إجمالي الصف المختار في مجموعة البيانات؛ وهي ليست دقة المنتج المقيسة من البداية إلى النهاية. أما قيمة model_reported فيقدّمها الذكاء الاصطناعي، وهي غير معايرة على تكرارات مجموعة البيانات.

حدّد عتبات تطبيقك بناءً على بيانات التقييم الخاصة بك وعلى confidence_kind. لا تضع قيم مجموعة البيانات وقيم الذكاء الاصطناعي في ترتيب واحد كأنها تقيس الشيء نفسه. في نتائج الذكاء الاصطناعي، تكون قيمة match.name وmatch.scope وmatch.country هي null لأنه لم يُختر أي صف من مجموعة البيانات؛ وقيمة match.method هي model_inference.

في الأسماء الكاملة، قد تأتي نتيجة مجموعة البيانات من أحد أجزاء الاسم بدلًا من السلسلة كاملة. يحتفظ data.input بالقيمة المُرسلة؛ ويصف data.name الاسم المُعاد، ويصف data.match المرشح ونطاق البحث.

تحديد ما يجب أن يفعله تطبيقك

تعامل أولًا مع أخطاء الطلب وأخطاء العناصر المنفردة، ثم تحقّق من result_status. في التقدير الفردي اقرأ data؛ وفي الطلب المجمّع طبّق القرار نفسه على data في كل عنصر ناجح. احتفظ بالنتائج غير المعروفة في تطبيقك بدلًا من فرض التصنيف male أو female.

النتيجةماذا تعنيالمعالجة الموصى بها
identified; gender: male أو femaleأعاد التقدير جنسًا، استنادًا إلى مجموعة البيانات أو إلى الذكاء الاصطناعي.طبّق قاعدة جرى تقييمها لهذا confidence_kind تحديدًا؛ واحتفظ بـ source وبأدلة المطابقة.
unknown; reason: not_foundلا يطابق أي سجل مخزَّن في مجموعة البيانات المرشحين المستخرجين.اترك gender على null. الطلب الجديد المقصود بخيارات ذكاء اصطناعي أخرى عملية مدفوعة جديدة.
unknown; reason: no_name_candidateلم ينتج تفسير المُدخل لمجموعة البيانات مرشحًا صالحًا للاسم.احتفظ بقيمة null؛ وتحقّق من نوع الإدخال والقيمة قبل اختيار تقدير إضافي.
unknown; reason: ambiguousللصف المختار في مجموعة البيانات العدد نفسه من الإناث والذكور؛ وقد تظل sample_count موجودة.لا تقرر بنفسك أي جنس هو الصحيح، ولا تحوّل درجة الثقة null إلى صفر.
unknown; reason: insufficient_evidenceأكمل الذكاء الاصطناعي الطلب دون أدلة كافية لإعادة جنس.تعامل معها كنتيجة غير معروفة مكتملة، لا كخطأ لدى مزوّد الخدمة ولا كحالة لإعادة المحاولة التلقائية.
Problem Details أو error لعنصرفشل التنفيذ، مثلًا بسبب ai_upstream_error أو prediction_timeout.احفظ رمز الخطأ ومعرّف الطلب، وتحقّق من الخصم، واتبع إرشادات إعادة المحاولة.

اختيار العتبات بناءً على تقييمك الخاص

لا توجد عتبة عامة لدرجة الثقة تجعل التقدير صحيحًا. قيّم observed_frequency وmodel_reported كلًّا على حدة، باستخدام أمثلة ممثِّلة مصنَّفة بشكل مستقل من حالة الاستخدام الخاصة بك. التكرار في مجموعة البيانات والقيمة التي يقدّمها الذكاء الاصطناعي إشارتان مختلفتان، حتى عندما تكون قيمة كل منهما 0.9. قِس عدد المرات التي تعطي فيها قاعدتك إجابة، وعدد المرات التي تكون فيها هذه الإجابات صحيحة؛ وفي بقية الحالات احتفظ بنتيجة غير معروفة أو خطّط لمراجعة يدوية.

على سبيل المثال، إذا كانت قيمة result_status هي identified وقيمة confidence_kind هي model_reported، فطبّق القاعدة التي قيّمتها للذكاء الاصطناعي، لا عتبة مجموعة البيانات. إذا استُخدم forceToGenderize، فإن name: null مع جنس غير null نتيجة صالحة: إذ يمكن تفسير اسم مستعار دون استخراج اسم أول حقيقي. تحقّق من gender وresult_status، لا من name وحده، لتعرف هل أعطى التقدير إجابة. تظل النتيجة تقديرًا، وليست تأكيدًا لهوية شخص.

أدلة ذات صلة