GenderAPI.io V2 · دليل

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

استخدم إشارة الاسم الموجودة في عنوان بريد إلكتروني مع GenderAPI.io V2. جرّب طلبًا مباشرًا، وقارن بين خيارات مجموعة البيانات والذكاء الاصطناعي، وتعرّف على كيفية التعامل مع النتائج غير المعروفة وقوائم عناوين البريد الإلكتروني.

آخر تحديث:

جرّب V2 API

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

مجموعة البيانات + الذكاء الاصطناعي

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

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

تُرسَل القيمة (عنوان البريد الإلكتروني كاملًا) إلى GenderAPI.io، وتُرسَل أيضًا إلى خدمة الذكاء الاصطناعي المهيأة في وضع «الذكاء الاصطناعي دائمًا» (الافتراضي) أو عند الحاجة إلى الرجوع إلى الذكاء الاصطناعي، ولا تُرسَل إليها في وضع «متوقف». تعرّف على كيفية التعامل مع البيانات.

لا يوجد مفتاح API محفوظ. التجربة المشتركة حسب عنوان IP متاحة في حدود أرصدتها المتبقية.

الاستجابة أدناه استجابة حقيقية التُقطت في 1 أكتوبر 2026. اختر «تحليل» لإرسال الطلب.

استجابة V2 حقيقية · التُقطت في 1 أكتوبر 2026
الاسمAhmed
الجنسذكر
درجة الثقة98‎%‎
الدولةالمملكة العربية السعودية (SA)
المصدرنموذج ذكاء اصطناعي
الأرصدة المستخدمة2

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

ماذا يخبرنا عنوان البريد الإلكتروني؟

أرسل عنوان بريد إلكتروني صالح الصيغة مع type: email. يبحث GenderAPI.io عن إشارة اسم في الجزء الذي يسبق @، ثم يعيد تقديرًا منظمًا. لا يُتحقَّق من صندوق البريد، ولا يُربط بمالك، ولا تُحدَّد الهوية الجنسانية لمالكه.

تستخرج المطابقة مع مجموعة البيانات المرشحين من أجزاء العنوان، وقد تتحقق من أجزاء محدودة من السلسلة. يُبقي وضع الأسماء المستعارة المطابقة على الأجزاء الكاملة، لكنه لا يضيف هؤلاء المرشحين المبنيين على أجزاء السلسلة. إذا تطابقت عدة سجلات، يُختار المرشح صاحب أعلى عدد إجمالي مخزَّن، وهو ليس بالضرورة الاسم الأول المقصود. تحقّق من data.name وdata.match قبل استخدام اسم مستخرج في سجل جهات الاتصال.

مثال على المُدخلالتفسير
alice.smith@example.comيحتوي الجزء المحلي على أجزاء محتملة من اسم. المطابقة ممكنة، لكن المُدخل وحده لا يحدد أي مرشح سيُختار.
alice+news@example.comيزيل البحث في مجموعة البيانات اللاحقة التي تلي علامة الجمع عند استخراج مرشحيه. ويُطلب من الذكاء الاصطناعي تجاهلها، لكنه يتلقى القيمة المُرسلة.
support@example.comلا يوفّر عنوان الدور إشارة موثوقة إلى اسم شخص. لا تنسب جنس شخص ما إلى صندوق بريد مشترك بأكمله.
prenses@example.comيسمح الخيار الاختياري forceToGenderize بمحاولة تعتمد على معنى اسم مستعار عندما لا تعطي مجموعة البيانات نتيجة. لا يلزم اسم حقيقي في هذا الوضع.
not-an-emailتعيد الصيغة غير الصالحة خطأ تحقق بدلًا من نتيجة غير معروفة ناجحة.

إرسال طلب لعنوان بريد إلكتروني من تطبيقك

يستخدم المثال مفتاح API الحالي في ترويسة Bearer ويحدد fallback صراحةً. استبدل العنوان التوضيحي بمُدخل يحق لك معالجته. أرسل country فقط عندما يتوفر لديك سياق ذو صلة؛ فنطاق البريد الإلكتروني لا يبيّن مكان وجود الشخص. إذا لم يتوفر سياق الدولة، فاحذف الحقل.

شغّل المثال على خادمك بعد ضبط GENDERAPI_API_KEY. مع POST يبقى عنوان البريد الإلكتروني خارج عنوان URL للطلب. قد تختلف النتيجة المباشرة عن الاستجابة التوضيحية في العرض.

اختر لغة البرمجة. إعداد مفتاح API، ثم شغّل المثال على خادمك.

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

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

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

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

دليل الأخطاء وإعادة المحاولة ←
cURL
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",
  "country": "US",
  "options": {
    "ai_mode": "fallback"
  }
}'

cURL 7.76+ في واجهة أوامر POSIX. شغّله في الطرفية. وثائق بيئة التشغيل

JavaScript / Node.js
// 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",
  "country": "US",
  "options": {
    "ai_mode": "fallback"
  }
};

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.
}

Node.js 22+ مع fetch المدمج. احفظه باسم example.mjs وشغّل node example.mjs. وثائق بيئة التشغيل

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\",\"country\":\"US\",\"options\":{\"ai_mode\":\"fallback\"}}")

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.

Python 3.10+ مع المكتبة القياسية. احفظه باسم example.py وشغّل python3 example.py. وثائق بيئة التشغيل

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","country":"US","options":{"ai_mode":"fallback"}}', 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.

PHP 8+ مع امتداد cURL. احفظه باسم example.php وشغّل php example.php. وثائق بيئة التشغيل

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\",\"country\":\"US\",\"options\":{\"ai_mode\":\"fallback\"}}";
        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.
    }
}

Java 17+ مع عميل HTTP القياسي. احفظه باسم GenderApiExample.java وشغّل java GenderApiExample.java. وثائق بيئة التشغيل

C# / .NET
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\",\"country\":\"US\",\"options\":{\"ai_mode\":\"fallback\"}}", 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.
}

تطبيق وحدة تحكم (console) على .NET 8+. استخدمه كملف Program.cs في مشروع console، ثم شغّل dotnet run. وثائق بيئة التشغيل

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\",\"country\":\"US\",\"options\":{\"ai_mode\":\"fallback\"}}"
    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)
    }
}

Go 1.22+ مع المكتبة القياسية. احفظه باسم main.go وشغّل go run main.go. وثائق بيئة التشغيل

احفظ النتيجة مع أدلتها

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

الحقلطريقة الاستخدام
data.gender / data.result_statusاستخدم male أو female فقط مع identified. في النتيجة غير المعروفة، احتفظ بقيمة JSON null الأصلية.
data.name / data.matchتحقّق من الاسم المُعاد ومن المرشح المختار. لا تثبت المطابقة على جزء من السلسلة أن المُدخل يخص شخصًا بهذا الاسم.
data.confidence / data.confidence_kindدرجة الثقة على مقياس من 0 إلى 1 أو null. تستند observed_frequency إلى تكرارات مخزَّنة؛ أما model_reported فقيمة يقدّمها الذكاء الاصطناعي. قيّم العتبات لكل نوع على حدة.
data.source / data.sample_countميّز بين dataset وai وnone. لا تملك نتائج الذكاء الاصطناعي حجم عينة مخزَّنًا. وحجم العينة ليس قيمة دقة مقيسة.
meta.access.modeفي تكامل مرتبط بحساب، تحقّق من أن القيمة api_key. أما المفاتيح المفقودة أو غير المعروفة فقد تستخدم التجربة المشتركة حسب عنوان IP.
meta.usageاقرأ charged_credits وbilling_status. تُخصم أرصدة النتيجة غير المعروفة الناجحة. ولا يثبت فقدان الاستجابة أن الطلب كان مجانيًا.

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

forceToGenderize اختياري للأسماء وعناوين البريد الإلكتروني وأسماء المستخدمين. عند تفعيله، احذف ai_mode أو استخدم fallback؛ فلا يمكن الجمع بينه وبين off أو always، ويعيد ذلك 422. يكفي رصيد ابتدائي موجب لبدء الطلب، حتى لو جعل الخصم النهائي الرصيد سالبًا.

قد يعيد وضع الأسماء المستعارة جنسًا مع name: null، وقد يعطي أيضًا نتيجة غير معروفة. لا يضمن الرجوع العادي إلى الذكاء الاصطناعي ولا تفسير الأسماء المستعارة إجابة صحيحة أو قيمة غير null.

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

معالجة قائمة عناوين بريد إلكتروني في طلب مجمّع

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

افتراضيًا، تستخدم عناصر الطلب المجمّع مجموعة البيانات فقط. اضبط options.ai_mode: fallback لكل عنصر يحتاج إلى الرجوع العادي إلى الذكاء الاصطناعي. تكلفة عنصرين ناجحين مع fallback رصيدان إجمالًا، حتى لو كانت النتائج غير معروفة؛ فطلب HTTP واحد لا يساوي رصيدًا واحدًا لكل تقدير.

افحص كل عنصر، حتى عندما يعيد الطلب المجمّع HTTP 200. احفظ النتائج الناجحة وغير المعروفة، ثم تحقّق من الأخطاء ومن الخصم المؤكد قبل إعادة إرسال العناصر الفاشلة. بعد انتهاء المهلة، لا تُعِد إرسال طلب مجمّع ناجح بالكامل قبل التحقق من الخصم.

اعرف ما الذي ترسله

لا يرسل العرض المباشر القيمة المُدخلة إلى GenderAPI.io إلا عندما ترسلها بنفسك. إذا استُخدم الذكاء الاصطناعي، تُنقل type وvalue وسياق الدولة المُرسل إلى الخدمة المهيأة للتقديرات. للحصول على تقدير يعتمد على مجموعة البيانات فقط، اضبط options.ai_mode: off في تكاملك دون forceToGenderize.

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

الأسئلة الشائعة

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

يمكنها إعادة مرشح لاسم عندما يحتوي الجزء المحلي على إشارة قابلة للاستخدام. المطابقة ممكنة على الأجزاء الكاملة وعلى أجزاء من السلسلة، لذا تحقّق من data.match. ولا تدل النتيجة على الاسم الأول للشخص صاحب صندوق البريد.

هل يعيد عنوان مثل info@ أو support@ جنسًا؟

لا توفّر عناوين الأدوار المشتركة عادةً أدلة على اسم شخص. والنتيجة غير المعروفة صالحة. لا تعدّ الذكاء الاصطناعي أو وضع الأسماء المستعارة تأكيدًا يخص الأشخاص الذين يستخدمون صندوق بريد مشتركًا.

هل تستهلك النتيجة غير المعروفة لعنوان بريد إلكتروني أرصدة؟

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

هل يُزال نطاق البريد الإلكتروني قبل أن يعالج الذكاء الاصطناعي العنوان؟

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

متابعة الاختبار

استخدم مفتاح GenderAPI

ألصق مفتاح API من حساب GenderAPI لمتابعة الاختبار بعد نفاد الأرصدة المشتركة للتجربة حسب عنوان IP خلال 24 ساعة. حفظ المفتاح لا يرسل أي طلب؛ أعد إرسال الطلب عندما تكون جاهزًا.

يُحفظ في علامة التبويب الحالية فقط ويُحذف عند إغلاقها.