Fortsett → Oversikt

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-header (anbefalt)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Egendefinert header
X-Api-Key: ng_live_xxxxxxxxxxxx
Søkeparameter
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Eksponér aldri nøkkelen din i klientkode. Kall fra en nettleser eller mobilapp bør gå gjennom din egen backend.

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

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

Støttet
Arabisk skrift

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.

Kinesiske tegn

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.

Koreansk

Samme familienavn-først-håndtering som kinesisk, med vanlige koreanske familienavn.

Japansk kana

Hiragana og katakana leses korrekt (ひろし → Hiroshi).

Kyrillisk

Russiske, ukrainske, bulgarske og serbiske navn translittereres direkte.

Devanagari

Hindi-, marathi- og nepalske navn. Den iboende sluttstavelsen håndteres (राहुल → Rahul, ikke "Rahula").

Ikke støttet
Japansk kanji

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

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