Jatka → Yleiskatsaus

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-otsikko (suositeltu)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Mukautettu otsikko
X-Api-Key: ng_live_xxxxxxxxxxxx
Kyselyparametri
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Älä koskaan paljasta avaintasi asiakaspuolen koodissa. Selaimesta tai mobiilisovelluksesta lähtevät kutsut pitäisi ohjata omalla taustalla.

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

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

Tuettu
Araabian kirjoitus

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.

Kiinalaiset merkit

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

Korealainen

Sama sukunimi-ensin -käsittely kuin kiinassa, käyttäen yleisiä korealaisia sukunimiä.

Japanilainen kana

Hiragana ja katakana luetaan oikein (ひろし → Hiroshi).

Kyrillinen

Venäläiset, ukrainalaiset, bulgarialaset ja serbialaset nimet translitteroidaan suoraan.

Devanagari

Hindi-, marathi- ja nepalilaisia nimiä. Käsittelemme sisäisen loppuvokaalin (राहुल → Rahul, ei "Rahula").

Ei tuettu
Japanilainen kanji

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.

Thai

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