Devam et → Genel Bakış

REST API Referansı

Birkaç endpoint, tek bir yanıt yapısı. Aşağıdaki her şey hesabınızda canlı çalışmaktadır.

https://namegender.com/api/v1/gender Ücretsiz kaydol
llms-full.txt

Claude Code, Cursor ve Copilot gibi kod asistanları için Markdown. Sohbete yapıştırın ya da asistana bağlantıyı verin.

Hızlı Başlangıç

Panelinde bir anahtar oluşturun, ardından ilk isteğinizi gönderin. SDK gerekmez.

curl "https://namegender.com/api/v1/gender?name=Ay%C5%9Fe&country=TR" \
  -H "Authorization: Bearer YOUR_API_KEY"
<?php

$query = http_build_query(['name' => 'Ayşe', 'country' => 'TR']);

$ch = curl_init('https://namegender.com/api/v1/gender?' . $query);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer YOUR_API_KEY'],
]);

$result = json_decode(curl_exec($ch), true);

echo $result['gender'];       // female
echo $result['probability'];  // 100
const params = new URLSearchParams({ name: 'Ayşe', country: 'TR' });

const response = await fetch(`https://namegender.com/api/v1/gender?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
});

const result = await response.json();

console.log(result.gender);       // "female"
console.log(result.probability);  // 100
import requests

response = requests.get(
    "https://namegender.com/api/v1/gender",
    params={"name": "Ayşe", "country": "TR"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)

result = response.json()
print(result["gender"])       # female
print(result["probability"])  # 100
require "net/http"
require "json"

uri = URI("https://namegender.com/api/v1/gender")
uri.query = URI.encode_www_form(name: "Ayşe", country: "TR")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts JSON.parse(response.body)["gender"]   # female
req, _ := http.NewRequest("GET", "https://namegender.com/api/v1/gender?name=Ay%C5%9Fe&country=TR", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")

resp, err := http.DefaultClient.Do(req)
if err != nil {
    log.Fatal(err)
}
defer resp.Body.Close()

var result struct {
    Gender      string `json:"gender"`
    Probability int    `json:"probability"`
}
json.NewDecoder(resp.Body).Decode(&result)

fmt.Println(result.Gender)   // female

Her endpoint aynı yapıyı döndürür, bu nedenle ayrıştırma kodunuzu değiştirmeden girişleri değiştirebilirsiniz.

Kimlik Doğrulama

Her istek API anahtarınızı bir başlıkta taşır. Varsayılan olarak Authorization: Bearer kullanın; HTTP istemciniz Authorization başlığını başka bir iş için ayırıyorsa X-Api-Key kullanın. URL'ye konan anahtar reddedilir: URL'ler proxy günlüklerine, analiz araçlarına ve tarayıcı geçmişine kopyalanır.

Authorization başlığı (önerilir)
Authorization: Bearer ng_live_xxxxxxxxxxxx

Kopyalanamadı. Metni seçip kopyalayın.

X-Api-Key başlığı
X-Api-Key: ng_live_xxxxxxxxxxxx

Kopyalanamadı. Metni seçip kopyalayın.

Anahtarınızı istemci tarafı kodunda asla açığa çıkarmayın. Tarayıcı veya mobil uygulamadan gelen çağrılar kendi backend'iniz aracılığıyla yapılmalıdır.

Bir anahtarı panodan belirli IP adreslerine kısıtlayabilirsiniz.

İstemci Kütüphaneleri

REST API üzerinde ince sarmalayıcılar. Anahtarınızı gönderir, her isteği oluşturur ve hata yanıtlarını istisnalara dönüştürürler.

JavaScript Kaynak
npm install namegender

Kopyalanamadı. Metni seçip kopyalayın.

Command line Kaynak
npm install -g namegender

Kopyalanamadı. Metni seçip kopyalayın.

composer require namegender/namegender

Kopyalanamadı. Metni seçip kopyalayın.

Python Kaynak
pip install namegender-client

Kopyalanamadı. Metni seçip kopyalayın.

gem install namegender

Kopyalanamadı. Metni seçip kopyalayın.

<repository>
  <id>jitpack.io</id>
  <url>https://jitpack.io</url>
</repository>

<dependency>
  <groupId>com.github.anpekesen</groupId>
  <artifactId>namegender-java</artifactId>
  <version>v0.9.0</version>
</dependency>

Kopyalanamadı. Metni seçip kopyalayın.

C# / .NET Kaynak
dotnet add package NameGender --version 0.6.0

Kopyalanamadı. Metni seçip kopyalayın.

go get github.com/anpekesen/namegender-go@v0.7.0

Kopyalanamadı. Metni seçip kopyalayın.

remotes::install_github('anpekesen/namegender-r', ref = 'v0.7.0')

Kopyalanamadı. Metni seçip kopyalayın.

PowerShell Kaynak
Install-Module NameGender

Kopyalanamadı. Metni seçip kopyalayın.

cargo add namegender

Kopyalanamadı. Metni seçip kopyalayın.

Kullanmanız gerekmez. API birkaç sade JSON endpoint'inden ibarettir; bir kütüphane size bir projeyi değil, bir öğleden sonrayı kazandırır. Diliniz listede yoksa REST referansında kopyala-yapıştır örnekleri var.

Tümünü görüntüle

Yapay zekâ asistanları (MCP)

NameGender'ı Claude, Cursor ve Model Context Protocol desteği olan diğer tüm istemcilerden kullanın. Asistana bir ad listesini sorun; API'yi sizin yerinize çağırır ve her yanıtın yanında dayanağını gösterir.

Claude Code
claude mcp add namegender -e NAMEGENDER_API_KEY=ng_live_... -- npx -y namegender-mcp

Kopyalanamadı. Metni seçip kopyalayın.

Claude Desktop, Cursor ve diğer istemciler
{
    "mcpServers": {
        "namegender": {
            "command": "npx",
            "args": [
                "-y",
                "namegender-mcp"
            ],
            "env": {
                "NAMEGENDER_API_KEY": "ng_live_..."
            }
        }
    }
}

Kopyalanamadı. Metni seçip kopyalayın.

Bunu istemcinin MCP yapılandırma dosyasına ekleyin ve istemciyi yeniden başlatın.

Araçlar

gender_from_name
Ön addan ya da tam addan cinsiyet.
gender_from_email
E-posta adresindeki adı okur; info@ gibi rol adresleri bilinmiyor sonucunu döndürür.
gender_from_username
Kullanıcı adı veya takma addaki adı okur.
gender_bulk
Tek istekte en fazla 100 değer, eşleşme oranı özetiyle birlikte.
name_countries
Bir adın kayıtlı olduğu ülkeler. Kökene dair bir iddia değildir.
salutation
Mektubun dilinde mektubun açılış satırı; cinsiyet kesin değilse nötr biçim.
name_check
Bir forma yazılan adın gerçek görünüp görünmediği ve nedenleri. Hiçbir ada sahte demez.
age_from_name
ABD, Fransa ve Norveç'te bir adı taşıyan kişilerin medyan yaşı ve yaş aralıkları.
account_status
Kalan krediler ve bugünkü ücretsiz kullanım hakkı.

Her sorgu, doğrudan bir API çağrısında olduğu gibi, anahtarın sahibi olan hesabın kredilerini kullanır. Resmi MCP kayıt defterinde io.github.anpekesen/namegender adıyla listelenir. npm paketi · Kaynak

GET · POST https://namegender.com/api/v1/gender
Markdown

Addan Cinsiyet

Ad veya tam adı kabul eder. Ünvanlar, orta adlar ve soyadlar araştırmadan önce kaldırılır, bu nedenle "Dr. Ayşe Yılmaz" ve "Ayşe" aynı sonucu verir.

Parametre Tür Açıklama
name
gerekli
string Sınıflandırılacak ad. Ad veya tam ad.
country
isteğe bağlı
string ISO 3166-1 alpha-2 ülke kodu. Andrea gibi cinsiyeti bölgeye göre değişen adlar için doğruluğu artırır (İtalya'da erkek, Almanya'da kadın).
locale
isteğe bağlı
string de-DE ya da en_US gibi bir dil etiketi, örneğin tarayıcının dili. country gönderilmediğinde bölgesi ülke olarak kullanılır. Bölgesiz etiket (en, de) ülke belirlemez.
ip
isteğe bağlı
string Son kullanıcının IP adresi. Ne country ne de bölgeli bir locale gönderildiğinde bu adresin ülkesi kullanılır. Saklanmaz. IP geolocation by DB-IP (db-ip.com).
ai_fallback
isteğe bağlı
boolean Ad verilerimizde yoksa null döndürmek yerine bir dil modelinden tahmin iste. Yalnızca ayarlarınızda yapay zekâ sorguları açıldıktan sonra çalışır ve bir ek krediye mal olur.
best_guess
isteğe bağlı
boolean Kanıt güven eşiğine ulaşmasa bile öndeki cinsiyeti döndür. Varsayılan olarak kapalı: kesin görünen ama 50/50'ye yakın bir yanıt, null'dan daha çok zarar verir.
curl "https://namegender.com/api/v1/gender?name=Jordan" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "credits_charged": 1,
  "credits_remaining": 49999,
  "request_id": "req_4b7e0c2d9a1f6358",
  "query": "Jordan",
  "name": "Jordan",
  "first_name": "Jordan",
  "middle_name": null,
  "last_name": null,
  "name_type": "personal",
  "gender": "male",
  "country": null,
  "sample_size": 62240,
  "probability": 84,
  "took_ms": 1,
  "confidence": "high",
  "source": "db",
  "matched_as": null
}
GET · POST https://namegender.com/api/v1/gender/email
Markdown

E-postadan Cinsiyet

Adresi yerel bölümünden çıkarır, ardından sınıflandırır. "ayse.yilmaz84@example.com" Ayşe'ye çözülür.

Parametre Tür Açıklama
email
gerekli
string E-posta adresi. Yalnızca @ işaretinden önceki kısım kullanılır.
country
isteğe bağlı
string ISO 3166-1 alpha-2 ülke kodu. Andrea gibi cinsiyeti bölgeye göre değişen adlar için doğruluğu artırır (İtalya'da erkek, Almanya'da kadın).
locale
isteğe bağlı
string de-DE ya da en_US gibi bir dil etiketi, örneğin tarayıcının dili. country gönderilmediğinde bölgesi ülke olarak kullanılır. Bölgesiz etiket (en, de) ülke belirlemez.
ip
isteğe bağlı
string Son kullanıcının IP adresi. Ne country ne de bölgeli bir locale gönderildiğinde bu adresin ülkesi kullanılır. Saklanmaz. IP geolocation by DB-IP (db-ip.com).
ai_fallback
isteğe bağlı
boolean Ad verilerimizde yoksa null döndürmek yerine bir dil modelinden tahmin iste. Yalnızca ayarlarınızda yapay zekâ sorguları açıldıktan sonra çalışır ve bir ek krediye mal olur.
best_guess
isteğe bağlı
boolean Kanıt güven eşiğine ulaşmasa bile öndeki cinsiyeti döndür. Varsayılan olarak kapalı: kesin görünen ama 50/50'ye yakın bir yanıt, null'dan daha çok zarar verir.

best_guess adresin kendisine değil, adresten okunan ada uygulanır. Adresten bir ad okunamazsa zorlanacak bir şey yoktur ve gender null kalır. Unutmayın: buradaki zorlanmış yanıt, kendisi de hatalı olabilecek bir çıkarımın üzerine kurulur.

curl "https://namegender.com/api/v1/gender/email?email=ayse.yilmaz84%40example.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "credits_charged": 1,
  "credits_remaining": 49998,
  "query": "ayse.yilmaz84@example.com",
  "name": "Ayse",
  "gender": "female",
  "sample_size": 655,
  "probability": 100,
  "took_ms": 1,
  "confidence": "high",
  "source": "db"
}
GET · POST https://namegender.com/api/v1/gender/username
Markdown

Kullanıcı Adından Cinsiyet

camelCase, snake_case, sondaki rakamlar ve başında @ işareti olan adları işler. "AyseYilmaz84" Ayşe'ye çözülür.

Parametre Tür Açıklama
username
gerekli
string Kullanıcı adı veya handle. Başında @ işareti göz ardı edilir.
country
isteğe bağlı
string ISO 3166-1 alpha-2 ülke kodu. Andrea gibi cinsiyeti bölgeye göre değişen adlar için doğruluğu artırır (İtalya'da erkek, Almanya'da kadın).
locale
isteğe bağlı
string de-DE ya da en_US gibi bir dil etiketi, örneğin tarayıcının dili. country gönderilmediğinde bölgesi ülke olarak kullanılır. Bölgesiz etiket (en, de) ülke belirlemez.
ip
isteğe bağlı
string Son kullanıcının IP adresi. Ne country ne de bölgeli bir locale gönderildiğinde bu adresin ülkesi kullanılır. Saklanmaz. IP geolocation by DB-IP (db-ip.com).
ai_fallback
isteğe bağlı
boolean Ad verilerimizde yoksa null döndürmek yerine bir dil modelinden tahmin iste. Yalnızca ayarlarınızda yapay zekâ sorguları açıldıktan sonra çalışır ve bir ek krediye mal olur.
best_guess
isteğe bağlı
boolean Kanıt güven eşiğine ulaşmasa bile öndeki cinsiyeti döndür. Varsayılan olarak kapalı: kesin görünen ama 50/50'ye yakın bir yanıt, null'dan daha çok zarar verir.
curl "https://namegender.com/api/v1/gender/username?username=AyseYilmaz84" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "credits_charged": 1,
  "credits_remaining": 49997,
  "query": "AyseYilmaz84",
  "name": "Ayse",
  "gender": "female",
  "sample_size": 655,
  "probability": 100,
  "took_ms": 1,
  "confidence": "high",
  "source": "db"
}
POST https://namegender.com/api/v1/gender/bulk
Markdown

Toplu İstek

Bir istekte 100 adaya kadar gönderin. Döngü yerine bunu kullanın: 100 ad için bir toplu çağrı tek bir gidiş-dönüş ve tek bir çoğaltılmış araştırmadır.

Parametre Tür Açıklama
names
gerekli
string[] Ad dizisi. Maksimum 100 öğe.
type
isteğe bağlı
string Öğelerin ne olduğu: ad, e-posta veya kullanıcı adı. Varsayılan ad.
country
isteğe bağlı
string İstekteki her öğeye uygulanır.
locale
isteğe bağlı
string country gönderilmediğinde bölgesi her öğe için ülke olarak kullanılan dil etiketi.
ip
isteğe bağlı
string Ne country ne de bölgeli bir locale gönderildiğinde ülkesi her öğe için kullanılan son kullanıcı IP adresi. Saklanmaz. IP geolocation by DB-IP (db-ip.com).
curl -X POST "https://namegender.com/api/v1/gender/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"names": ["Ayşe", "Mehmet", "Priya", "Wei"]}'
<?php

$ch = curl_init('https://namegender.com/api/v1/gender/bulk');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer YOUR_API_KEY',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'names' => ['Ayşe', 'Mehmet', 'Priya', 'Wei'],
    ]),
]);

$data = json_decode(curl_exec($ch), true);

foreach ($data['results'] as $row) {
    printf("%-8s %-7s %d%%\n", $row['query'], $row['gender'] ?? '?', $row['probability']);
}
const response = await fetch('https://namegender.com/api/v1/gender/bulk', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ names: ['Ayşe', 'Mehmet', 'Priya', 'Wei'] }),
});

const { results, summary } = await response.json();

console.log(summary.match_rate);   // 100
results.forEach(r => console.log(r.query, r.gender, r.probability));
import requests

response = requests.post(
    "https://namegender.com/api/v1/gender/bulk",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"names": ["Ayşe", "Mehmet", "Priya", "Wei"]},
)

data = response.json()
print(data["summary"]["match_rate"])   # 100

for row in data["results"]:
    print(row["query"], row["gender"], row["probability"])
{
  "credits_charged": 4,
  "credits_remaining": 49995,
  "request_id": "req_71d0a9e3c5b24f86",
  "took_ms": 2,
  "summary": {
    "total": 4,
    "identified": 4,
    "unknown": 0,
    "match_rate": 100
  },
  "results": [
    { "query": "Ayşe",   "gender": "female", "probability": 100, "sample_size":  655, "confidence": "high", "source": "db" },
    { "query": "Mehmet", "gender": "male",   "probability": 100, "sample_size": 1130, "confidence": "high", "source": "db" },
    { "query": "Priya",  "gender": "female", "probability": 100, "sample_size": 2993, "confidence": "high", "source": "db" },
    { "query": "Wei",    "gender": "male",   "probability":  86, "sample_size":  136, "confidence": "high", "source": "db" }
  ]
}

Sonuçlar gönderdikleriniz aynı sırada geri gelir. Krediler ad başına ücretlendirilir ve bakiyeniz kısa olursa tüm istek herhangi bir işten önce reddedilir, bu nedenle asla yarı işlenmiş bir batch almarsınız.

Özet blok eşleşme oranını bir bakışta gösterir, böylece kalanı işlemeden önce girişin temizlenip temizlenmeyeceğine karar verebilirsiniz.

POST GET DELETE https://namegender.com/api/v1/batches
Markdown

Dosya işleri

En fazla 100 MB ve 1.000.000 satırlık bir CSV ya da XLSX dosyası yükleyin, her satırına cinsiyet sütunları eklenmiş olarak geri alın. Satır başına bir kredi; yalnızca iş tamamlanırsa düşülür.

  1. 1. POST /batches Dosyayı ve name_column değerini gönderin. İş hemen kuyruğa alınır.
  2. 2. GET /batches/{id} status completed ya da failed olana kadar işi okuyun. poll_after_seconds iki okuma arasında ne kadar bekleneceğini söyler.
  3. 3. GET /batches/{id}/result Sonucu indirin. Yüklediğiniz biçimde döner.
Parametre Tür Açıklama
file
gerekli
file Başlık satırı olan CSV, TSV ya da XLSX.
name_column
gerekli
string İsimlerin bulunduğu sütunun başlığı, dosyadaki haliyle. start=false değilse zorunlu.
country_column
isteğe bağlı
string Satır başına ülke kodu içeren sütunun başlığı.
country
isteğe bağlı
string Ülkesi olmayan satırlar için varsayılan ülke.
ai_fallback
isteğe bağlı
boolean Veri kümesinde olmayan isimler için yapay zekâ modeline sor. Ayarlar’da yapay zekâ rızası gerekir.
best_guess
isteğe bağlı
boolean Kanıt zayıf olsa bile daha olası cinsiyeti döndür.
delete_after_download
isteğe bağlı
boolean Sonuç bir kez indirilebilir, ardından silinir.
start
isteğe bağlı
boolean false: yalnızca yükle ve incele. Varsayılan true.
# 1. Upload and start
curl -X POST "https://namegender.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 6f1c2e0a-customers-2026-09" \
  -F "file=@customers.csv" \
  -F "name_column=first_name" \
  -F "country_column=country"

# 2. Poll until status is completed or failed
curl "https://namegender.com/api/v1/batches/B-7K2M9QX4TA" \
  -H "Authorization: Bearer YOUR_API_KEY"

# 3. Download the result
curl "https://namegender.com/api/v1/batches/B-7K2M9QX4TA/result" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o customers-gender.csv
import { NameGender } from 'namegender';
import { openAsBlob } from 'node:fs';
import { writeFile } from 'node:fs/promises';

const client = new NameGender(process.env.NAMEGENDER_API_KEY);

const job = await client.batches.create(await openAsBlob('customers.csv'), {
  filename: 'customers.csv',
  name_column: 'first_name',
  country_column: 'country',
});

const done = await client.batches.wait(job.id);
if (done.status === 'failed') throw new Error(done.error.code);

const file = await client.batches.download(done.id);
await writeFile('customers-gender.csv', Buffer.from(await file.arrayBuffer()));
from namegender import NameGender

client = NameGender("YOUR_API_KEY")

job = client.batches.create("customers.csv", name_column="first_name", country_column="country")

done = client.batches.wait(job["id"])
if done["status"] == "failed":
    raise RuntimeError(done["error"]["code"])

client.batches.download(done["id"], "customers-gender.csv")
{
  "id": "B-7K2M9QX4TA",
  "status": "completed",
  "source": "api",
  "file": { "name": "customers.csv", "format": "csv" },
  "columns": { "name": "first_name", "country": "country" },
  "rows": { "total": 200000, "processed": 200000, "identified": 187412 },
  "progress": 100,
  "credits": { "reserved": 200000, "charged": 200000 },
  "summary": { "male": 96120, "female": 91292, "unknown": 12588, "from_llm": 0 },
  "error": null,
  "result": {
    "url": "https://namegender.com/api/v1/batches/B-7K2M9QX4TA/result",
    "format": "csv",
    "expires_at": "2026-10-01T10:04:12Z"
  },
  "poll_after_seconds": null
}

Başlatmak için name_column zorunludur: yanlış çıkan bir tahmin, krediyi yanlış veriye harcatır. Önce sütunları, bir önizlemeyi ve maliyeti görmek için start=false gönderin, sonra işi başlatın.

Idempotency-Key başlığı gönderin. Aynı anahtarla yapılan yeniden deneme ikinci bir iş açmaz, ilk işi döner.

Aynı anda en fazla 3 iş kuyrukta ya da işlenmekte olabilir. Başlamamış bir iş iptal edilebilir ve kredisi iade edilir; işlenmekte olan bir iş durdurulamaz.

POST https://your-server.example/…
Markdown

Webhook'lar

Panelde Webhook'lar altından bir uç ekleyin; bir dosya işi tamamlandığında ya da başarısız olduğunda o uca imzalı bir POST gönderelim, durumu sorgulamanıza gerek kalmasın.

Olay Tür Açıklama
batch.completed BatchJob İş bitti. Gövde, işi GET /batches/{id} yanıtıyla birebir aynı biçimde taşır.
batch.failed BatchJob İş başarısız oldu ve ücret alınmadı. error.code değerine göre dallanın.
credits.low CreditsAlert Mevcut hızla kredi en fazla 7 gün yetiyor. Saatte bir kontrol edilir; abonelik yenilemeleri hesaba katılır.
credits.depleted CreditsAlert Bakiye bitti ve istekler 402 ile reddediliyor. Saatte bir kontrol edilir.
webhook.test object Yalnızca paneldeki "Test olayı gönder" ile ve yalnızca o uca gönderilir.
Başlık Tür Açıklama
NameGender-Signature
gerekli
string t=<unix saniye>,v1=<hex>. Sırrı yeniledikten sonra 24 saat boyunca ikinci bir v1 bulunur.
NameGender-Event-Id
gerekli
string Olay kimliği. Aynı olayın her yeniden denemesinde aynıdır.
NameGender-Delivery-Attempt
gerekli
integer İlk denemede 1, en fazla 8.

Her isteği doğrulayın

v1; zaman damgası, bir nokta ve ham gövdenin, uç sırrınızla hesaplanan HMAC-SHA256 değeridir. Sabit zamanlı karşılaştırın, herhangi bir v1 tutarsa isteği kabul edin ve saatinizden beş dakikadan fazla sapan zaman damgasını reddedin. İstemci kütüphaneleri bunların hepsini tek çağrıda yapar.

Gövdeyi geldiği gibi doğrulayın. JSON'u ayrıştırıp yeniden oluşturan bir çatı baytları değiştirir ve imza tutmaz.
import express from 'express';
import { webhooks, NameGenderWebhookError } from 'namegender';

const app = express();

// express.raw, not express.json: the signature covers the exact bytes.
app.post('/namegender', express.raw({ type: 'application/json' }), async (req, res) => {
  let event;
  try {
    event = await webhooks.verify(
      req.body,
      req.get('NameGender-Signature'),
      process.env.NAMEGENDER_WEBHOOK_SECRET,
    );
  } catch (error) {
    if (error instanceof NameGenderWebhookError) return res.sendStatus(400);
    throw error;
  }

  res.sendStatus(204);   // answer first, then do the work

  if (event.type === 'batch.completed') {
    const job = event.data.object;   // same object as GET /batches/{id}
  }
});
import os
from flask import Flask, request
from namegender import webhooks, WebhookVerificationError

app = Flask(__name__)

@app.post("/namegender")
def namegender_webhook():
    try:
        event = webhooks.verify(
            request.get_data(),   # raw bytes, not request.json
            request.headers.get("NameGender-Signature"),
            os.environ["NAMEGENDER_WEBHOOK_SECRET"],
        )
    except WebhookVerificationError:
        return "", 400

    if event["type"] == "batch.completed":
        job = event["data"]["object"]   # same object as GET /batches/{id}
    return "", 204
<?php

$body   = file_get_contents('php://input');   // raw body, before json_decode
$header = $_SERVER['HTTP_NAMEGENDER_SIGNATURE'] ?? '';
$secret = getenv('NAMEGENDER_WEBHOOK_SECRET');

parse_str(str_replace(',', '&', $header), $parts);   // t=…&v1=…
preg_match_all('/v1=([0-9a-f]{64})/', $header, $m);

$t = (int) ($parts['t'] ?? 0);
$expected = hash_hmac('sha256', $t . '.' . $body, $secret);
$valid = abs(time() - $t) <= 300
    && array_filter($m[1], fn ($sig) => hash_equals($expected, $sig));

if (! $valid) {
    http_response_code(400);
    exit;
}

http_response_code(204);
$event = json_decode($body, true);
{
  "id": "evt_16f7c01502fda5436e8b7c4e",
  "type": "batch.completed",
  "created_at": "2026-09-24T10:04:12Z",
  "api_version": "v1",
  "data": {
    "object": {
      "id": "B-7K2M9QX4TA",
      "status": "completed",
      "rows": { "total": 200000, "processed": 200000, "identified": 187412 },
      "credits": { "reserved": 200000, "charged": 200000 },
      "result": { "url": "…/api/v1/batches/B-7K2M9QX4TA/result", "format": "csv" }
    }
  }
}
  • 10 saniye içinde herhangi bir 2xx ile cevap verin, işi sonra yapın.
  • Yönlendirme dahil başka her cevap, yaklaşık 45 saat içinde en fazla 7 kez yeniden denenir. Bir uç üç gün boyunca başarısız olmaya devam ederse kapatılır ve size e-posta gönderilir.
  • Yeniden deneme aynı olay kimliğini taşır ve sıra garanti edilmez. NameGender-Event-Id ile tekilleştirin; işin güncel durumu gerektiğinde işi GET ile okuyun.
  • Paneldeki sır yenileme eski sırrı 24 saat daha imzada tutar; sunucunuzu olay kaçırmadan güncelleyebilirsiniz.
  • Yeni olay türleri eklenebilir. İşlemediğiniz bir türe 2xx ile cevap verin ve yok sayın.
GET POST https://namegender.com/api/v1/gender/countries
Markdown

Ülke dağılımı

Bir adın kayıtlı olduğu ülkeleri döndürür. İki liste geri gelir ve kasıtlı olarak birleştirilmez: `registrations` ölçülen hacimdir, yalnızca sayımlı ad istatistiği yayımlayan on bir ülke arasında karşılaştırılabilir; `attested_in` varlıktır, herhangi bir ağırlığı yoktur.

Bu bir köken ülkesi veya etnik köken çıkarımı değildir ve böyle kullanılmamalıdır. Sayımlı istatistikler yalnızca on bir ülke için mevcuttur: ABD, İngiltere, Fransa, Kanada, İspanya, İrlanda, Norveç, Avusturya, İsrail, Polonya ve İsviçre. "Mehmet" sorgusu bu nedenle İsviçre ve Fransa'yı her biri yaklaşık %29 ile ilk sıraya yerleştirir ve Türkiye sıralamada hiç görünmez — Türkiye sayım yayımlamaz. Türkiye `attested_in`'de görünür.
Parametre Tür Açıklama
name
gerekli
string Sorgulanacak ad.
limit
isteğe bağlı
integer Kaç adet sayılı ülkenin `registrations` içinde listeleneceği. 1–100, varsayılan 25. Kısalan liste için paylar yeniden hesaplanmaz.
curl "https://namegender.com/api/v1/gender/countries?name=Mehmet" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "credits_charged": 1,
  "credits_remaining": 49994,
  "took_ms": 3,
  "name": "Mehmet",
  "basis": {
    "counted_sources": ["ssa", "ons", "nrs", "nisra", "insee", "statcan", "ine", "cso", "ssb", "statat", "pesel", "bfs"],
    "counted_countries": 8,
    "attested_countries": 16,
    "note": "Shares are calculated only across countries that publish counted name statistics…"
  },
  "registrations": [
    { "country": "CH", "count": 3890, "share": 29.45, "gender": "male", "source": "bfs"    },
    { "country": "FR", "count": 3775, "share": 28.58, "gender": "male", "source": "insee"  },
    { "country": "PL", "count": 1808, "share": 13.69, "gender": "male", "source": "pesel"  }
  ],
  "attested_in": ["AL","AT","AU","BE","CA","CH","ES","FR","GB","KS","MK","NO","PL","SE","TR","US"]
}

İstek başına 1 kredi. `share` sayılı verisi olan tüm ülkeler üzerinden hesaplanır, bu nedenle toplamı yalnızca `limit` listeyi kısaltmadığında 100'e ulaşır; `counted_countries` de kısaltmadan önce sayılır. `attested_in` yüzde içermez çünkü bu kayıtların arkasında hesaplamak için bir sayı yoktur.

GET POST https://namegender.com/api/v1/salutation
Markdown

Hitap

Bir adı mektuba ya da e-postaya hazır bir hitaba dönüştürür, on dilde: “Sehr geehrte Frau Dr. Müller,”, “Sayın Ahmet Bey,”, “Madame,”, “山田様”. Cinsiyet sorgusu dahildir ve yine 1 kredi tutar. Her yanıtta resmî, samimi ve nötr birer satır ile resmî satırın parçaları bulunur.

Parametre Tür Açıklama
name
gerekli
string Unvanlar dahil tam ad (“Dr. Anna Müller”). Bunu ya da `first_name` ve `last_name` gönderin.
first_name, last_name
isteğe bağlı
string CRM'iniz adları ayrı alanlarda tutuyorsa `name` yerine bunları kullanın. Hiçbir ayrıştırma yapılmaz.
email
isteğe bağlı
string Ad gönderilmediğinde kullanılan e-posta adresi. Ad, @ işaretinden önceki kısımdan özel harf olmadan okunur (Müller değil Mueller); info@ gibi rol adresleri kurum hitabı alır.
language
isteğe bağlı
string Hitabın dili: en, en-US, en-GB, de, de-AT, de-CH, fr, es, it, pt, pt-PT, pt-BR, nl, tr, pl, ja. Gönderilmezse: `locale` dili, ardından ülkenin ana dili, ardından İngilizce. Desteklenmeyen bir dil hata döndürür; sessizce İngilizceye geçilmez.
country, locale, ip
isteğe bağlı
string Cinsiyet sorgusu için ülke ipucu, cinsiyet endpointlerinde olduğu gibi. Dili yalnızca `language` gönderilmediğinde belirler.
gender
isteğe bağlı
string Zaten biliyorsanız `male`, `female` veya `neutral`. Sorgunun yerine geçer; `neutral` her zaman nötr biçimi verir.
min_probability
isteğe bağlı
integer Cinsiyetli hitap için en düşük olasılık, 50–100. Varsayılan 90.
title
isteğe bağlı
string Ayrı bir alanda tutulan akademik unvan, örneğin `Dr.` Almanca ve İngilizce hitaplarda kullanılır.
curl -X POST "https://namegender.com/api/v1/salutation" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Dr. Anna Müller", "language": "de"}'
{
  "credits_charged": 1,
  "credits_remaining": 49993,
  "language": "de",
  "form": "gendered",
  "reason": null,
  "salutation": {
    "formal": "Sehr geehrte Frau Dr. Müller,",
    "informal": "Liebe Anna,",
    "neutral": "Guten Tag Dr. Anna Müller,"
  },
  "parts": { "opening": "Sehr geehrte", "courtesy": "Frau", "academic": "Dr.", "name": "Müller" },
  "gender": "female",
  "gender_source": "lookup",
  "probability": 99,
  "first_name": "Anna",
  "last_name": "Müller",
  "name_type": "personal"
}

Yanlış cinsiyet, hiç cinsiyet olmamasından kötüdür; bu yüzden cinsiyetli biçim yalnızca cinsiyet en az `min_probability` olasılıkla biliniyorsa ve dilin ihtiyaç duyduğu ad parçası varsa kullanılır. Aksi halde `form` değeri `neutral` olur ve `reason` nedenini belirtir. Şirketler ve rol adresleri `form: organization` alır. `best_guess` ve `ai_fallback` burada geçerli değildir.

POST /api/v1/salutation/bulk, `names` içinde en fazla 100 ad alır; her ad 1 kredidir ve aynı seçenekler her ada uygulanır.

GET POST https://namegender.com/api/v1/name-check
Markdown

İsim kontrolü

Kayıt ya da potansiyel müşteri formuna yazılan bir adın gerçek bir kişinin adına benzeyip benzemediğini ve nedenini söyler. Klavyeye rastgele basılmış girdileri (“asdf qwerty”), yer tutucuları (“Test Test”, “John Doe”, “n/a”), kurgusal karakterleri (“Mickey Mouse”), küfürleri ve ad alanındaki rakam, simge ya da e-posta adreslerini yakalar. Ad başına 1 kredi.

Bu bir kimlik doğrulaması değildir ve hiçbir ada sahte demez. `implausible` ve `suspicious` değerlerini bir kaydı işaretlemek ya da ek bilgi istemek için kullanın, insanları otomatik olarak reddetmek için değil.
Parametre Tür Açıklama
name
gerekli
string Forma yazıldığı haliyle ad. Bunu ya da `first_name` ve `last_name` gönderin.
first_name, last_name
isteğe bağlı
string Formunuzda ayrı alanlar varsa `name` yerine bunları kullanın.
country, locale, ip
isteğe bağlı
string Ülke ipucu, cinsiyet endpointlerinde olduğu gibi. Adın ayrıştırılmasına ve kayıtlarda aranmasına yardımcı olur.
curl -X POST "https://namegender.com/api/v1/name-check" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "asdf qwerty"}'
{
  "credits_charged": 1,
  "credits_remaining": 49992,
  "query": "asdf qwerty",
  "assessment": "implausible",
  "score": 0,
  "signals": [
    { "code": "placeholder", "severity": "high", "part": "first_name", "value": "asdf" },
    { "code": "keyboard_pattern", "severity": "high", "part": "first_name", "value": "asdf" },
    { "code": "keyboard_pattern", "severity": "high", "part": "last_name", "value": "qwerty" }
  ],
  "first_name": "Asdf",
  "last_name": "Qwerty",
  "name_type": "personal",
  "evidence": { "first_name_status": "not_found", "first_name_counted_records": 0 }
}

Yüksek önemde bir sinyal varsa (klavye deseni, tekrarlanan harfler, yer tutucu, küfür, e-posta ya da URL) `assessment` değeri `implausible`, orta önemde bir sinyal (kurgusal karakter, rakam, simge, şirket adı, ünlü harf yok, çok uzun) ya da iki düşük sinyal varsa `suspicious`, aksi halde `plausible` olur. `score` kendi eşiğinizi belirlemeniz için 0 ile 100 arasındadır. Resmî doğum kayıtlarında bulunan bir ad onu yükseltir; hiç görmediğimiz bir ad tek başına düşürmez. Soyadları yalnızca biçimlerine göre değerlendirilir: bu endpointin arkasında bir soyadı veri kümesi yoktur.

Dokuz yazı sisteminde 4.610 gerçek ad üzerinde, tek başına ve bir soyadıyla birlikte test edildi: hiçbiri `suspicious` ya da `implausible` olarak işaretlenmedi. Null, Test ya da Cockburn gibi soyadları, Ng gibi iki harfli adlar ve tek adlar bilerek dokunulmadan bırakılır.

POST /api/v1/name-check/bulk, `names` içinde en fazla 100 ad alır; her ad 1 kredidir ve üç değerlendirmenin özeti döner.

GET POST https://namegender.com/api/v1/age
Markdown

İsimden yaş

Bir adı taşıyan yaşayan kişilerin kaç yaşında olduğu: medyan yaş, ortadaki yarı (`age_range`) ve ortadaki %80 (`age_range_80`). ABD'de Brittany: medyan 36, yarısı 32 ile 38 arasında. Ad başına 1 kredi.

Bu bir kişiyi değil, bir grubu tanımlar. Çoğu ad için ortadaki yarı 10 ile 25 yıl arasında bir aralığa yayılır. Hedef kitle analizi, segmentler ve araştırma için kullanın; tek bir kişi hakkında hiçbir karar için kullanmayın: kredi, işe alım, konut, sigorta, uygunluk ya da yaş kontrolü.
Parametre Tür Açıklama
name
gerekli
string Bir ad ya da tam ad; ilk ad kullanılır.
gender
isteğe bağlı
string Yalnızca o cinsiyetin kayıtlarını kullanmak için `male` ya da `female`. Erkek Leslie'ler kadın Leslie'lerden 16 yaş büyüktür.
country, locale, ip
isteğe bağlı
string Ülke ipucu, cinsiyet endpointlerinde olduğu gibi. Kapsanan ülkeler: US, FR ve NO. İpucu yoksa ABD serisi kullanılır ve `country_source` değeri `default` olur. Başka bir ülke `reason: country_not_covered` döndürür ve ücret alınmaz.
curl "https://namegender.com/api/v1/age?name=Brittany" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "credits_charged": 1,
  "credits_remaining": 49991,
  "request_id": "req_8f2c1a",
  "name": "Brittany",
  "first_name": "Brittany",
  "gender": null,
  "age": 36,
  "age_range": { "low": 32, "high": 38 },
  "age_range_80": { "low": 28, "high": 41 },
  "birth_year": 1990,
  "sample_size": 353775,
  "births": 361434,
  "country": "US",
  "country_source": "default",
  "source": "ssa",
  "series": "1880-2024",
  "reference_year": 2026,
  "reason": null
}

Yöntem: ada, cinsiyete ve yıla göre kayıtlı doğumlar; her yıl, o doğum kuşağının hâlâ hayatta olan payıyla ağırlıklandırılır (SSA kuşak yaşam tabloları). Kaynaklar: SSA doğumları 1880–2024 (US), INSEE 1900–2025 (Fransa), SSB 1945–2025 (Norveç). Seride olmayan bir ad için `reason` değeri `not_found`, yaşayan kişi sayısı 100'ün altındaysa `insufficient_data` olur.

Yurt dışındaki doğumlar hiçbir seride yer almaz, bu yüzden göçmenler arasında yaygın adlar olduklarından genç görünür. Norveç serisi 1945'te başlar, bu yüzden daha önce doğanlar eksiktir. ABD yaşam tablosu Fransa ve Norveç için de kullanılır.

POST /api/v1/age/bulk, `names` içinde en fazla 100 ad alır; her ad 1 kredidir ve sonuçlar gönderilen sırayla döner.

GET https://namegender.com/api/v1/me
Markdown

Bakiye

Kredi bakiyenizi ve bugünkü ücretsiz kullanım hakkınızdan kalanı okuyun. Bu çağrı ücretlendirilmez.

curl "https://namegender.com/api/v1/me" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "you@example.com",
  "credits_remaining": 50099,
  "purchased_credits": 50000,
  "free_today": 99,
  "free_daily_limit": 100,
  "lifetime_requests": 12480
}

Latin Dışı Yazı Sistemleri

Bir adı kendi yazı sisteminde gönderin ve biz bunu referans verilere bağlarız. Ek parametre gerekmez: yazı sistemini otomatik olarak tespit eder ve uygun stratejiyi uygularız.

Destekleniyor
Arapça yazı

Arapça yazı kısa ünlüleri atlar, bu nedenle محمد "mhmd" olarak transkripsiyonu yapılırken verilerimizde "muhammed" olarak bulunur. Bunun yerine ünsüz deseniyle eşleştiririz ve dişil ة işaretini koruriz, böylece خالد (Khalid) ve خالدة (Khalida) ayrı kalır. Arapça yazıyla yazılmış Farsça ve Urduca adları da kapsar.

Çin karakterleri

Pinyin'e dönüştürülür. Çince'de soyadı önce gelir, bu nedenle 李明 soyadı 李 (Li) ve verilen adı 明 (Ming) 'dir — arama yapmadan önce soyadı çıkarırız. Tek bir karakter tam bir verilen addır ve tek bir ad olarak işlem görür.

Korece

Çince'nin aynı soyadı-önce işlemesi, yaygın Korece soyadlarıyla uygulanır.

Japonca kana

Hiragana ve katakana doğru şekilde okunur (ひろし → Hiroshi).

Kiril

Rus, Ukraynaca, Bulgarca ve Sırpça adlar doğrudan transkripsiyonu yapılır.

Devanagari

Hintçe, Marathi ve Nepalce adlar. Sondaki doğal ünlü işlem görür (राहुल → Rahul, "Rahula" değil).

Desteklenmiyor
Japonca kanji

Japonca kanji ve Çince karakterler aynı Unicode aralığını işgal ettiği için, yalnızca karakterlerden bunları ayırt edemeyiz. Han girişi Çince olarak okunur: zaten kelimesi kelimesine tuttuğumuz bir kanji adı, Mandarin okunuşunu alır ve bu da Japonca bir ad için genellikle yanlıştır (健太, ad Kenta olduğunda "jian tai" olarak okunur). Tuttuğumuz adlar tam olarak eşleşir ve doğrudur. Emin olmak için Japonca adları kana veya Latin yazısında gönderin.

Thai

Thai, Arapça gibi ünlüleri atlar ve kendi eşleştirme katmanına ihtiyaç duyar. Henüz oluşturulmadığı için bunlar null döndürür.

# Arap yazısı — ünsüz iskeleti üzerinden eşleşir
curl "https://namegender.com/api/v1/gender?name=%D9%85%D8%AD%D9%85%D8%AF" -H "Authorization: Bearer KEY"
# -> { "gender": "male", "probability": 100, "source": "script", "matched_as": "mahamad" }

# Çince — soyadı ayıklanır, verilen ad sorgulanır
curl "https://namegender.com/api/v1/gender?name=%E6%9D%8E%E6%98%8E" -H "Authorization: Bearer KEY"
# -> { "gender": "male", "probability": 92, "source": "db" }

Kopyalanamadı. Metni seçip kopyalayın.

Bir yazıyı hiç şekilde köprüleyemediğimizde, yanıt gender: null ve source: none şeklindedir. source alanını kontrol edin: script, çeviriyazı yaptığımız anlamına gelir; db, gönderdiğiniz karakterleri doğrudan eşleştirdiğimiz anlamına gelir. İkisinin farklı güven seviyeleri vardır ve hangisini aldığınızı gösteririz.

Yanıt alanları

Tüm endpoint'ler arasında aynıdır.

Alan Tür Açıklama
credits_charged integer Bu çağrı için düşülen kredi sayısı.
credits_remaining integer Bu çağrının ücreti düşüldükten sonra harcayabileceğiniz bakiye: satın alınan krediler artı bugünkü ücretsiz hakkınızdan kalan.
query string Herhangi bir temizlemeden önce, tam olarak gönderdiğiniz haliyle giriş.
name string Unvanlar ve soyadları çıkardıktan sonra arama yaptığımız ad.
first_name string Girdiden ayrılan ad. Cinsiyet null olsa da döner, ek kredi almaz.
middle_name string Ad ile soyadı arasındaki diğer adlar. Baş harfler atılır.
last_name string Soyadı; van, de la gibi ekler dahil. Kullanıcı adlarında her zaman null.
name_type string personal, organization (Acme LLC) ya da role (info@, Müşteri Hizmetleri). Kurum ve rol hesapları cinsiyet almaz.
gender string Erkek, kadın veya söyleyecek kadar emin olmadığımız zaman null.
country string İstatistiklerin kaynağı olan ülke veya küresel toplama için null.
country_source string Ülkenin nereden geldiği: country, locale, ip ya da cevap dünya geneliyse null.
sample_size integer Bu yanıtın arkasındaki kayıtlı kişi sayısı. 0, kaynağın denetleyebileceğimiz bir sayı değil, oran veya varlık kaydı yayımladığı anlamına gelir.
probability integer Sayımlı veride gözlenen baskın cinsiyet oranı. Sayımsız veri 100 altında sınırlandırılır; cinsiyet null ise 0.
took_ms integer Sorguyu çözümlemek için harcadığımız süre, tam milisaniye olarak. Sizin taraftaki ağ süresi dahil değildir.

Diğer hizmetlerin sunmadığı kanıt alanları

confidence, sayımlı kanıtı örneklemsiz kayıttan ayırır. source yanıtın kaynağını, matched_as ise bulanık eşleşmenin ulaştığı kaydı belirtir.

Alan Tür Açıklama
source string db, script, fuzzy, llm veya none.
confidence string Örneklem kanıtına göre high, medium, low, unverified veya unknown.
matched_as string Bulanık eşleşme için eşleşen veritabanı girişi. Aksi takdirde null.

Hata kodları

Bir çağrının başarısız olduğunu HTTP durum kodu söyler. JSON gövdesi ardından nedeni error alanında adlandırır, message alanında açıklar ve desteğe iletebileceğiniz bir request_id ile aşağıdaki ilgili satıra giden bir doküman bağlantısı verir. Mantığınızı her zaman error'a göre kurun, asla message'a göre değil: iletiler çevrilir ve yeniden yazılabilir.

Kod HTTP Anlamı
missing_key 401 API anahtarı gönderilmedi. İsteğe bir Authorization: Bearer başlığı veya X-Api-Key başlığı ekleyin.
invalid_key 401 Bu API anahtarı geçerli değil.
revoked_key 401 Bu API anahtarı iptal edilmiştir.
blocked 403 Bu hesap askıya alınmıştır. Destek ekibiyle iletişime geçiniz.
email_not_verified 403 Bu hesabın e-posta adresi henüz doğrulanmadı. Size gönderdiğimiz doğrulama bağlantısını açın ya da panelden yeni bir tane isteyin.
ip_not_allowed 403 Bu IP adresinden gelen isteklere bu anahtar için izin verilmez.
proxy_secret_required 403 Bu anahtar yalnızca API pazaryerinden çalışır ve her isteği imzalar. Orada size verilen anahtarı kullanın.
forbidden 403 Bu işlemi gerçekleştirme izniniz yok.
no_credits 402 Kredileriniz tükendi. Daha fazla satın alınız veya günlük ücretsiz kotanızın sıfırlanmasını bekleyiniz.
missing_input 400 "name" parametresi zorunludur.
invalid_input 422 "name" parametresi geçerli değil.
too_many_items 422 Bir istekte en fazla 100 öğe gönderilebilir.
unknown_endpoint 404 Bu yolda hiçbir endpoint yok. URL'yi API belgelerine karşı kontrol edin.
method_not_allowed 405 Bu endpoint DELETE isteklerini kabul etmiyor.
payload_too_large 413 İstek gövdesi çok büyük.
rate_limited 429 Çok fazla istek. Yavaşlayınız ve kısa bir süre sonra tekrar deneyiniz.
batch_not_found 404 Bu hesapta bu kimliğe sahip bir dosya işi yok.
batch_not_startable 409 Bu iş zaten başlatılmış ya da kapatılmış.
batch_not_finished 409 Bu iş henüz bitmedi. Durumunu kontrol edin ve tamamlandığında sonucu indirin.
batch_in_progress 409 Bu iş şu anda işleniyor ve iptal edilemez. Bittikten sonra silebilirsiniz.
result_gone 410 Bu işin indirilecek sonucu yok. İş başarısız oldu, iptal edildi, süresi doldu ya da tek indirmelik sonucu zaten alındı.
too_many_batches 429 Zaten çalışan 100 dosya işiniz var. Yenisini başlatmadan önce birinin bitmesini bekleyin.
not_ready 503 İsim veritabanı yeniden oluşturuluyor. Birazdan tekrar deneyiniz.
server_error 500 Bizim tarafımızda bir sorun oluştu. Bilgilendirilmiş olup çözüm için çalışılmaktadır.
{
  "error": "no_credits",
  "message": "You are out of credits. Buy more or wait for your daily free quota to reset.",
  "request_id": "req_9c1f5b2a7e0d4a13",
  "docs": "https://namegender.com/docs#error-no_credits"
}

Kopyalanamadı. Metni seçip kopyalayın.

Oran sınırları

Normal kullanım bir sınıra ulaşmaz. Bu sınır, sızan bir anahtarın kötüye kullanılmasını engellemek için vardır ve IP yerine API anahtarı başına sayılır, böylece bir sunucuda birden fazla müşteri birbirinin payını tüketmez.

Geçerli sınır: Anahtar başına dakikada 1.200 istek. Daha fazlasına mı ihtiyacınız var? Sorun, hesabınızda artıracağız.

Her yanıt standart X-RateLimit-Limit ve X-RateLimit-Remaining header'larını taşır.

GET isteklerinde boşluklar ve Latin dışı harfler

Ayşe Yılmaz veya 中村 gibi bir ad, URL içinde yazıldığı haliyle taşınamaz. GET ile çağırırken değeri yüzde kodlamasıyla (percent-encoding) kodlayın ya da POST ile bir JSON gövdesinde gönderip kodlamayı tamamen atlayın.

Ayşe Yılmaz  ->  Ay%C5%9Fe%20Y%C4%B1lmaz
محمد          ->  %D9%85%D8%AD%D9%85%D8%AF
中村           ->  %E4%B8%AD%E6%9D%91

Kopyalanamadı. Metni seçip kopyalayın.