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: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
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 allahttps://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
}
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"
}
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"
}
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.
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.
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.
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.
Samma efternamnshantering som kinesiska, med vanliga koreanska efternamn.
Hiragana och katakana läses korrekt (ひろし → Hiroshi).
Ryska, ukrainska, bulgariska och serbiska namn translittereras direkt.
Hindi-, marathi- och nepalinamn. Den inneboende avslutande vokalen hanteras (राहुल → Rahul, inte "Rahula").
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 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. |
ai_consent_required |
422 | askToAI skickar namn till en AI-leverantör från tredje part som detta konto inte har godkänt. Se "ai"-fältet för vilken leverantör det är, och aktivera sedan AI-uppslag i dina instrumentpanelsinställningar. |
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