REST API-reference
Fire endpoints, én responsform. Alt nedenfor er live mod din konto.
https://namegender.com/api
Tilmeld dig gratis
Hurtig start
Opret en nøgle i dit dashboard, og send derefter din første anmodning. Du behøver ingen SDK.
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
Hver endpoint returnerer samme form, så du kan skifte input uden at ændre din parsing-kode.
Godkendelse
Angiv din API-nøgle på en af tre måder. Authorization-headeren anbefales: forespørgselsstrenge ender i serverlogfiler og browserhistorik.
Authorization: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Du kan begrænse en nøgle til specifikke IP-adresser fra dashboardet.
Klientbiblioteker
Ét API, fire inputtyper og bulkværktøjer, der håndterer filer, som andre services fejler på.
Se allehttps://namegender.com/api
Køn fra navn
Accepterer et fornavn eller fuldt navn. Titler, mellemnavne og efternavne fjernes før opslag, så "Dr. Ayşe Yılmaz" og "Ayşe" giver samme svar.
| Parameter | Type | Beskrivelse |
|---|---|---|
name
påkrævet
|
string
|
Navnet til klassificering. Fornavn eller fuldt navn. |
country
valgfrit
|
string
|
ISO 3166-1 alpha-2 landekode. Forbedrer nøjagtigheden for navne hvis køn varierer efter region, såsom Andrea (mand i Italien, kvinde i Tyskland). |
askToAI
valgfrit
|
boolean
|
Fald tilbage til en sprogmodel, når navnet ikke er i databasen. Koster én ekstra kredit. |
forceToGenderize
valgfrit
|
boolean
|
Returnér det mest sandsynlige køn, selv når tilliden er under tærsklen. Slået fra som standard, fordi et mønt-flip-svar præsenteret som sikkert er værre end intet 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
Køn fra e-mail
Udtrækker personen fra e-mailadressens lokale del og klassificerer derefter det. "ayse.yilmaz84@example.com" opløses til Ayşe.
| Parameter | Type | Beskrivelse |
|---|---|---|
email
påkrævet
|
string
|
E-mailadresse. Kun delen før @ bruges. |
country
valgfrit
|
string
|
ISO 3166-1 alpha-2 landekode. Forbedrer nøjagtigheden for navne hvis køn varierer efter region, såsom Andrea (mand i Italien, kvinde i Tyskland). |
askToAI
valgfrit
|
boolean
|
Fald tilbage til en sprogmodel, når navnet ikke er i databasen. Koster én ekstra kredit. |
forceToGenderize er ikke tilgængelig her: navnet udtrækkes internt, så at tvinge et resultat på en usikker udtrækning sammensætter to gæt.
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
Køn fra brugernavn
Håndterer camelCase, snake_case, efterfølgende cifre og førende @-tegn. "AyseYilmaz84" opløses til Ayşe.
| Parameter | Type | Beskrivelse |
|---|---|---|
username
påkrævet
|
string
|
Brugernavnet eller håndtaget. Et førende @ ignoreres. |
country
valgfrit
|
string
|
ISO 3166-1 alpha-2 landekode. Forbedrer nøjagtigheden for navne hvis køn varierer efter region, såsom Andrea (mand i Italien, kvinde i Tyskland). |
askToAI
valgfrit
|
boolean
|
Fald tilbage til en sprogmodel, når navnet ikke er i databasen. Koster én ekstra kredit. |
forceToGenderize
valgfrit
|
boolean
|
Returnér det mest sandsynlige køn, selv når tilliden er under tærsklen. Slået fra som standard, fordi et mønt-flip-svar præsenteret som sikkert er værre end intet 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
Masseanmodning
Send op til 100 navne i en anmodning. Brug dette i stedet for at loope: et enkelt masseopkald for 100 navne er en enkelt rundtur og et enkelt dedupliseret opslag.
| Parameter | Type | Beskrivelse |
|---|---|---|
names
påkrævet
|
string[]
|
Navnearray. Maksimalt 100 elementer. |
type
valgfrit
|
string
|
Hvad elementerne er: navn, e-mail eller brugernavn. Standard er navn. |
country
valgfrit
|
string
|
Gælder for hvert element i anmodningen. |
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" }
]
}
Resultaterne kommer tilbage i samme rækkefølge som du sendte dem. Kreditter opkræves pr. navn, og hele anmodningen afvises før noget arbejde, hvis din saldo er for lav, så du får aldrig en halvfærdig batch.
Opsummeringsblokkene viser matchprocenten på et øjeblik, så du kan afgøre, om inputtet skal rengøres, før du behandler resten.
https://namegender.com/api/me
Konto og kvota
Kontrollér din resterende saldo uden at bruge en kredit.
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 skrifter
Send et navn i dets eget skriftsystem, og vi forbinder det til referencedata. Ingen ekstra parameter: vi registrerer skriftsystemet automatisk og vælger den rigtige strategi.
Arabisk skrift udelader korte vokaler, så محمد transkriberes til "mhmd" mens vores data indeholder "muhammed". Vi matcher på konsonantmønstret i stedet og bevarer det feminine ة-tegn, så خالد (Khalid) og خالدة (Khalida) holdes adskilt. Dækker også persiske og urdu-navn skrevet i arabisk skrift.
Konverteret til Pinyin. Familienavnet kommer først på kinesisk, så 李明 har familienavnet 李 (Li) og fornavnet 明 (Ming) — vi fjerner familienavnet før opslag. Et enkelt tegn udgør et komplet fornavn og behandles som ét.
Samme familienavn-først-håndtering som kinesisk, ved brug af almindelige koreanske familienavne.
Hiragana og katakana læses korrekt (ひろし → Hiroshi).
Russiske, ukrainske, bulgarske og serbiske navne transkriberes direkte.
Hindi-, marathi- og nepali-navne. Den medfødte slutvokat håndteres (राहुल → Rahul, ikke "Rahula").
Japanske kanji og kinesiske tegn optager samme Unicode-område, så vi kan ikke skelne dem fra tegnene alene. Han-input læses som kinesisk: et kanji-navn, som vi ikke allerede har ordret, får sin Mandarin-udtale, hvilket for et japansk navn normalt er forkert (健太 læses som "jian tai", når navnet er Kenta). NavneDe navne, som vi har, matcher præcist og er korrekte. Send japanske navne i kana eller Latin for at være sikker.
Thai udelader vokaler meget som arabisk og kræver sit eget matchinglag. Ikke implementeret endnu, 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 slet ikke kan oversætte et skript, er svaret køn: null med kilde: none. Kontroller kildefeltet: script betyder, at vi translittererede, db betyder, at vi matchede de tegn, du sendte, direkte. De to har forskellige konfidensværdier, og vi viser dig, hvilken du fik.
Responsfelter
Identisk på alle endpoints.
| Felt | Type | Beskrivelse |
|---|---|---|
status
|
boolean
|
false når anmodningen fejlede. Tjek dette først. |
used_credits
|
integer
|
Kreditter som denne anmodning forbrugte. |
remaining_credits
|
integer
|
Kreditter tilbage efter denne anmodning. |
expires
|
null
|
Altid null. Købte kreditter udløber ikke. |
q
|
string
|
Dit input, gengit uændret. |
name
|
string
|
Det navn vi faktisk slog op efter at have fjernet titler og efternavne. |
gender
|
string
|
male, female eller null når vi ikke er sikre nok til at sige det. |
country
|
string
|
Det land statistikken kommer fra, eller null for det globale aggregat. |
total_names
|
integer
|
Hvor mange rigtige mennesker dette svar er baseret på. 0 betyder kilden giver proportioner snarere end antal, ikke at svaret er svagt. |
probability
|
integer
|
Tillid til det angivne køn, 50 til 100. 0 når køn er null. |
duration
|
string
|
Serversidets behandlingstid. |
To felter som andre tjenester ikke giver dig
source fortæller dig hvor svaret kommer fra: referencedatabasen, et fuzzy match eller AI-fallbacket. matched_as navngiver det entry som fuzzy match landede på. Sammen lader de dig bestemme hvor meget du skal stole på et enkelt resultat i stedet for at tage det for givet.
| Felt | Type | Beskrivelse |
|---|---|---|
source
|
string
|
db, fuzzy, llm eller none. |
confidence
|
string
|
høj, medium, lav, uverificeret eller ukendt baseret på stikprøvebevis. |
matched_as
|
string
|
Ved et fuzzy match, den databaseentry som matchede. Ellers null. |
Fejlkoder
Fejl returnerer en JSON-body med status: false og en maskinlæsbar fejlstreng. Match på fejlen, ikke på beskeden: beskeder oversættes og kan ændres.
| Kode | HTTP | Betydning |
|---|---|---|
missing_key |
401 | API-nøgle mangler. Send den som "key"-parameter eller som Authorization: Bearer header. |
invalid_key |
401 | Denne API-nøgle er ikke gyldig. |
revoked_key |
401 | Denne API-nøgle er blevet tilbagekaldt. |
blocked |
403 | Denne konto er blevet suspenderet. Kontakt support. |
email_not_verified |
403 | Denne kontos e-mailadresse er endnu ikke bekræftet. Åbn bekræftelseslinket, vi har sendt dig, eller bed om et nyt fra dit kontrolpanel. |
ip_not_allowed |
403 | Anmodninger fra denne IP-adresse er ikke tilladt for denne nøgle. |
forbidden |
403 | Du har ikke tilladelse til at udføre denne handling. |
no_credits |
402 | Du er løbet tør for kreditter. Køb flere eller vent til dit daglige gratiskvoter nulstilles. |
missing_input |
400 | Parameteren "name" er påkrævet. |
invalid_input |
422 | Parameteren "name" er ikke gyldig. |
too_many_items |
422 | Maksimalt 100 elementer kan sendes i en enkelt anmodning. |
ai_consent_required |
422 | askToAI sender navnet til en tredjepartsai-udbyder, som denne konto ikke har accepteret. Se "ai"-feltet for at se, hvilken udbyder det er, og aktiver derefter AI-opslag i dine dashboardindstillinger. |
unknown_endpoint |
404 | Der findes intet endpoint på denne sti. Kontroller URL'en mod API-dokumentationen. |
method_not_allowed |
405 | Dette endpoint accepterer ikke DELETE-anmodninger. |
payload_too_large |
413 | Anmodningens brødtekst er for stor. |
rate_limited |
429 | For mange anmodninger. Sænk tempoet og prøv igen om lidt. |
not_ready |
503 | Navnedatabasen bliver genopbygget. Prøv igen om et øjeblik. |
server_error |
500 | Noget gik galt på vores side. Vi er blevet underrettet. |
{
"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"
}
Ratebegrænsninger
Normal brug rammer ikke en grænse. Loftet eksisterer for at stoppe en lækket nøgle fra at blive misbrugt, og det tælles pr. API-nøgle snarere end pr. IP, så flere kunder på én server ikke forbruger hinanden's tilladelighed.
Nuværende grænse: 1.200 anmodninger pr. minut pr. nøgle. Behov for mere? Spørg og vi hæver det på din konto.
Hver response indeholder standard X-RateLimit-Limit og X-RateLimit-Remaining headers.
Migration fra en anden udbyder
Vores responsfelter og parametrnavne følger den almindelige konvention, så skift betyder normalt at ændre é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 bevarer deres oprindelige stavning af præcis denne grund. Hvis et felt du er afhængig af mangler, fortæl os og vi vil tilføje det.
Kodér dit input
Navne indeholder mellemrum og ikke-ASCII-tegn. URL-kodér værdien før du putter den i en query string, eller brug POST med en JSON-body.
Ayşe Yılmaz -> Ay%C5%9Fe%20Y%C4%B1lmaz
محمد -> %D9%85%D8%AD%D9%85%D8%AF
中村 -> %E4%B8%AD%E6%9D%91