# استخراج الاسم الأول وإشارة الجنس من البريد الإلكتروني

> استخرج اسمًا أول محتملًا من عنوان البريد الإلكتروني، وأضف التقدير المرتبط به وحقول المصدر إلى سير عملك في Excel أو Google Sheets أو API، دون تغيير المعلومات التي قدّمها الشخص.

Canonical HTML: https://www.genderapi.io/ar/blog/extract-names-from-email-addresses

Last reviewed: 2026-09-29

## معلومات النشر

تاريخ النشر الأول: 2025-06-14T12:00:00.000Z

آخر مراجعة: 2026-09-29T00:00:00.000Z

## هل يستطيع GenderAPI استخراج الاسم الأول من عنوان البريد الإلكتروني؟

نعم. في عناوين البريد الإلكتروني الشخصية المدعومة، يستطيع GenderAPI استخراج اسم أول محتمل من الجزء السابق لعلامة @، ويعيد إشارة الجنس وسياق البلد ودرجة الثقة. هذا تقدير وليس تحققًا من الهوية، وقد لا تُعاد أي نتيجة للعناوين العامة أو العشوائية.

- [العرض التجريبي لـ V2 عبر الإنترنت وخياراته](https://www.genderapi.io/ar/blog/extract-names-from-email-addresses#demo)

## تحليل عنوان بريد إلكتروني

أرسل قيمة واطّلع على الاستجابة كاملة، بما في ذلك النتائج غير المعروفة والأرصدة المخصومة.

الذكاء الاصطناعي دائمًا (الافتراضي): رصيدان، حتى مع نتيجة غير معروفة. الوضع الاحتياطي: رصيد واحد، بما في ذلك الرجوع إلى الذكاء الاصطناعي والنتائج غير المعروفة. متوقف، مجموعة البيانات فقط (دون ذكاء اصطناعي): رصيد واحد لكل طلب مكتمل، حتى مع نتيجة غير معروفة. عند تفعيل تفسير الاسم المستعار: رصيد واحد إذا وُجدت النتيجة في مجموعة البيانات، ورصيدان إجمالًا إذا استُخدم الذكاء الاصطناعي، حتى مع نتيجة غير معروفة.

تُرسَل القيمة (عنوان البريد الإلكتروني كاملًا) إلى GenderAPI.io، وتُرسَل أيضًا إلى خدمة الذكاء الاصطناعي المهيأة في وضع «الذكاء الاصطناعي دائمًا» (الافتراضي) أو عند الحاجة إلى الرجوع إلى الذكاء الاصطناعي، ولا تُرسَل إليها في وضع «متوقف». [تعرّف على كيفية التعامل مع البيانات](https://www.genderapi.io/ar/data-provenance).

التُقطت هذه الاستجابة الحقيقية في 1 أكتوبر 2026، ولم يُستبدل منها سوى رصيد الحساب. وقد تختلف القيم في الطلبات المباشرة. التقدير ليس هوية مؤكَّدة.

**استجابة V2 حقيقية، التُقطت في 1 أكتوبر 2026**

```json
{
  "data": {
    "input": {
      "type": "email",
      "value": "ahmed.alharbi@example.com",
      "country": null
    },
    "name": "ahmed",
    "gender": "male",
    "country": "SA",
    "confidence": 0.98,
    "confidence_kind": "model_reported",
    "sample_count": null,
    "source": "ai",
    "result_status": "identified",
    "reason": null,
    "country_source": "ai_association",
    "match": {
      "name": null,
      "method": "model_inference",
      "scope": null,
      "country": null
    }
  },
  "meta": {
    "request_id": "03016eed-fe21-4537-8b16-2ebb946704c2",
    "duration_ms": 379,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 2,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}
```

- [أنشئ حسابًا](https://app.genderapi.io/user/register)

## من عنوان البريد الإلكتروني إلى بيانات منظمة

- المُدخل: emilyblack@email.com
- استخراج الاسم: Emily
- الإثراء: الجنس + درجة الثقة

## اختر أين تعالج بيانات البريد الإلكتروني

- [Microsoft Excel ثبّت الإضافة ←](https://appsource.microsoft.com/en-us/product/office/WA200008555)
- [Google Sheets افتح Marketplace ←](https://workspace.google.com/marketplace/app/gender_api_determines_gender_of_name_or/712811575775)
- [Shopify اعرض التطبيق ←](https://apps.shopify.com/gender-api)
- [المعالجة المجمّعة لملفات Excel وCSV افتح أداة الملفات ←](https://app.genderapi.io/csv)
- [Airtable اعرض الامتداد ←](https://airtable.com/marketplace/blkqCasjQIqmmBrmb/gender-api-io-determine-gender)
- [REST API اعرض نقطة النهاية ←](https://www.genderapi.io/ar/docs/v2/gender-from-email)

## عالج عمود عناوين البريد الإلكتروني بإضافة Excel

اختر طريقة معالجة عناوين البريد الإلكتروني، ثم عيّن عمود المصدر وحقول النتائج. استخدم GENDER.FROM_EMAIL للاستعلامات الديناميكية في الخلايا، والشريط الجانبي للنتائج الثابتة.

- [شاهد الفيديو التعليمي لـ Excel](https://youtu.be/6j4w-3oMZnA)
- [دليل إضافة GenderAPI لـ Excel](https://www.genderapi.io/ar/blog/genderize-excel-names-using-genderapi-excel-add-in)
- [دالة GENDER في Excel](https://www.genderapi.io/ar/blog/gender-formula-for-microsoft-excel)

## حلّل عناوين البريد الإلكتروني بالإضافة أو بالدالة

استخدم الإضافة للصفوف الموجودة، وسير عمل متوافقًا للصفوف الجديدة، ودالة GENDER للاستعلام من خلية واحدة.

- [دليل إضافة Google Sheets](https://www.genderapi.io/ar/blog/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AF-%D8%A7%D9%84%D8%AC%D9%86%D8%B3-%D9%81%D9%8A-%D8%AC%D9%88%D8%AC%D9%84-%D8%B4%D9%8A%D8%AA%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-gender-api)
- [دالة GENDER في Google Sheets](https://www.genderapi.io/ar/blog/sigat-jins-google-sheets-taayen-jins-min-alasmaa)

## أضف تحليل عناوين البريد الإلكتروني إلى الخادم لديك

استدعِ نقطة نهاية البريد الإلكتروني الموثّقة من الخادم، ولا تضع مفتاح API في المتصفح أو في شفرة عامة. تعامل بوضوح مع بنية الاستجابة ورموز الأخطاء واستهلاك الأرصدة.

هذه اللقطة مأخوذة من نتيجة تكامل قديم، ولا تعرض قواعد استجابة V2 الحالية.

- [طلب عنوان بريد إلكتروني واحد](https://www.genderapi.io/ar/docs/v2/gender-from-email)
- [طلب عدة عناوين بريد إلكتروني](https://www.genderapi.io/ar/docs/v2/batch)

## لا تفرض نتيجة عندما لا يتضمن العنوان اسمًا

عناوين الأدوار والمعرّفات العشوائية وصناديق البريد المشتركة لا تعطي دائمًا إشارة موثوقة. احتفظ بالحقول data.result_status وdata.reason وdata.confidence، وتعامل مع النتائج غير المؤكدة بصورة منفصلة.

المطابقة التي يُعثر عليها في عنوان البريد الإلكتروني لا تؤكد هوية مالك العنوان ولا اسمه. قِس الجودة على بياناتك، ولا تتخذ قرارًا عالي التأثير بشأن أي شخص استنادًا إلى هذا التقدير وحده.

## احفظ البيانات المصدر والتقدير كلًّا على حدة

احتفظ بمعرّف السجل الأصلي. لا تفتح API أي ملف تعريف، ولا تتحقق من مالك الحساب، ولا توثّق هوية أي شخص. أرسل سياق الدولة فقط عندما يأتي من معلومات موثوقة، ولا تستنتجه من النطاق أو من لغة الموقع.

يحلّل البحث في مجموعة البيانات الجزء السابق لعلامة @، ويحذف اللاحقة التي تبدأ بعلامة +، ويقيّم الأسماء الأولى المحتملة. وقد يضيف الطلب العادي عددًا محدودًا من المرشحين الإضافيين من بداية الأجزاء المتصلة ونهايتها. عند العثور على عدة صفوف، يُختار الصف صاحب أعلى عدد مسجَّل من مرات الظهور، وليس بالضرورة أن يكون الاسم الأول الحقيقي للشخص. إذا أرسلت دولة، يُستخدم صف تلك الدولة أولًا لكل مرشح؛ وإن لم يوجد، فقد يُستخدم الصف العام. افحص data.match.scope وcountry_source.

| السجل | الحقل | التفسير |
| --- | --- | --- |
| السجل المصدر | contact_id / original_email | احتفظ بالبيانات المصدر في نظامك، ولا تستبدل الاسم الأول الذي قدّمه الشخص بالتقدير. هذان ليسا حقلين في استجابة API. |
| الاسم الأول المحتمل | data.name / data.match | قد يكون الاسم المختار null. لا تتضمن الاستجابة حقلًا لاسم عائلة موثّق، ولا تُثبت المطابقة هوية مالك عنوان البريد الإلكتروني. |
| التقدير | data.gender / data.result_status / data.reason | تُسجَّل النتيجة غير المعروفة في JSON بالقيمة null. وفي صف متعادل في مجموعة البيانات قد يُعثر على الاسم دون الجنس. |
| الأساس | data.source / data.confidence_kind / data.confidence / data.sample_count | تتراوح قيمة confidence بين 0 و1. يقيس تكرار مجموعة البيانات ودرجة الذكاء الاصطناعي أمرين مختلفين، وفي نتيجة الذكاء الاصطناعي تكون قيمة sample_count هي null. |
| سجل العملية | meta.request_id / meta.usage | احفظ معرّف الطلب وحالة الخصم. عدم تلقي استجابة لا يعني أن العملية كانت مجانية أو أنها فشلت. |

### اختر وضع المعالجة وتكلفة الأرصدة

القيمة الافتراضية للطلب الفردي هي fallback، وللعناصر في الطلب المجمّع هي off. الخيار forceToGenderize اختياري للأسماء وعناوين البريد الإلكتروني وأسماء المستخدمين على حد سواء؛ ومعه اترك ai_mode دون تحديد أو اضبطه على fallback، لأنه لا يمكن جمعه مع off أو always. تُخصم الأرصدة أيضًا عن النتيجة unknown المكتملة. يكفي رصيد موجب لبدء الطلب، وقد يصبح الرصيد سالبًا بعد اكتمال العملية.

عند استخدام الذكاء الاصطناعي يتلقى العنوان الكامل الذي أرسلته، بما في ذلك النطاق ولاحقة +، حتى لو طُلب منه تجاهل هذين الجزأين. وقد يعيد forceToGenderize جنسًا دون العثور على اسم أول حقيقي؛ وهذا لا يعني أنه استُخرج اسم أول موثّق لنظام CRM لديك.

| الخيار | المعالجة | تكلفة كل عنصر مكتمل |
| --- | --- | --- |
| options.ai_mode: off | مجموعة البيانات فقط | رصيد واحد |
| options.ai_mode: fallback | مجموعة البيانات أولًا؛ وإذا لم يُحدَّد الجنس، الرجوع العادي إلى الذكاء الاصطناعي | رصيد واحد إجمالًا، بما في ذلك الذكاء الاصطناعي |
| options.ai_mode: always | الذكاء الاصطناعي مباشرةً | رصيدان |
| forceToGenderize: true | مجموعة البيانات أولًا؛ ثم تفسير الاسم المستعار دون اسم أول حقيقي | رصيد واحد إذا كفت مجموعة البيانات؛ ورصيدان إجمالًا إذا استُخدم الذكاء الاصطناعي |

### جرّب أولًا طلب بريد إلكتروني واحدًا بمجموعة البيانات فقط

لا تضمن أمثلة المُدخلات تقديرًا محددًا. اضبط GENDERAPI_API_KEY في بيئة الخادم، ولا تضع المفتاح في شفرة العميل العامة. يستخدم V1 وV2 مفتاح API نفسه ورصيد الحساب نفسه. تحقّق من المفتاح عبر /api/v2/usage وتأكد من أن قيمة meta.access.mode هي api_key.

اختر لغة البرمجة. [إعداد مفتاح API](https://www.genderapi.io/ar/docs/v2/authentication#environment-setup)، ثم شغّل المثال على خادمك.

كل طلب تقدير عملية جديدة مدفوعة، حتى عند إعادة المحاولة. لا تعيد هذه الأمثلة المحاولة تلقائيًا. تحقّق من حالة الخصم قبل إرسال طلب آخر.

### قبل التشغيل: الوصول ومعالجة الأخطاء

شغّل هذه الأمثلة على خادمك. اضبط GENDERAPI_API_KEY في بيئة العملية على مفتاح API الحالي. تأكد من أن قيمة meta.access.mode هي api_key: فالمفتاح غير المعروف قد يؤدي إلى استخدام التجربة حسب عنوان IP.

في استجابات JSON ذات رموز HTTP 4xx و5xx، يُحتفظ بجسم الخطأ وينتهي المثال برمز خروج غير صفري. تحقّق من code وaction وmeta.usage.billing_status قبل إعادة المحاولة.

**cURL**

cURL 7.76+ في واجهة أوامر POSIX. شغّله في الطرفية. [وثائق بيئة التشغيل](https://curl.se/docs/manpage.html)

```bash
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
}'
```

**JavaScript / Node.js**

Node.js 22+ مع fetch المدمج. احفظه باسم example.mjs وشغّل node example.mjs. [وثائق بيئة التشغيل](https://nodejs.org/api/globals.html#fetch)

```javascript
// Server-side Node.js. Save as example.mjs.
const apiKey = process.env.GENDERAPI_API_KEY;
if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");
const body = {
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
};

const response = await fetch("https://api.genderapi.io/api/v2/gender", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(30_000),
  redirect: "error",
});
const raw = await response.text();
if (!(response.headers.get("content-type") ?? "").includes("json")) {
  throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);
}
const result = JSON.parse(raw); // Also accepts application/problem+json.
if (!response.ok) {
  console.error(`HTTP ${response.status}`, result);
  process.exitCode = 1; // A retry is a new operation; inspect billing first.
} else {
  console.log(JSON.stringify(result, null, 2));
  // For batches, inspect every item: HTTP 200 may contain item errors.
}
```

**Python**

Python 3.10+ مع المكتبة القياسية. احفظه باسم example.py وشغّل python3 example.py. [وثائق بيئة التشغيل](https://docs.python.org/3/library/urllib.request.html)

```python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = urllib.request.Request(
    "https://api.genderapi.io/api/v2/gender",
    method="POST",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + api_key,
        "Content-Type": "application/json",
    },
)
opener = urllib.request.build_opener(NoRedirect())
try:
    response = opener.open(request, timeout=30)
except urllib.error.HTTPError as error:
    response = error  # Keep the Problem Details body on non-2xx responses.
with response:
    status = response.status
    raw = response.read().decode("utf-8")
    if "json" not in response.headers.get("Content-Type", ""):
        raise RuntimeError(f"HTTP {status}: expected a JSON response")
    result = json.loads(raw)
print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)
if not 200 <= status < 300:
    sys.exit(1)  # Inspect code, action and billing before retrying.
# For batches, inspect every item even when HTTP status is 200.
```

**PHP**

PHP 8+ مع امتداد cURL. احفظه باسم example.php وشغّل php example.php. [وثائق بيئة التشغيل](https://www.php.net/manual/en/book.curl.php)

```php
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"email","value":"alice.smith@example.com","options":{"ai_mode":"off"}}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.
```

**Java**

Java 17+ مع عميل HTTP القياسي. احفظه باسم GenderApiExample.java وشغّل java GenderApiExample.java. [وثائق بيئة التشغيل](https://docs.oracle.com/en/java/javase/17/docs/api/java.net.http/java/net/http/HttpClient.html)

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class GenderApiExample {
    private static String requiredEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name);
        return value;
    }

    public static void main(String[] args) throws Exception {
        String apiKey = requiredEnv("GENDERAPI_API_KEY");
        String body = "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}";
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .followRedirects(HttpClient.Redirect.NEVER)
            .build();
        HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender"))
            .timeout(Duration.ofSeconds(30))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
            .build();
        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
        if (!response.headers().firstValue("content-type").orElse("").contains("json")) {
            throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON");
        }
        // JSON text; parse with your application's JSON library when integrating.
        if (response.statusCode() < 200 || response.statusCode() >= 300) {
            System.err.println(response.body()); // Includes Problem Details.
            System.exit(1);
        }
        System.out.println(response.body());
        // For batches, inspect each item's data or error, including on HTTP 200.
    }
}
```

**C# / .NET**

تطبيق وحدة تحكم (console) على .NET 8+. استخدمه كملف Program.cs في مشروع console، ثم شغّل dotnet run. [وثائق بيئة التشغيل](https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient)

```csharp
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

string RequiredEnv(string name) =>
    !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name))
        ? Environment.GetEnvironmentVariable(name)!
        : throw new InvalidOperationException($"Set {name}");

var apiKey = RequiredEnv("GENDERAPI_API_KEY");
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}", Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
var raw = await response.Content.ReadAsStringAsync();
if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false))
    throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");
using var result = JsonDocument.Parse(raw);
if (!response.IsSuccessStatusCode)
{
    Console.Error.WriteLine(result.RootElement); // Preserve Problem Details.
    Environment.ExitCode = 1;
}
else
{
    Console.WriteLine(result.RootElement);
    // For batches, inspect every item even on HTTP 200.
}
```

**Go**

Go 1.22+ مع المكتبة القياسية. احفظه باسم main.go وشغّل go run main.go. [وثائق بيئة التشغيل](https://pkg.go.dev/net/http)

```go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)

func requiredEnv(name string) string {
    value := os.Getenv(name)
    if value == "" { panic("Set " + name) }
    return value
}

func run() error {
    apiKey := requiredEnv("GENDERAPI_API_KEY")
    body := "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + apiKey)
    request.Header.Set("Content-Type", "application/json")
    client := &http.Client{
        Timeout: 30 * time.Second,
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    raw, err := io.ReadAll(response.Body)
    if err != nil { return err }
    if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) {
        return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode)
    }
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw)
    }
    fmt.Println(string(raw))
    // For batches, inspect every item even on HTTP 200.
    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling.
        os.Exit(1)
    }
}
```

- [دليل الأخطاء وإعادة المحاولة ←](https://www.genderapi.io/ar/docs/v2/errors-and-retries)

### تعامل مع نتائج القائمة والطلبات المكررة

يقبل POST /api/v2/gender/batch ما يصل إلى 50 عنصرًا مع مفتاح API، وما يصل إلى 10 عناصر في التجربة حسب عنوان IP. حدّد type وvalue وoptions لكل عنصر على حدة. إذا أردت الرجوع العادي إلى الذكاء الاصطناعي، فاضبط fallback صراحةً في كل عنصر. يجب أن يكون id فريدًا داخل الطلب المجمّع نفسه، ويبدأ index من الصفر داخل الطلب المجمّع المُرسل. احفظ معرّف مهمتك ومعرّف الصف المصدر بشكل منفصل.

لا تعني HTTP 200 أن جميع العناصر اكتملت. تعامل مع نتائج identified وunknown وerror كلٌّ على حدة؛ إذ يحتسب meta.summary.succeeded النتائج identified وunknown معًا. اقرأ data.gender وsource وconfidence_kind وconfidence وmatch وreason مجتمعة. ولا تعامل درجة الذكاء الاصطناعي وتكرار مجموعة البيانات على أنهما الشيء نفسه.

إذا كانت قيمة meta.usage.billing_status هي confirmed، فأعد إرسال أخطاء العمليات المسموح بإعادة محاولتها فقط. وإذا كانت الحالة unconfirmed أو لم تصل أي استجابة، فتوقف وتحقّق من الخصم. إعادة إرسال العنصر نفسه، بما في ذلك النتيجة unknown المكتملة، عملية جديدة تُخصم أرصدتها؛ فلا تُعِد إرسال القائمة كاملة دون تحقق أبدًا.

[قواعد الطلب المجمّع](https://www.genderapi.io/ar/docs/v2/batch) · [حقول الاستجابة](https://www.genderapi.io/ar/docs/v2/responses) · [خيارات الذكاء الاصطناعي](https://www.genderapi.io/ar/docs/v2/ai-options) · [تقييم الدقة ودرجة الثقة](https://www.genderapi.io/ar/accuracy-methodology) · [سياسة الخصوصية](https://www.genderapi.io/ar/privacy-policy)

قد تستخدم إضافة Excel وإضافة Google Sheets والتكاملات الجاهزة الأخرى اتصالاتها وتنسيقات نتائجها الخاصة. لا تفترض أن مخرجاتها تتبع بنية JSON هذه في V2، وراجع الدليل الحالي للتكامل المعني.

## الاسم الأول والجنس من عنوان البريد الإلكتروني

### هل يمكن استخراج الاسم الأول من عنوان البريد الإلكتروني؟

في عناوين البريد الإلكتروني الشخصية المدعومة، يستطيع GenderAPI استخراج اسم أول محتمل من الجزء السابق لعلامة @، ويعيد عند توفر نتيجة معلومات الجنس والبلد ودرجة الثقة. الاسم المحتمل تقدير، وليس الاسم الموثّق لمالك عنوان البريد الإلكتروني.

### هل يُعثر على اسم في كل عنوان بريد إلكتروني؟

لا. عناوين الأدوار والمعرّفات العشوائية والأجزاء السابقة لعلامة @ التي لا تتضمن اسمًا حقيقيًا لا تعطي دائمًا إشارة موثوقة. افحص في استجابة V2 الحقول data.result_status وdata.reason وdata.confidence وdata.confidence_kind.

### هل تُحفظ استعلامات البريد الإلكتروني؟

وفق السياسة المنشورة، لا يُحتفظ باستعلامات البريد الإلكتروني كسجلات استعلام قابلة لإعادة الاستخدام. وتخضع السجلات التقنية والأمنية المنفصلة لمدد الاحتفاظ المبيّنة في سياسة الخصوصية. لا تُدخل بيانات شخصية حساسة في العرض التجريبي العام.

### هل يمكن استخدام ذلك في Excel وGoogle Sheets؟

نعم. يمكن معالجة عمود عناوين البريد الإلكتروني عبر إضافة Excel أو إضافة Google Sheets أو أداة رفع ملفات Excel وCSV. ولهذه التكاملات تنسيقات نتائج خاصة بها تختلف عن JSON في V2.

### ما الحقول التي تعيدها واجهة API؟

يعيد V2 الحقول data.name وdata.gender وdata.match وحقول المصدر ودرجة الثقة، ويذكر في meta معرّف الطلب واستهلاك الأرصدة. قد يكون الاسم المحتمل أو الجنس null. ولا تتضمن الاستجابة حقلًا لاسم عائلة موثّق.

### متى يُستخدم الذكاء الاصطناعي؟

في الطلب الفردي في V2 يكون الرجوع العادي إلى الذكاء الاصطناعي مفعّلًا افتراضيًا. في هذا العرض التجريبي يمكنك استخدام الطلب العادي أو forceToGenderize، أما off وalways فيُضبطان في طلب API. تكلفة الرجوع العادي إلى الذكاء الاصطناعي رصيد واحد إجمالًا، وتكلفة always رصيدان. ومع forceToGenderize تكون التكلفة رصيدًا واحدًا إذا جاءت النتيجة من مجموعة البيانات، ورصيدين إجمالًا إذا استُخدم الذكاء الاصطناعي؛ وقد تبقى النتيجة unknown مع ذلك.

### هل يمكن تجربة الخدمة مجانًا؟

يحصل الحساب على 200 رصيد مجاني كل يوم، وتمنح التجربة المشتركة حسب عنوان IP كل عنوان IP عام 10 أرصدة خلال فترة 24 ساعة. قد تُستخدم التجربة حسب عنوان IP عند غياب مفتاح API أو تعذّر التعرف إليه؛ راجع الحقل meta.access.mode في الاستجابة. تُحتسب هنا الأرصدة، لا عدد الطلبات.
