Devam et → Genel Bakış

REST API Referansı

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

https://namegender.com/api Ücretsiz kaydol

Hızlı Başlangıç

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

curl "https://namegender.com/api?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?' . $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?${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",
    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")
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?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

API anahtarınızı üç şekilde geçebilirsiniz. Authorization başlığı önerilir: sorgu dizgileri sunucu günlüklerine ve tarayıcı geçmişine kaydedilir.

Authorization başlığı (önerilir)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Özel başlık
X-Api-Key: ng_live_xxxxxxxxxxxx
Sorgu parametresi
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
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

Bir API, dört giriş türü ve diğer hizmetlerin sıkıntı çektiği dosyaları işleyen toplu araçlar.

Tümünü görüntüle
GET · POST https://namegender.com/api

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).
askToAI
isteğe bağlı
boolean Ad veritabanında olmadığında bir dil modeline geri dön. Ekstra bir kredi maliyeti.
forceToGenderize
isteğe bağlı
boolean Güven seviyesi eşiğin altında olsa bile en muhtemel cinsiyeti döndür. Varsayılan olarak kapalı, çünkü belirsiz bir tahminin kesin olarak sunulması hiç cevap vermemekten daha kötüdür.
curl "https://namegender.com/api?name=Jordan" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "status": true,
  "used_credits": 1,
  "remaining_credits": 49999,
  "expires": null,
  "q": "Jordan",
  "name": "Jordan",
  "gender": "male",
  "country": null,
  "total_names": 62240,
  "probability": 84,
  "confidence": "high",
  "duration": "1ms",
  "source": "db",
  "matched_as": null
}
GET · POST https://namegender.com/api/email

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).
askToAI
isteğe bağlı
boolean Ad veritabanında olmadığında bir dil modeline geri dön. Ekstra bir kredi maliyeti.

forceToGenderize burada kullanılamaz: ad içeride çıkarıldığından, belirsiz bir çıkarımdaki sonucu zorlamak iki tahmini birleştirir.

curl "https://namegender.com/api/email?email=ayse.yilmaz84%40example.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "status": true,
  "q": "ayse.yilmaz84@example.com",
  "name": "Ayse",
  "gender": "female",
  "probability": 95,
  "confidence": "unverified",
  "total_names": 655,
  "duration": "1ms",
  "source": "db"
}
GET · POST https://namegender.com/api/username

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).
askToAI
isteğe bağlı
boolean Ad veritabanında olmadığında bir dil modeline geri dön. Ekstra bir kredi maliyeti.
forceToGenderize
isteğe bağlı
boolean Güven seviyesi eşiğin altında olsa bile en muhtemel cinsiyeti döndür. Varsayılan olarak kapalı, çünkü belirsiz bir tahminin kesin olarak sunulması hiç cevap vermemekten daha kötüdür.
curl "https://namegender.com/api/username?username=AyseYilmaz84" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "status": true,
  "q": "AyseYilmaz84",
  "name": "Ayse",
  "gender": "female",
  "probability": 95,
  "confidence": "unverified",
  "source": "db"
}
POST https://namegender.com/api/bulk

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.
curl -X POST "https://namegender.com/api/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/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['q'], $row['gender'] ?? '?', $row['probability']);
}
const response = await fetch('https://namegender.com/api/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.q, r.gender, r.probability));
import requests

response = requests.post(
    "https://namegender.com/api/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["q"], row["gender"], row["probability"])
{
  "status": true,
  "used_credits": 4,
  "remaining_credits": 49995,
  "duration": "2ms",
  "summary": {
    "total": 4,
    "identified": 4,
    "unknown": 0,
    "match_rate": 100
  },
  "results": [
    { "q": "Ayşe",   "gender": "female", "probability": 95, "total_names": 0, "confidence": "unverified", "source": "db" },
    { "q": "Mehmet", "gender": "male",   "probability": 95, "total_names": 0, "confidence": "unverified", "source": "db" },
    { "q": "Priya",  "gender": "female", "probability": 95, "total_names": 0, "confidence": "unverified", "source": "db" },
    { "q": "Wei",    "gender": "male",   "probability": 85, "total_names": 0, "confidence": "unverified", "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.

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

Hesap & Kota

Kredi harcamadan kalan bakiyenizi kontrol edin.

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

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?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?name=%E6%9D%8E%E6%98%8E" -H "Authorization: Bearer KEY"
# -> { "gender": "male", "probability": 92, "source": "db" }

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
status boolean İstek başarısız olduğunda false değeri alır. Bunu önce kontrol edin.
used_credits integer Bu isteğin kullandığı kredi.
remaining_credits integer Bu istekten sonra kalan kredi.
expires null Her zaman null. Satın alınan kredilerin süresi dolmaz.
q string Girişiniz, değiştirilmeden geri yansıtılır.
name string Unvanlar ve soyadları çıkardıktan sonra arama yaptığımız ad.
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.
total_names integer Bu yanıtın dayandığı gözlem sayısı. 0, kaynağın denetlenebilir bir adet vermediği 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.
duration string Sunucu tarafı işleme süresi.

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, 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ı

Hatalar, status: false ve makine tarafından okunabilir bir hata dizesi içeren bir JSON gövdesi döndürür. İletiye değil, hataya göre eşleştirin: iletiler çevrilir ve değişebilir.

Kod HTTP Anlamı
missing_key 401 API anahtarı eksik. "key" parametresi veya Authorization: Bearer başlığı olarak iletiniz.
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.
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.
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.
{
  "status": false,
  "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"
}

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.

Başka bir sağlayıcıdan geçiş

Yanıt alanlarımız ve parametre adlarımız ortak kuralı takip eder, bu nedenle değiştirme genellikle bir satırı değiştirmek anlamına gelir: temel URL.

- https://api.other-provider.io/api?name=Ayşe&key=KEY
+ https://namegender.com/api?name=Ayşe&key=KEY

askToAI ve forceToGenderize orijinal yazımlarını bu nedenle korurlar. İhtiyacınız olan bir alan eksikse, bize söyleyin ve ekleyelim.

Girişinizi kodlayın

İsimler boşluk ve ASCII olmayan karakterler içerebilir. Sorgu dizesine koymadan önce değeri URL kodlayın veya JSON gövdesiyle POST kullanı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