Pokračovat → Přehled

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 header (doporučeno)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Vlastní header
X-Api-Key: ng_live_xxxxxxxxxxxx
Parametr dotazu
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Nikdy nevystavujte svůj klíč v kódu na straně klienta. Požadavky z prohlížeče nebo mobilní aplikace by měly procházet vaším vlastním backendem.

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še
GET · POST https://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
}
GET · POST 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"
}
GET · POST 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"
}
POST 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.

GET 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.

Podporováno
Arabské písmo

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.

Čínské znaky

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.

Korejština

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í.

Japonská kana

Hiragana a katakana se čtou správně (ひろし → Hiroshi).

Cyrilice

Ruská, ukrajinská, bulharská a srbská jména se transliterují přímo.

Devanagari

Hindská, maráthská a nepalská jména. Je zpracována inherentní koncová samohláska (राहुल → Rahul, ne "Rahula").

Není podporováno
Japonské kanji

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

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.
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