Referenční dokumentace REST API
Čtyři endpointy, jeden formát odpovědi. Vše níže je živě testováno s vaším účtem.
https://namegender.com/api
Registrovat se zdarma
Rychlý start
Vytvořte klíč na ovládacím panelu a odešlete svůj první požadavek. SDK není nutný.
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
Každý endpoint vrací stejnou strukturu, takže můžete přepínat vstupy bez změny kódu parsování.
Ověřování
Předejte svůj API klíč jedním ze tří způsobů. Authorization header je doporučen: řetězce dotazů se objevují v protokolech serveru a historii prohlížeče.
Authorization: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Klíč můžete omezit na konkrétní IP adresy z přístrojového panelu.
Klientské knihovny
Jedno API, čtyři typy vstupů a hromadné nástroje, které zvládnou soubory, na kterých ostatní služby selžou.
Zobrazit všehttps://namegender.com/api
Pohlaví podle jména
Přijímá křestní jméno nebo plné jméno. Tituly, druhá jména a příjmení jsou před vyhledáváním odstraněny, takže "Dr. Ayşe Yılmaz" a "Ayşe" dávají stejný výsledek.
| Parametr | Typ | Popis |
|---|---|---|
name
povinné
|
string
|
Jméno k klasifikaci. Křestní jméno nebo plné jméno. |
country
volitelné
|
string
|
Kód státu ISO 3166-1 alfa-2. Zlepšuje přesnost pro jména, jejichž pohlaví se liší podle regionu, například Andrea (muž v Itálii, žena v Německu). |
askToAI
volitelné
|
boolean
|
Vrátit se k jazykovému modelu, když jméno není v databázi. Stojí jeden další kredit. |
forceToGenderize
volitelné
|
boolean
|
Vrátit nejpravděpodobnější pohlaví i když je jistota pod prahovou hodnotou. Ve výchozím stavu vypnuto, protože odpověď na minci představovaná jako jistota je horší než žádná odpověď. |
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
Pohlaví podle e-mailu
Extrahuje osobu z lokální části adresy a poté ji klasifikuje. "ayse.yilmaz84@example.com" se přeloží na Ayşe.
| Parametr | Typ | Popis |
|---|---|---|
email
povinné
|
string
|
E-mailová adresa. Používá se pouze část před @. |
country
volitelné
|
string
|
Kód státu ISO 3166-1 alfa-2. Zlepšuje přesnost pro jména, jejichž pohlaví se liší podle regionu, například Andrea (muž v Itálii, žena v Německu). |
askToAI
volitelné
|
boolean
|
Vrátit se k jazykovému modelu, když jméno není v databázi. Stojí jeden další kredit. |
forceToGenderize zde není dostupné: jméno je extraháno interně, takže vynucení výsledku na nejisté extrakci kombinuje dva odhady.
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
Pohlaví podle uživatelského jména
Zpracovává camelCase, snake_case, koncové číslice a úvodní znaky @. "AyseYilmaz84" se přeloží na Ayşe.
| Parametr | Typ | Popis |
|---|---|---|
username
povinné
|
string
|
Uživatelské jméno nebo přezdívka. Úvodní @ se ignoruje. |
country
volitelné
|
string
|
Kód státu ISO 3166-1 alfa-2. Zlepšuje přesnost pro jména, jejichž pohlaví se liší podle regionu, například Andrea (muž v Itálii, žena v Německu). |
askToAI
volitelné
|
boolean
|
Vrátit se k jazykovému modelu, když jméno není v databázi. Stojí jeden další kredit. |
forceToGenderize
volitelné
|
boolean
|
Vrátit nejpravděpodobnější pohlaví i když je jistota pod prahovou hodnotou. Ve výchozím stavu vypnuto, protože odpověď na minci představovaná jako jistota je horší než žádná odpověď. |
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
Hromadný požadavek
Odešlete až 100 jmen v jednom požadavku. Použijte to místo smyčky: jeden hromadný hovor na 100 jmen je jednorázová cesta a jednorázové deduplikované vyhledávání.
| Parametr | Typ | Popis |
|---|---|---|
names
povinné
|
string[]
|
Pole jmen. Maximálně 100 položek. |
type
volitelné
|
string
|
Co jsou položky: name, email nebo username. Výchozí hodnota je name. |
country
volitelné
|
string
|
Použito na každou položku v požadavku. |
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" }
]
}
Výsledky se vrátí ve stejném pořadí, v jakém jste je odeslali. Kredity se účtují podle jména a celý požadavek je odmítnut před jakoukoli prací, pokud vám chybí zůstatek, takže nikdy nedostanete poloupravenu dávku.
Blok souhrnu vám na první pohled řekne míru shody, takže si můžete rozhodnout, zda vstup potřebuje vyčištění před zpracováním zbytku.
https://namegender.com/api/me
Účet a kvóta
Zkontrolujte zbývající zůstatek bez utracení kreditu.
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
}
Písma mimo latinku
Pošlete jméno v jeho původním písmu a my ho propojíme s referenčními daty. Bez dalšího parametru: automaticky detekujeme písmo a zvolíme vhodnou strategii.
Arabské písmo vynechává krátké samohlásky, takže محمد se transliteruje na "mhmd" zatímco naše data obsahují "muhammed". Porovnáváme podle vzoru konsonantů a zachováváme ženský marker ة, aby se خالد (Khalid) a خالدة (Khalida) lišily. Pokrývá také perská a urdská jména psaná arabským písmem.
Převedeno na pinyin. Příjmení je v čínštině na prvním místě, takže 李明 má příjmení 李 (Li) a křestní jméno 明 (Ming) — před vyhledáním příjmení odstraníme. Jediný znak představuje úplné křestní jméno a je zpracován jako jeden.
Stejné zpracování příjmení na prvním místě jako v čínštině, s použitím běžných korejských příjmení.
Hiragana a katakana se čtou správně (ひろし → Hiroshi).
Ruská, ukrajinská, bulharská a srbská jména se transliterují přímo.
Hindská, maráthská a nepalská jména. Je zpracována inherentní koncová samohláska (राहुल → Rahul, ne "Rahula").
Japonské znaky kanji a čínské znaky se nacházejí ve stejném rozsahu Unicode, takže je nemůžeme rozlišit pouze podle znaků samotných. Vstup Han je čten jako čínština: jméno kanji, které nemáme uloženo doslova, dostane jeho mandarin čtenku, která pro japonské jméno je obvykle špatná (健太 se čte jako "jian tai", ačkoli je jméno Kenta). Jména, která máme uložena, se shodují přesně a jsou správná. Odesílajte japonská jména v kana nebo latinské abecedě, abyste si byli jisti.
Thajština vynechává samohlásky podobně jako arabština a potřebuje vlastní vrstvu porovnávání. Zatím vybudováno není, takže vrací null.
# 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" }
Pokud nemůžeme překlad skriptu vůbec provést, odpověď je gender: null se source: none. Zkontrolujte pole source: script znamená, že jsme transliterovali, db znamená, že jsme přímo odpovídali znakům, které jste odeslali. Oba mají různou důvěru a my vám ukážeme, který jste dostali.
Pole odpovědi
Stejná across všech endpointech.
| Pole | Typ | Popis |
|---|---|---|
status
|
boolean
|
false, pokud se požadavek nezdařil. Zkontrolujte nejprve. |
used_credits
|
integer
|
Kredity spotřebované tímto požadavkem. |
remaining_credits
|
integer
|
Kredity zbývající po tomto požadavku. |
expires
|
null
|
Vždy null. Zakoupené kredity nevyprší. |
q
|
string
|
Váš vstup vrácený beze změn. |
name
|
string
|
Jméno, které jsme skutečně vyhledali po odstranění titulů a příjmení. |
gender
|
string
|
male, female, nebo null, pokud si nejsme dostatečně jisti. |
country
|
string
|
Země, ze které statistiky pocházejí, nebo null pro globální agregaci. |
total_names
|
integer
|
Počet skutečných lidí, na kterých je odpověď založena. 0 znamená, že zdroj poskytuje poměry spíše než počty, ne že je odpověď slabá. |
probability
|
integer
|
Spolehlivost uvedeného pohlaví, 50 až 100. 0, pokud je gender null. |
duration
|
string
|
Čas zpracování na straně serveru. |
Dva atributy, které jiné služby neposkytují
source vám řekne, odkud odpověď pochází: z referenční databáze, z přibližné shody nebo z AI fallbacku. matched_as pojmenovává záznam, na kterou se přibližná shoda vztahuje. Zusammen vám umožňují rozhodovat se o důvěryhodnosti jednoho výsledku místo slepého přijetí.
| Pole | Typ | Popis |
|---|---|---|
source
|
string
|
db, fuzzy, llm, nebo none. |
confidence
|
string
|
vysoká, střední, nízká, neověřená nebo neznámá, založeno na vzorku dat. |
matched_as
|
string
|
U přibližné shody záznam databáze, který odpovídal. Jinak null. |
Kódy chyb
Chyby vrací JSON s status: false a strojově čitelným řetězcem chyby. Porovnávejte chybu, ne zprávu: zprávy jsou přeloženy a mohou se měnit.
| Kód | HTTP | Význam |
|---|---|---|
missing_key |
401 | API klíč chybí. Předejte jej jako parametr "key" nebo v hlavičce Authorization: Bearer. |
invalid_key |
401 | Tento API klíč není platný. |
revoked_key |
401 | Tento API klíč byl zrušen. |
blocked |
403 | Tento účet byl pozastaven. Kontaktujte podporu. |
email_not_verified |
403 | E-mailová adresa tohoto účtu zatím nebyla potvrzena. Otevřete potvrzovací odkaz, který jsme vám poslali, nebo si vyžádejte nový v přehledu. |
ip_not_allowed |
403 | Požadavky z této IP adresy nejsou pro tento klíč povoleny. |
forbidden |
403 | Nemáte povolení provést tuto akci. |
no_credits |
402 | Nemáte více kreditů. Koupit více nebo počkat na reset vaší denní bezplatné kvóty. |
missing_input |
400 | Parametr "name" je povinný. |
invalid_input |
422 | Parametr "name" není platný. |
too_many_items |
422 | V jednom požadavku lze odeslat maximálně 100 položek. |
ai_consent_required |
422 | askToAI odesílá jméno třetímu poskytovateli AI, kterého si tento účet nezvolil. Viz pole "ai" pro identifikaci poskytovatele, pak v nastavení dashboardu povolte vyhledávání AI. |
unknown_endpoint |
404 | Na této cestě neexistuje endpoint. Ověřte si adresu podle dokumentace API. |
method_not_allowed |
405 | Tento endpoint nepřijímá požadavky DELETE. |
payload_too_large |
413 | Tělo požadavku je příliš velké. |
rate_limited |
429 | Příliš mnoho požadavků. Zpomalte a zkuste to za chvíli. |
not_ready |
503 | Databáze jmen se právě obnovuje. Zkuste to za chvíli. |
server_error |
500 | Na naší straně došlo k chybě. Byli jsme informováni. |
{
"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"
}
Limity požadavků
Normální používání nenarazí na limit. Omezení existuje proto, aby se zabránilo zneužití úniklého klíče, a počítá se na API klíč spíše než na IP adresu, aby několik zákazníků na jednom serveru nekonzumovalo navzájem své příspěvky.
Aktuální limit: 1 200 požadavků za minutu na klíč. Potřebujete více? Zeptejte se a zvýšíme vám limit na vašem účtu.
Každá odpověď obsahuje standardní headery X-RateLimit-Limit a X-RateLimit-Remaining.
Migrace od jiného poskytovatele
Naše pole odpovědi a názvy parametrů odpovídají obecné úmluvě, takže přechod obvykle znamená změnu jednoho řádku: základní URL.
- https://api.other-provider.io/api?name=Ayşe&key=KEY
+ https://namegender.com/api?name=Ayşe&key=KEY
askToAI a forceToGenderize si zachovávají původní pravopis přesně z tohoto důvodu. Pokud vám chybí pole, na kterém závisíte, dejte nám vědět a přidáme ho.
Zakódujte svůj vstup
Jména obsahují mezery a znaky mimo ASCII. Před vložením do řetězce dotazu zakódujte hodnotu pomocí URL encoding, nebo použijte POST s JSON tělem.
Ayşe Yılmaz -> Ay%C5%9Fe%20Y%C4%B1lmaz
محمد -> %D9%85%D8%AD%D9%85%D8%AF
中村 -> %E4%B8%AD%E6%9D%91