# Arapça isimlerden cinsiyet tahmini

> GenderAPI.io V2 ile Arap harfleriyle yazılmış isimleri sorgulayın. Harekelerin, tam ad eşleşmesinin ve ülke bağlamının etkisini; yapay zekâ ve unknown sonuçlarını öğrenin.

Canonical HTML: https://www.genderapi.io/tr/determine-gender-from-arabic-names

Last reviewed: 2026-09-27

## Arapça yazımı koruyun, eşleşen adı kontrol edin

İsmi özgün Unicode yazımıyla gönderin. Aşağıdaki alan Arapça metni sağdan sola gösterirken Türkçe rehber ve JSON soldan sağa kalır. Önce Latin harflerine dönüştürmeniz gerekmez. Bir metnin girdi olarak kabul edilmesi, veri kümesinde karşılığının bulunduğu anlamına gelmez.

Veri kümesi sorgusu Unicode NFKC normalleştirmesi uygular ve metni ad bileşenlerine ayırır. Arapça harekeleri genel olarak kaldıran veya farklı yazımları eşdeğer sayan bir kural içermez. Harekeler ve diğer yazım farkları, bulunan kaydı değiştirebilir. Her farklı yazımı aynı kişiyle eşitlemek yerine özgün değeri koruyun.

Tam ad birden fazla aday oluşturabilir. Mevcut kayıtlar arasından toplamı en yüksek olan seçilir; ilk sözcüğün dönen ön ad olması garanti edilmez. Bir kişi kaydını zenginleştirmeden önce data.name ve data.match.name alanlarını inceleyin.

| Örnek girdi | Ne gösteriyor? | Kontrol edilecek bilgi |
| --- | --- | --- |
| `ليلى الخطيب` | Tam ad örneği | Birden fazla ad bileşeni değerlendirilebilir. Seçilen eşleşmeyi inceleyin; bu örnek belirli bir canlı sonucu garanti etmez. |
| `ليلى / لَيْلَى` | Harekesiz ve harekeli yazım | Elinizdeki gerçek yazımı gönderin. Bu iki metnin aynı kayıtla eşleşeceği garanti edilmez. |
| `Layla / Leila` | Latin harfli yazımlar | Ayrı girdi değerleridir. V2 bu yazımlar arasında otomatik çevriyazı eşdeğerliği garanti etmez. |
| `country: SA` | Suudi Arabistan örnek bağlamı | Bütün Arapça konuşan topluluklar için varsayılan değildir. Ülke bilinmiyorsa country alanını göndermeyin. |

## SA ülke bağlamını bilinçli kullanın

Canlı demo country: SA (Suudi Arabistan) gönderir. API bu ülkeyi ismin yazı sisteminden seçmez. Entegrasyonunuzda bilinen ve ilgili ülke bağlamını kullanın veya country alanını göndermeyin. Bu örnek değeri bütün kayıtların varsayılanı yapmayın.

Veri kümesi sorgusu her aday için varsa ülkeye özel kaydı, yoksa genel kaydı değerlendirir. Ardından mevcut adaylar arasından kayıt toplamı en yüksek olanı seçer. Gerçek eşleşme kapsamını data.match.scope ve data.match.country ile inceleyin. Ülkeye özel kayıtta sayılar eşitse genel kayda otomatik geçilmez; açık olan fallback bunun yerine yapay zekâyı kullanabilir.

data.input.country istekteki ülke bağlamıdır. data.country ve data.country_source ise yanıttaki ülke ilişkisini ve kaynağını açıklar. Bunlar farklı alanlardır; vatandaşlık, etnik köken veya ikamet doğrulamaz.

- [Ülke bağlamı ve eşleşme referansı](https://www.genderapi.io/tr/docs/v2/gender-from-name#country-evidence-workflow)

## Uygulamanızdan V2 isim sorgusu gönderin

GENDERAPI_API_KEY ortam değişkenini mevcut anahtarınıza ayarlayıp örneği sunucunuzda çalıştırın. Örnek standart yapay zekâ yedeklemesini açıkça etkinleştirir. Ölçülmüş tahmin başarısı veya veri kapsamı değil, istek biçimi gösterir. Yalnızca veri kümesi için options.ai_mode: off kullanın.

Örnekleri sunucunuzda çalıştırın. İşlem ortamındaki GENDERAPI_API_KEY değişkenini mevcut anahtarınıza ayarlayın. Tanınmayan anahtar IP denemesine yönlenebildiğinden meta.access.mode değerinin api_key olduğunu doğrulayın.

Yeniden denemeler dahil her tahmin isteği yeni ve ücretlendirilebilir bir işlemdir. Örnekler otomatik yeniden deneme yapmaz. Yeni istekten önce ücretlendirme durumunu kontrol edin.

HTTP 4xx ve 5xx JSON yanıtlarında hata gövdesi korunur ve program sıfırdan farklı çıkış koduyla sonlanır. Yeniden denemeden önce code, action ve meta.usage.billing_status alanlarını kontrol edin.

**cURL**

POSIX kabuğunda cURL 7.76+. Terminalinizde çalıştırın.

```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": "name",
  "value": "ليلى الخطيب",
  "country": "SA",
  "options": {
    "ai_mode": "fallback"
  }
}'
```

**JavaScript / Node.js**

Node.js 22+; yerleşik fetch. example.mjs olarak kaydedin ve node example.mjs çalıştırın.

```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": "name",
  "value": "ليلى الخطيب",
  "country": "SA",
  "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.
}
```

**Python**

Python 3.10+; standart kütüphane. example.py olarak kaydedin ve python3 example.py çalıştırın.

```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\":\"name\",\"value\":\"ليلى الخطيب\",\"country\":\"SA\",\"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.
```

**PHP**

cURL uzantılı PHP 8+. example.php olarak kaydedin ve php example.php çalıştırın.

```php
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"name","value":"ليلى الخطيب","country":"SA","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.
```

**Java**

Java 17+; standart HTTP istemcisi. GenderApiExample.java olarak kaydedin ve java GenderApiExample.java çalıştırın.

```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\":\"name\",\"value\":\"ليلى الخطيب\",\"country\":\"SA\",\"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.
    }
}
```

**C# / .NET**

.NET 8+ konsol uygulaması. Konsol projesinde Program.cs olarak kullanın, ardından dotnet run çalıştırın.

```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\":\"name\",\"value\":\"ليلى الخطيب\",\"country\":\"SA\",\"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.
}
```

**Go**

Go 1.22+; standart kütüphane. main.go olarak kaydedin ve go run main.go çalıştırın.

```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\":\"name\",\"value\":\"ليلى الخطيب\",\"country\":\"SA\",\"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)
    }
}
```

- [İsim sorgusu parametreleri](https://www.genderapi.io/tr/docs/v2/gender-from-name)
- [API anahtarını ayarlama](https://www.genderapi.io/tr/docs/v2/authentication)

## Tahmini dayandığı bilgilerle birlikte değerlendirin

API’nin çıkardığı ilişki, kişinin kendi belirttiği cinsiyet değildir. Özgün girdiyi, yanıttaki kanıtları ve kişinin verdiği bilgileri ayrı saklayın. Tahmin bulunamaması geçerli bir sonuçtur; uygulamanızda bunu zorunlu bir cinsiyet kategorisine dönüştürmeyin.

| Alan | Nasıl kullanılmalı? |
| --- | --- |
| `data.gender / data.result_status` | male veya female değerini yalnızca identified sonucunda kullanın. unknown sonucunda gerçek JSON null değerini koruyun. |
| `data.name / data.match` | Dönen adı ve seçilen adayı inceleyin. Alt metin eşleşmesi, girdinin o ön ada sahip bir kişiye ait olduğunu kanıtlamaz. |
| `data.confidence / data.confidence_kind` | Güven skoru 0–1 aralığında veya null olur. observed_frequency kayıtlı sayımlardan, model_reported yapay zekânın bildirdiği skordan gelir. Eşikleri her tür için ayrı değerlendirin. |
| `data.source / data.sample_count` | dataset, ai ve none kaynaklarını ayırın. Yapay zekâ sonucunda kayıtlı örnek sayısı yoktur. Örnek sayısı, ölçülmüş doğruluk oranı değildir. |
| `meta.access.mode` | Hesap entegrasyonunda api_key değerini doğrulayın. Anahtar eksik veya tanınmıyorsa ortak IP denemesi kullanılabilir. |
| `meta.usage` | charged_credits ve billing_status alanlarını okuyun. Başarıyla tamamlanan unknown sonucu ücretlidir. Yanıtın ulaşmaması, işlemin ücretsiz olduğunu göstermez. |

- [Yanıt alanları ve tahmin bulunamayan sonuçlar](https://www.genderapi.io/tr/docs/v2/responses)
- [Doğruluk ve güven skoru](https://www.genderapi.io/tr/accuracy-methodology)
- [Veri kaynakları ve tarihli veri kümesi profili](https://www.genderapi.io/tr/data-provenance)

## Yapay zekânın ne zaman kullanılacağını seçin

forceToGenderize; isim, e-posta ve kullanıcı adı girdilerinde isteğe bağlıdır. Açıkken ai_mode alanını göndermeyin veya fallback kullanın. off ve always ile birlikte kullanılması 422 hatası verir. İsteğe başlamak için pozitif bakiye yeterlidir; son ücret bakiyeyi sıfırın altına düşürebilir.

Rumuz analizinde name: null iken cinsiyet tahmini dönebilir. Sonuç unknown da olabilir. Standart yedekleme veya rumuz analizi, doğru ya da dolu bir sonuç garantisi vermez.

| İstek seçeneği | Davranış | Tamamlanan sorgunun maliyeti |
| --- | --- | --- |
| options.ai_mode: off | Yalnızca veri kümesini sorgular. | unknown dahil 1 kredi |
| options.ai_mode: fallback | Önce veri kümesini, cinsiyet tahmini bulunamazsa standart yapay zekâyı kullanır. Tekli sorguların varsayılanıdır. | Yapay zekâ yedeklemesi dahil toplam 1 kredi |
| options.ai_mode: always | Doğrudan yapay zekâya sorar. | 2 kredi |
| forceToGenderize: true | Önce veri kümesine bakar; tahmin bulunamazsa gerçek ön ad içermeyen kişisel rumuzların anlamını da yapay zekâyla yorumlayabilir. | Veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa toplam 2 kredi |

- [Yapay zekâ modları ve rumuz analizi](https://www.genderapi.io/tr/docs/v2/ai-options)
- [Krediler ve kullanım](https://www.genderapi.io/tr/docs/v2/credits-and-usage)

## İsim listesini bağlamını kaybetmeden işleyin

POST /api/v2/gender/batch ile hesap anahtarında en fazla 50, IP denemesinde 10 öğe gönderin. Öğelere benzersiz id değerleri verin ve her satırın özgün girdisini saklayın. Her öğenin ülke ve yapay zekâ seçenekleri ayrı olabilir. Ülke bilinmiyorsa göndermeyin.

Tekli sorguların fallback varsayılanından farklı olarak toplu öğelerde varsayılan yalnızca veri kümesidir. Yapay zekâ gereken her öğede options.ai_mode: fallback seçin. HTTP 200 olsa bile her sonucu kontrol edin ve unknown değerlerini koruyun. Yeniden gönderimden önce öğe hatasını ve ücretlendirmeyi inceleyin. Başarıyla tamamlanan her standart öğe 1 kredidir; bir toplu HTTP isteği tek tahmin kredisi değildir.

- [Toplu örnekler ve kısmi hatalar](https://www.genderapi.io/tr/docs/v2/batch#batch-application-workflow)
- [Uygulamada unknown sonuçları](https://www.genderapi.io/tr/docs/v2/responses#application-decisions)

## Gönderdiğiniz verinin nasıl işlendiğini bilin

Canlı araç, girdiğiniz değeri yalnızca sorguyu gönderdiğinizde GenderAPI.io’ya iletir. Yapay zekâ devreye girerse gönderilen type, value ve ülke bağlamı yapılandırılmış tahmin servisine iletilir. Entegrasyonunuzda yalnızca veri kümesini kullanmak için forceToGenderize olmadan options.ai_mode: off gönderin.

Yayımlanmış veri işleme koşulları Gizlilik Politikası, Veri İşleme Anlaşması ve alt işleyiciler listesinde açıklanır. Tahmin, girdiden çıkarılan bir ilişkidir; kişinin kendi verdiği bilgiye öncelik tanıyın. Sonucu bir kişi hakkında önemli kararların dayanağı olarak kullanmayın.

- [Gizlilik Politikası](https://www.genderapi.io/tr/privacy-policy)
- [Veri İşleme Anlaşması](https://www.genderapi.io/tr/data-processing-agreement)
- [Alt işleyiciler](https://www.genderapi.io/tr/subprocessors)

## V2 harekeli Arapça metni kabul eder mi?

Arapça dahil Unicode isim girdilerini kabul eder. Veri kümesi normalleştirmesi Arapça harekeleri genel olarak kaldırmaz. Bu nedenle harekeli ve harekesiz yazımlar farklı kayıtlarla eşleşebilir veya unknown sonucu verebilir.

## Araç, Arapça konuşan kişinin uyruğunu belirler mi?

Hayır. SA, bu demo için açıkça belirlenmiş ülke bağlamıdır. Yazı sistemi, isim ilişkisi veya yanıttaki ülke alanı kişinin uyruğunu ya da ikametini doğrulamaz.

## Bu isim grubu için bağımsız doğruluk ölçümü yayımlanıyor mu?

Bu sayfada böyle bir ölçüm yayımlanmıyor. Girdinin kabul edilmesi, kayıtlı sayılar ve güven skoru bağımsız doğruluk testi değildir. Mevcut kanıtları ve henüz yayımlanmamış ölçümleri metodoloji sayfasından inceleyin.

## Tahmin bulunamazsa kredi kullanılır mı?

Başarıyla tamamlanan unknown sonucu ücretlidir. Standart veri kümesi veya fallback modu toplam 1 kredidir. forceToGenderize açıkken veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa unknown dahil toplam 2 kredi düşülür. Hataların ücretlendirme kuralları ayrıdır; meta.usage alanını inceleyin.
