Fortsæt → Oversigt

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-header (anbefalet)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Brugerdefineret header
X-Api-Key: ng_live_xxxxxxxxxxxx
Forespørgselsparameter
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Eksponér aldrig din nøgle i kode på klientsiden. Kald fra en browser eller mobilapp skal gå gennem din egen backend.

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

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

Understøttet
Arabisk skrift

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.

Kinesiske tegn

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.

Koreansk

Samme familienavn-først-håndtering som kinesisk, ved brug af almindelige koreanske familienavne.

Japansk kana

Hiragana og katakana læses korrekt (ひろし → Hiroshi).

Kyrillisk

Russiske, ukrainske, bulgarske og serbiske navne transkriberes direkte.

Devanagari

Hindi-, marathi- og nepali-navne. Den medfødte slutvokat håndteres (राहुल → Rahul, ikke "Rahula").

Ikke understøttet
Japansk kanji

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

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