Fortsätt → Översikt

REST API-referens

Fyra slutpunkter, en svarsstruktur. Allt nedan är live mot ditt konto.

https://namegender.com/api Registrera dig gratis

Snabbstart

Skapa en nyckel i din dashboard och skicka din första förfrågan. Inget SDK krävs.

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

Varje slutpunkt returnerar samma struktur, så du kan byta inmatning utan att ändra din parsningskod.

Autentisering

Skicka din API-nyckel på något av tre sätt. Authorization-headern rekommenderas: frågesträngar hamnar i serverloggar och webbläsarhistorik.

Authorization-header (rekommenderas)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Anpassad header
X-Api-Key: ng_live_xxxxxxxxxxxx
Frågeparameter
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Exponera aldrig din nyckel i kod på klientsidan. Anrop från en webbläsare eller mobilapp bör gå genom din egen backend.

Du kan begränsa en nyckel till specifika IP-adresser från dashboarden.

Klientbibliotek

Ett API, fyra indatatyper och massverktyg som hanterar filer som andra tjänster misslyckas med.

Visa alla
GET · POST https://namegender.com/api

Kön från namn

Accepterar förnamn eller fullständigt namn. Titlar, mellannamn och efternamn tas bort före sökning, så "Dr. Ayşe Yılmaz" och "Ayşe" ger samma svar.

Parameter Typ Beskrivning
name
obligatorisk
string Namnet som ska klassificeras. Förnamn eller fullständigt namn.
country
valfri
string ISO 3166-1 alpha-2-landskod. Förbättrar noggrannheten för namn vars kön skiljer sig åt mellan regioner, såsom Andrea (man i Italien, kvinna i Tyskland).
askToAI
valfri
boolean Återgå till en språkmodell när namnet inte finns i databasen. Kostar en extra kredit.
forceToGenderize
valfri
boolean Returnera det mest sannolika könet även när konfidens ligger under tröskeln. Inaktiverat som standard, eftersom ett mynt-flip-svar presenterat som säkert är värre än inget 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 från e-post

Extraherar personen från adressens lokala del och klassificerar sedan det. "ayse.yilmaz84@example.com" matchas till Ayşe.

Parameter Typ Beskrivning
email
obligatorisk
string E-postadressen. Endast delen före @ används.
country
valfri
string ISO 3166-1 alpha-2-landskod. Förbättrar noggrannheten för namn vars kön skiljer sig åt mellan regioner, såsom Andrea (man i Italien, kvinna i Tyskland).
askToAI
valfri
boolean Återgå till en språkmodell när namnet inte finns i databasen. Kostar en extra kredit.

forceToGenderize är inte tillgänglig här: namnet extraheras internt, så att tvinga ett resultat på en osäker extraktion kombinerar två gissningar.

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 från användarnamn

Hanterar camelCase, snake_case, avslutande siffror och inledande @-tecken. "AyseYilmaz84" matchas till Ayşe.

Parameter Typ Beskrivning
username
obligatorisk
string Användarnamnet eller handtaget. Ett inledande @ ignoreras.
country
valfri
string ISO 3166-1 alpha-2-landskod. Förbättrar noggrannheten för namn vars kön skiljer sig åt mellan regioner, såsom Andrea (man i Italien, kvinna i Tyskland).
askToAI
valfri
boolean Återgå till en språkmodell när namnet inte finns i databasen. Kostar en extra kredit.
forceToGenderize
valfri
boolean Returnera det mest sannolika könet även när konfidens ligger under tröskeln. Inaktiverat som standard, eftersom ett mynt-flip-svar presenterat som säkert är värre än inget 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

Bulkförfrågan

Skicka upp till 100 namn i en förfrågan. Använd detta istället för att loopa: ett bulkanrop för 100 namn är en enda rundresa och en enda deduplicerad sökning.

Parameter Typ Beskrivning
names
obligatorisk
string[] Rad med namn. Maximalt 100 objekt.
type
valfri
string Vad objekten är: namn, e-post eller användarnamn. Standard är namn.
country
valfri
string Tillämpas på varje objekt i förfrågan.
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" }
  ]
}

Resultat kommer tillbaka i samma ordning som du skickade dem. Krediter debiteras per namn, och hela förfrågan avvisas innan något arbete påbörjas om ditt saldo är otillräckligt, så du får aldrig en delvis bearbetad batch.

Sammanfattningsblocket visar matchgraden på en blick, så du kan avgöra om inmatningen behöver rengöring innan du bearbetar resten.

GET https://namegender.com/api/me

Konto & kvot

Kontrollera ditt återstående saldo utan att använda 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
}

Icke-latinska skript

Skicka ett namn i sitt eget skript och vi kopplar det till referensdata. Ingen extra parameter krävs: vi detekterar skriptet och väljer rätt strategi för det.

Stöds
Arabiska skript

Arabisk skrift utelämnar korta vokaler, så محمد translittereras till "mhmd" medan vår data innehåller "muhammed". Vi matchar på konsonantmönstret istället och bevarar den feminina ة-markören så خالد (Khalid) och خالدة (Khalida) hålls isär. Täcker även persiska och urdunamn skrivna i arabiska skript.

Kinesiska tecken

Omvandlat till Pinyin. Efternamnet kommer först på kinesiska, så 李明 har efternamnet 李 (Li) och förnamnet 明 (Ming) — vi tar bort efternamnet innan sökningen. Ett enskilt tecken är ett komplett förnamn och hanteras som ett.

Koreansk

Samma efternamnshantering som kinesiska, med vanliga koreanska efternamn.

Japansk kana

Hiragana och katakana läses korrekt (ひろし → Hiroshi).

Kyrillisk

Ryska, ukrainska, bulgariska och serbiska namn translittereras direkt.

Devanagari

Hindi-, marathi- och nepalinamn. Den inneboende avslutande vokalen hanteras (राहुल → Rahul, inte "Rahula").

Stöds inte
Japansk kanji

Japanska kanji och kinesiska tecken upptar samma Unicode-intervall, så vi kan inte skilja dem åt från tecknen själva. Han-inmatning läses som kinesisk: ett kanji-namn som vi inte redan har ordagrant får sin mandarin-uttal, vilket för ett japanskt namn vanligtvis är fel (健太 läses som "jian tai" när namnet är Kenta). Namnet vi har matchas exakt och är korrekt. Skicka japanska namn i kana eller Latin för att vara säker.

Thai

Thai utelämnar vokaler ungefär som arabiska och behöver sitt eget matchningslager. Inte byggd ännu, så dessa returnerar 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 inte kan transkribera ett skriftsystem alls, är svaret gender: null med source: none. Kontrollera source-fältet: script betyder att vi translittererade, db betyder att vi matchade tecknen du skickade direkt. De två har olika konfidensnivå, och vi visar dig vilken du fick.

Responsefält

Identiska för alla endpoints.

Fält Typ Beskrivning
status boolean false när förfrågan misslyckades. Kontrollera detta först.
used_credits integer Krediter som denna förfrågan förbrukade.
remaining_credits integer Krediter kvar efter denna förfrågan.
expires null Alltid null. Köpta krediter upphör aldrig.
q string Din inmatning, återgiven oförändrad.
name string Namnet vi faktiskt slogs upp efter att ha tagit bort titlar och efternamn.
gender string male, female, eller null när vi inte är tillräckligt säkra.
country string Det land statistiken kommer från, eller null för det globala aggregatet.
total_names integer Hur många riktiga personer detta svar baseras på. 0 betyder att källan ger proportioner istället för antal, inte att svaret är svagt.
probability integer Säkerhet i angivet kön, 50 till 100. 0 när kön är null.
duration string Serversidans bearbetningstid.

Två fält som andra tjänster inte erbjuder

source talar om var svaret kommer från: referensdatabasen, en fuzzy match eller AI-reserv. matched_as namnger den post som en fuzzy match träffade. Tillsammans låter de dig bedöma hur mycket du kan lita på ett enskilt resultat.

Fält Typ Beskrivning
source string db, fuzzy, llm, eller none.
confidence string högt, medel, lågt, overifierat eller okänt, baserat på provdata.
matched_as string För en fuzzy match, databasposten som matchade. Annars null.

Felkoder

Fel returnerar en JSON-body med status: false och en maskinläsbar feltext. Matcha på felet, inte på meddelandet: meddelanden översätts och kan ändras.

Kod HTTP Betydelse
missing_key 401 API-nyckel saknas. Skicka den som "key"-parameter eller Authorization: Bearer header.
invalid_key 401 Denna API-nyckel är inte giltig.
revoked_key 401 Denna API-nyckel har återkallats.
blocked 403 Detta konto har avaktiverats. Kontakta support.
email_not_verified 403 Det här kontots e-postadress är inte bekräftad ännu. Öppna bekräftelselänken vi skickade, eller begär en ny från din kontrollpanel.
ip_not_allowed 403 Begäranden från denna IP-adress är inte tillåtna för denna nyckel.
forbidden 403 Du är inte behörig att utföra denna åtgärd.
no_credits 402 Du har slut på krediter. Köp mer eller vänta på att din dagliga gratiskvot återställs.
missing_input 400 Parametern "name" är obligatorisk.
invalid_input 422 Parametern "name" är inte giltig.
too_many_items 422 Högst 100 objekt kan skickas i en begäran.
unknown_endpoint 404 Det finns ingen endpoint på denna sökväg. Kontrollera URL:en mot API-dokumentationen.
method_not_allowed 405 Denna endpoint accepterar inte DELETE-förfrågningar.
payload_too_large 413 Denna förfrågan är för stor.
rate_limited 429 För många begäranden. Vänta en stund och försök igen.
not_ready 503 Namnsdatabasen uppdateras. Försök igen om en stund.
server_error 500 Något gick fel på vår sida. Vi har underrättats.
{
  "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"
}

Hastighetsgränser

Normal användning träffar inte en gräns. Taket finns för att stoppa en läckt nyckel från missbruk, och det räknas per API-nyckel snarare än per IP så att flera kunder på en server inte konsumerar varandras tilldelning.

Nuvarande gräns: 1 200 förfrågningar per minut per nyckel. Behöver du mer? Fråga och vi höjer det på ditt konto.

Varje respons innehåller standardheaderna X-RateLimit-Limit och X-RateLimit-Remaining.

Migrera från en annan leverantör

Våra responsefält och parameternamn följer den gemensamma konventionen, så att byta leverantör innebär vanligtvis att ändra en rad: bas-URL:en.

- https://api.other-provider.io/api?name=Ayşe&key=KEY
+ https://namegender.com/api?name=Ayşe&key=KEY

askToAI och forceToGenderize behåller sin ursprungliga stavning för exakt detta skäl. Om ett fält du förlitar dig på saknas, meddela oss och vi lägger till det.

Koda ditt input

Namn innehåller mellanslag och icke-ASCII-tecken. URL-koda värdet innan du sätter det i en frågesträng, eller använd POST med en JSON-brödtext.

Ayşe Yılmaz  ->  Ay%C5%9Fe%20Y%C4%B1lmaz
محمد          ->  %D9%85%D8%AD%D9%85%D8%AF
中村           ->  %E4%B8%AD%E6%9D%91