REST API-referanse
Fire endepunkter, én responsstruktur. Alt nedenfor er aktivt mot kontoen din.
https://namegender.com/api
Registrer deg gratis
Rask start
Opprett en nøkkel i dashbordet, og send din første forespørsel. Ingen SDK nødvendig.
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
Alle endepunkter returnerer samme struktur, så du kan bytte inndata uten å endre parserkoden.
Autentisering
Send API-nøkkelen din på en av tre måter. Authorization-headeren anbefales: søkestrengen ender opp i serverloggene og nettleserhistorikken.
Authorization: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Du kan begrense en nøkkel til spesifikke IP-adresser fra dashbordet.
Klientbiblioteker
En API, fire inndatatyper, og bulk-verktøy som håndterer filer andre tjenester ikke klarer.
Vis allehttps://namegender.com/api
Kjønn fra navn
Aksepterer fornavn eller fullt navn. Titler, mellomnavn og etternavn fjernes før oppslag, så "Dr. Ayşe Yılmaz" og "Ayşe" gir samme svar.
| Parameter | Type | Beskrivelse |
|---|---|---|
name
påkrevd
|
string
|
Navnet som skal klassifiseres. Fornavn eller fullt navn. |
country
valgfritt
|
string
|
ISO 3166-1 alpha-2 landkode. Forbedrer nøyaktigheten for navn der kjønn varierer etter region, som Andrea (mann i Italia, kvinne i Tyskland). |
askToAI
valgfritt
|
boolean
|
Bruk en språkmodell når navnet ikke er i databasen. Koster én ekstra kreditt. |
forceToGenderize
valgfritt
|
boolean
|
Returner det mest sannsynlige kjønnet selv når sikkerhet er under terskelen. Av som standard, fordi et myntkastresultat presentert som sikkert er verre enn ingen svar. |
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
Kjønn fra e-post
Trekker ut personen fra den lokale delen av adressen, og klassifiserer den. "ayse.yilmaz84@example.com" løses til Ayşe.
| Parameter | Type | Beskrivelse |
|---|---|---|
email
påkrevd
|
string
|
E-postadressen. Bare delen før @ brukes. |
country
valgfritt
|
string
|
ISO 3166-1 alpha-2 landkode. Forbedrer nøyaktigheten for navn der kjønn varierer etter region, som Andrea (mann i Italia, kvinne i Tyskland). |
askToAI
valgfritt
|
boolean
|
Bruk en språkmodell når navnet ikke er i databasen. Koster én ekstra kreditt. |
forceToGenderize er ikke tilgjengelig her: navnet trekkes ut internt, så det å tvinge et resultat på en usikker utvinning dobbler to gjetninger.
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
Kjønn fra brukernavn
Håndterer camelCase, snake_case, etterfølgende sifre og ledende @-tegn. "AyseYilmaz84" løses til Ayşe.
| Parameter | Type | Beskrivelse |
|---|---|---|
username
påkrevd
|
string
|
Brukernavnet eller håndtaket. Et ledende @ ignoreres. |
country
valgfritt
|
string
|
ISO 3166-1 alpha-2 landkode. Forbedrer nøyaktigheten for navn der kjønn varierer etter region, som Andrea (mann i Italia, kvinne i Tyskland). |
askToAI
valgfritt
|
boolean
|
Bruk en språkmodell når navnet ikke er i databasen. Koster én ekstra kreditt. |
forceToGenderize
valgfritt
|
boolean
|
Returner det mest sannsynlige kjønnet selv når sikkerhet er under terskelen. Av som standard, fordi et myntkastresultat presentert som sikkert er verre enn ingen svar. |
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
Massesøk
Send opptil 100 navn i en forespørsel. Bruk dette i stedet for løkking: ett massesøk for 100 navn er en enkelt tur og ett enkelt deduplisert oppslag.
| Parameter | Type | Beskrivelse |
|---|---|---|
names
påkrevd
|
string[]
|
Array av navn. Maksimalt 100 elementer. |
type
valgfritt
|
string
|
Hva elementene er: navn, e-post eller brukernavn. Standardverdi er navn. |
country
valgfritt
|
string
|
Brukt på alle elementer i forespørselen. |
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" }
]
}
Resultater kommer tilbake i samme rekkefølge som du sendte dem. Kreditter belastes per navn, og hele forespørselen avvises før noe arbeid hvis saldoen din er lav, så du får aldri en halvt behandlet batch.
Sammendrags-blokken viser trefffrekvensen på et blikk, slik at du kan bestemme om inndata trenger rensing før du behandler resten.
https://namegender.com/api/me
Konto og kvote
Sjekk gjenstående saldo uten å bruke en kreditt.
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
}
Ikke-latinske skriftsystemer
Send et navn i sitt eget skriftsystem, og vi knytter det til referansedataene. Ingen ekstra parameter: vi gjenkjenner skriftsystemet og velger riktig strategi.
Arabisk skrift utelater korte vokaler, så محمد translittereres til "mhmd" mens våre data inneholder "muhammed". Vi matcher på konsonantmønsteret og bevarer den feminine markøren ة slik at خالد (Khalid) og خالدة (Khalida) holdes atskilt. Dekker også persiske og urdunavne skrevet i arabisk skrift.
Konvertert til Pinyin. Familienavnet kommer først på kinesisk, så 李明 har familienavnet 李 (Li) og det gitte navnet 明 (Ming) — vi fjerner familienavnet før oppslag. Et enkelt tegn er et komplett gitt navn og håndteres som ett.
Samme familienavn-først-håndtering som kinesisk, med vanlige koreanske familienavn.
Hiragana og katakana leses korrekt (ひろし → Hiroshi).
Russiske, ukrainske, bulgarske og serbiske navn translittereres direkte.
Hindi-, marathi- og nepalske navn. Den iboende sluttstavelsen håndteres (राहुल → Rahul, ikke "Rahula").
Japanske kanji og kinesiske tegn opptar samme Unicode-område, så vi kan ikke skille dem fra tegnene alene. Han-input leses som kinesisk: et kanji-navn vi ikke allerede har ordrett får sin Mandarin-lesing, som for et japansk navn vanligvis er feil (健太 leses som "jian tai" når navnet er Kenta). Navn vi har, samsvarer nøyaktig og er korrekte. Send japanske navn i kana eller latinsk skrift for sikkerhet.
Thai utelater vokaler mye som arabisk og trenger sitt eget matchingslag. Ikke bygget ennå, så disse returnerer 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" }
Når vi ikke kan konvertere et skriftsystem i det hele tatt, er responsen kjønn: null med kilde: none. Sjekk kildefeltet: script betyr at vi translittererte, db betyr at vi samstemte tegnene du sendte direkte. De to har ulik sikkerhet, og vi viser hvilken du fikk.
Responsefelt
Identisk på alle endepunkter.
| Felt | Type | Beskrivelse |
|---|---|---|
status
|
boolean
|
false når forespørselen mislyktes. Sjekk dette først. |
used_credits
|
integer
|
Kreditter denne forespørselen brukte. |
remaining_credits
|
integer
|
Kreditter igjen etter denne forespørselen. |
expires
|
null
|
Alltid null. Kjøpte kreditter utløper ikke. |
q
|
string
|
Dine inndataverdier, gjentatt uendret. |
name
|
string
|
Navnet vi faktisk slår opp etter å ha fjernet titler og etternavn. |
gender
|
string
|
male, female, eller null når vi ikke er sikre nok til å si det. |
country
|
string
|
Landet statistikken kommer fra, eller null for globalt aggregat. |
total_names
|
integer
|
Hvor mange mennesker dette svaret er basert på. 0 betyr at kilden gir proporsjoner i stedet for tall, ikke at svaret er svakt. |
probability
|
integer
|
Sikkerhet for det angitte kjønnet, 50 til 100. 0 når kjønn er null. |
duration
|
string
|
Serversidebehandlingstid. |
To felt som andre tjenester ikke gir deg
source forteller deg hvor svaret kom fra: referansedatabasen, et fuzzy match, eller AI-fallback. matched_as navngir oppføringen som fuzzy match landet på. Sammen lar de deg bestemme hvor mye du skal stole på et enkelt resultat i stedet for å ta det for gitt.
| Felt | Type | Beskrivelse |
|---|---|---|
source
|
string
|
db, fuzzy, llm, eller none. |
confidence
|
string
|
høy, medium, lav, uverifisert eller ukjent, basert på eksempeldata. |
matched_as
|
string
|
For fuzzy match, databaseoppføringen som matchet. Ellers null. |
Feilkoder
Feil returnerer en JSON-body med status: false og en maskinlesbar feilstreng. Match på feil, ikke på meldingen: meldinger er oversatt og kan endres.
| Kode | HTTP | Betydning |
|---|---|---|
missing_key |
401 | API-nøkkel mangler. Legg den til som "key"-parameter eller Authorization: Bearer header. |
invalid_key |
401 | Denne API-nøkkelen er ikke gyldig. |
revoked_key |
401 | Denne API-nøkkelen er tilbakekalt. |
blocked |
403 | Denne kontoen er suspendert. Kontakt support. |
email_not_verified |
403 | E-postadressen til denne kontoen er ikke bekreftet ennå. Åpne bekreftelseslenken vi sendte deg, eller be om en ny fra kontrollpanelet. |
ip_not_allowed |
403 | Forespørsler fra denne IP-adressen er ikke tillatt for denne nøkkelen. |
forbidden |
403 | Du har ikke tillatelse til å utføre denne handlingen. |
no_credits |
402 | Du har brukt opp kredittene dine. Kjøp flere eller vent til det daglige gratiskvotumet tilbakestilles. |
missing_input |
400 | Parameteren "name" er obligatorisk. |
invalid_input |
422 | Parameteren "name" er ikke gyldig. |
too_many_items |
422 | Maksimalt 100 elementer kan sendes i én forespørsel. |
ai_consent_required |
422 | askToAI sender navnet til en tredjeparts AI-leverandør som denne kontoen ikke har godtatt. Se "ai"-feltet for hvem leverandøren er, og aktiver deretter AI-oppslag i dashboardinnstillingene dine. |
unknown_endpoint |
404 | Det finnes ingen endpoint på denne adressen. Kontroller URL-en mot API-dokumentasjonen. |
method_not_allowed |
405 | Dette endepunktet aksepterer ikke DELETE-forespørsler. |
payload_too_large |
413 | Forespørselsbrøden er for stor. |
rate_limited |
429 | For mange forespørsler. Sakt ned og prøv igjen om litt. |
not_ready |
503 | Navndatabasen blir gjenoppbygget. Prøv igjen om en stund. |
server_error |
500 | Noe gikk galt på vår side. Vi er blitt varslet. |
{
"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"
}
Hastighetsbegrensninger
Normal bruk treffer ikke en grense. Grensen finnes for å stoppe en lekket nøkkel fra å bli misbrukt, og den teller per API-nøkkel i stedet for per IP slik at flere kunder på én server ikke forbruker hverandres tilldelinger.
Gjeldende grense: 1 200 forespørsler per minutt per nøkkel. Trenger du mer? Spør og vi øker den på kontoen din.
Hver respons inneholder standard X-RateLimit-Limit og X-RateLimit-Remaining header.
Migrering fra en annen leverandør
Våre responsefelt og parameternavn samsvarer med vanlig konvensjon, så bytte betyr vanligvis å endre én linje: basis-URL-en.
- https://api.other-provider.io/api?name=Ayşe&key=KEY
+ https://namegender.com/api?name=Ayşe&key=KEY
askToAI og forceToGenderize beholder sin opprinnelige stavemåte av akkurat denne grunnen. Hvis et felt du er avhengig av mangler, fortell oss og vi legger det til.
Koder inndataene dine
Navn inneholder mellomrom og ikke-ASCII-tegn. URL-koder verdien før du setter den i en spørringsstreng, eller bruk POST med en JSON-tekst.
Ayşe Yılmaz -> Ay%C5%9Fe%20Y%C4%B1lmaz
محمد -> %D9%85%D8%AD%D9%85%D8%AF
中村 -> %E4%B8%AD%E6%9D%91