REST API -viite
Neljä päätepistettä, yksi vastauksen muoto. Kaikki alla on live tilillä.
https://namegender.com/api
Rekisteröidy ilmaiseksi
Pika-aloitus
Luo avain kojelaudassasi, sitten lähetä ensimmäinen pyyntösi. SDK:ta ei tarvita.
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
Jokainen pääteiste palauttaa saman muodon, joten voit vaihtaa syötteitä ilman jäsentämiskoodia.
Todentaminen
Välitä API-avain kolmella tavalla. Authorization-otsikko on suositeltu: kyselymerkkijonot pääätyvät palvelimen lokeihin ja selaimen historiaan.
Authorization: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Voit rajoittaa avainta tiettyihin IP-osoitteisiin kojelaudasta.
Asiakaskirjastot
Yksi API, neljä syöttötyyppiä ja joukkosovellukset, jotka hallitsevat tiedostoja, joissa muut palvelut pettävät.
Näytä kaikkihttps://namegender.com/api
Sukupuoli nimestä
Hyväksyy etunimen tai koko nimen. Arvonimet, keskinimet ja sukunimet poistetaan ennen hakua, joten "Dr. Ayşe Yılmaz" ja "Ayşe" antavat saman tuloksen.
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
name
pakollinen
|
string
|
Luokiteltava nimi. Etunimi tai koko nimi. |
country
valinnainen
|
string
|
ISO 3166-1 alpha-2 maatunnus. Parantaa tarkkuutta nimillä, joiden sukupuoli vaihtelee alueittain, kuten Andrea (mies Italiassa, nainen Saksassa). |
askToAI
valinnainen
|
boolean
|
Palaa kielimalliin, kun nimeä ei ole tietokannassa. Maksaa yhden lisähyvityksen. |
forceToGenderize
valinnainen
|
boolean
|
Palauta todennäköisin sukupuoli, vaikka luottamus olisi kynnyksen alapuolella. Oletuksena pois päältä, koska varmaksi esitetty satunnainen vastaus on huonompi kuin ei vastausta. |
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
Sukupuoli sähköpostista
Poistaa henkilön sähköpostiosoitteen paikallisesta osasta ja luokittelee sen. "ayse.yilmaz84@example.com" vastaa Ayşe:ta.
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
email
pakollinen
|
string
|
Sähköpostiosoite. Vain @ edellä oleva osa käytetään. |
country
valinnainen
|
string
|
ISO 3166-1 alpha-2 maatunnus. Parantaa tarkkuutta nimillä, joiden sukupuoli vaihtelee alueittain, kuten Andrea (mies Italiassa, nainen Saksassa). |
askToAI
valinnainen
|
boolean
|
Palaa kielimalliin, kun nimeä ei ole tietokannassa. Maksaa yhden lisähyvityksen. |
forceToGenderize ei ole saatavilla täällä: nimi poimitaan sisäisesti, joten tuloksen pakottaminen epävarmaan poimimiseen yhdistää kaksi arvailua.
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
Sukupuoli käyttäjänimestä
Käsittelee camelCase:n, snake_case:n, jälkimmäiset numerot ja johtavat @ -merkit. "AyseYilmaz84" vastaa Ayşe:ta.
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
username
pakollinen
|
string
|
Käyttäjänimi tai tunnus. Johtava @ jätetään huomioimatta. |
country
valinnainen
|
string
|
ISO 3166-1 alpha-2 maatunnus. Parantaa tarkkuutta nimillä, joiden sukupuoli vaihtelee alueittain, kuten Andrea (mies Italiassa, nainen Saksassa). |
askToAI
valinnainen
|
boolean
|
Palaa kielimalliin, kun nimeä ei ole tietokannassa. Maksaa yhden lisähyvityksen. |
forceToGenderize
valinnainen
|
boolean
|
Palauta todennäköisin sukupuoli, vaikka luottamus olisi kynnyksen alapuolella. Oletuksena pois päältä, koska varmaksi esitetty satunnainen vastaus on huonompi kuin ei vastausta. |
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
Joukkokysely
Lähetä jopa 100 nimeä yhdessä pyynnössä. Käytä tätä silmukan sijaan: yksi joukkokyse 100 nimelle on yhden matkan ja yhden deduploidun haun verran.
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
names
pakollinen
|
string[]
|
Nimien taulukko. Enintään 100 kohde. |
type
valinnainen
|
string
|
Mitä kohteet ovat: nimi, sähköposti tai käyttäjänimi. Oletuksena nimi. |
country
valinnainen
|
string
|
Sovellettu kaikkiin pyynnön kohteisiin. |
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" }
]
}
Tulokset palautetaan samassa järjestyksessä kuin lähetsit ne. Hyvitykset veloitetaan nimen mukaan, ja koko pyyntö hylätään ennen mitään työtä, jos saldosi ei ole riittävä, joten et koskaan saa puoliksi käsiteltyä erää.
Yhteenvetolohko näyttää osumaprosentin yhdellä silmäyksellä, joten voit päättää, tarvitseeko syöte puhdistusta ennen loput käsittelyä.
https://namegender.com/api/me
Tili ja kiintiö
Tarkista jäljellä oleva saldo kuluttamatta hyvitystä.
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
}
Ei-latinalaiset kirjoitusjärjestelmät
Lähetä nimi sen omassa kirjoitusjärjestelmässä, ja muunnamme sen vertailuaineistoon. Ei ylimääräisiä parametreja: tunnistamme kirjoitusjärjestelmän ja valitsemme sille sopivan strategian.
Araabian kirjoitus jättää lyhyet vokaalit pois, joten محمد translitteroidaan muotoon "mhmd" kun taas aineistomme sisältää "muhammed". Käytämme konsonanttikuvioita vastaavuuden määrittämiseen ja säilytämme feminiinin ة -merkin, joten خالد (Khalid) ja خالدة (Khalida) pysyvät erillään. Kattaa myös persia- ja urdunkielisiä nimiä arabian kirjoituksella.
Muunnettu pinyin-muotoon. Sukunimi tulee ensin kiinaksi, joten 李明 on sukunimeltään 李 (Li) ja etunimeltään 明 (Ming) — poistamme sukunimen ennen hakua. Yksittäinen merkki on täydellinen etunimi ja käsitellään yhtenä.
Sama sukunimi-ensin -käsittely kuin kiinassa, käyttäen yleisiä korealaisia sukunimiä.
Hiragana ja katakana luetaan oikein (ひろし → Hiroshi).
Venäläiset, ukrainalaiset, bulgarialaset ja serbialaset nimet translitteroidaan suoraan.
Hindi-, marathi- ja nepalilaisia nimiä. Käsittelemme sisäisen loppuvokaalin (राहुल → Rahul, ei "Rahula").
Japanilaisten kanjien ja kiinalaisten merkkien Unicode-alue on sama, joten emme voi erottaa niitä pelkästään merkkien perusteella. Han-syöte tulkitaan kiinaksi: kanji-nimelle, jota meillä ei ole tallennettu sellaisenaan, käytetään mandariinin lukemista, mikä japanilaisilla nimillä on yleensä väärä (健太 lukemisena on "jian tai" kun nimi on Kenta). Meillä olevat nimet täsmäävät täsmälleen ja ovat oikein. Lähetä japanilaiset nimet kananalla tai latinaksi varmuuden vuoksi.
Thain kieli jättää vokaalit pois kuten arabia ja tarvitsee oman vastaavuuskerroksen. Ei vielä rakennettu, joten nämä palauttavat 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" }
Kun emme voi muuntaa scriptiä lainkaan, vastaus on gender: null ja source: none. Tarkista source-kenttä: script tarkoittaa, että teimme transliteraation, db tarkoittaa, että täsmäsimme lähettämäsi merkit suoraan. Näillä on eri luottamustaso, ja näytämme sinulle, kumman sait.
Vastauskentät
Identtiset kaikissa päätepisteissä.
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
status
|
boolean
|
false, kun pyyntö epäonnistui. Tarkista tämä ensin. |
used_credits
|
integer
|
Kredittejä, joita tämä pyyntö kulutti. |
remaining_credits
|
integer
|
Kredittejä jäljellä tämän pyynnön jälkeen. |
expires
|
null
|
Aina null. Ostetut kredittit eivät vanhene. |
q
|
string
|
Syötteesi, toistettuna muuttumattomana. |
name
|
string
|
Nimi, jonka etsimme otsikkoiden ja sukunimien poistamisen jälkeen. |
gender
|
string
|
male, female tai null, kun emme ole tarpeeksi varmoja. |
country
|
string
|
Maa, josta tilastot tulevat, tai null globaalille aggregaatille. |
total_names
|
integer
|
Kuinka monen todellisen henkilön perusteella tämä vastaus on. 0 tarkoittaa, että lähde toimittaa suhteellisia osuuksia eikä laskuja, ei että vastaus olisi heikko. |
probability
|
integer
|
Luottamus ilmoitettuun sukupuoleen, 50–100. 0, kun sukupuoli on null. |
duration
|
string
|
Palvelimen puolen käsittelyaika. |
Kaksi kenttää, joita muut palvelut eivät tarjoa
source kertoo, mistä vastaus tuli: vertailutietokannasta, epätarkkaan vastaavuudesta tai tekoälyfallback-ratkaisusta. matched_as nimeää tietueen, johon epätarkka vastaavuus osui. Yhdessä ne antavat sinulle mahdollisuuden päättää, kuinka paljon yksittäiseen tulokseen voi luottaa ilman että hyväksyt sen sellaisenaan.
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
source
|
string
|
db, fuzzy, llm tai none. |
confidence
|
string
|
korkea, keskitaso, matala, vahvistamaton tai tuntematon näyttötodisteiden perusteella. |
matched_as
|
string
|
Epätarkan vastaavuuden tapauksessa tietokannan merkintä, joka osui. Muutoin null. |
Virheellä
Virheet palauttavat JSON-rungon, jossa on status: false ja koneluettava virmeviesti. Vertaa virhettä, älä viestiä: viestit käännetään ja voivat muuttua.
| Koodi | HTTP | Merkitys |
|---|---|---|
missing_key |
401 | API key puuttuu. Välitä se "key"-parametrina tai Authorization: Bearer headerina. |
invalid_key |
401 | Tämä API key ei ole kelvollinen. |
revoked_key |
401 | Tämä API key on peruutettu. |
blocked |
403 | Tämä tili on jäädytetty. Ota yhteyttä tukeen. |
email_not_verified |
403 | Tämän tilin sähköpostiosoitetta ei ole vielä vahvistettu. Avaa lähettämämme vahvistuslinkki tai pyydä uusi hallintapaneelista. |
ip_not_allowed |
403 | Pyyntöjä tästä IP-osoitteesta ei sallita tälle avaimelle. |
forbidden |
403 | Sinulla ei ole oikeutta suorittaa tätä toimintoa. |
no_credits |
402 | Krediitit ovat lopussa. Osta lisää tai odota päivittäisen ilmaisen kiintiösi nollautumista. |
missing_input |
400 | Parametri "name" on pakollinen. |
invalid_input |
422 | Parametri "name" ei ole kelvollinen. |
too_many_items |
422 | Yhteen pyyntöön voi sisältyä enintään 100 kohdetta. |
ai_consent_required |
422 | askToAI lähettää nimen kolmannen osapuolen tekoäly-palveluntarjoajalle, johon tämä tili ei ole antanut suostumusta. Katso "ai"-kenttää, jotta näet, kuka palveluntarjoaja on, ja ota sitten tekoäly-haut käyttöön kojelautasi asetuksista. |
unknown_endpoint |
404 | Tässä polkussa ei ole endpointiä. Tarkista URL API-dokumentaatiosta. |
method_not_allowed |
405 | Tämä endpoint ei hyväksy DELETE-pyyntöjä. |
payload_too_large |
413 | Pyyntörunko on liian suuri. |
rate_limited |
429 | Liian monta pyyntöä. Hidasta vauhtia ja yritä uudelleen hetken kuluttua. |
not_ready |
503 | Nimen tietokantaa päivitetään. Yritä hetken kuluttua uudelleen. |
server_error |
500 | Jotain meni pieleen palvelimella. Olemme saaneet ilmoituksen. |
{
"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"
}
Nopeustrajoitukset
Normaali käyttö ei osu rajoitukseen. Raja on olemassa paljastuneen avaimen väärinkäytön pysäyttämiseksi, ja se lasketaan API-avainta kohden eikä IP-osoitetta kohden, jotta useat asiakkaat samalla palvelimella eivät kuluta toistensa kvantiteettia.
Nykyinen raja: 1 200 pyyntöä minuutissa avaimella. Tarvitset lisää? Kysy niin nostamme rajan tilillesi.
Jokainen vastaus sisältää tavanomaiset X-RateLimit-Limit ja X-RateLimit-Remaining headerit.
Siirtyminen toiselta palveluntarjoajalta
Vastauskentämme ja parametrinimemme noudattavat yleistä käytäntöä, joten siirtyminen tarkoittaa yleensä yhden rivin muuttamista: perusosoitetta.
- https://api.other-provider.io/api?name=Ayşe&key=KEY
+ https://namegender.com/api?name=Ayşe&key=KEY
askToAI ja forceToGenderize säilyttävät alkuperäisen kirjoitusasun täsmälleen tästä syystä. Jos kenttä, johon luotit, puuttuu, kerro meille ja lisäämme sen.
Koodaa syötteesi
Nimet sisältävät välilyöntejä ja muita kuin ASCII-merkkejä. URL-koodaa arvo ennen sen lisäämistä kyselymerkkijonoon, tai käytä POST-pyyntöä JSON-rungolla.
Ayşe Yılmaz -> Ay%C5%9Fe%20Y%C4%B1lmaz
محمد -> %D9%85%D8%AD%D9%85%D8%AF
中村 -> %E4%B8%AD%E6%9D%91