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: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
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ülehttps://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
}
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"
}
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"
}
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.
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.
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.
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.
Çince'nin aynı soyadı-önce işlemesi, yaygın Korece soyadlarıyla uygulanır.
Hiragana ve katakana doğru şekilde okunur (ひろし → Hiroshi).
Rus, Ukraynaca, Bulgarca ve Sırpça adlar doğrudan transkripsiyonu yapılır.
Hintçe, Marathi ve Nepalce adlar. Sondaki doğal ünlü işlem görür (राहुल → Rahul, "Rahula" değil).
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, 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. |
ai_consent_required |
422 | askToAI, adı bir üçüncü taraf AI sağlayıcısına gönderir ve bu hesap buna onay vermemiştir. Sağlayıcının kim olduğunu "ai" alanından kontrol edin, ardından dashboard ayarlarınızdan AI sorgularını etkinleştirin. |
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