Συνέχεια → Επισκόπηση

Αναφορά REST API

Τέσσερα endpoint, ένα σχήμα απόκρισης. Όλα παρακάτω είναι ενεργά σε λογαριασμό σας.

https://namegender.com/api Δωρεάν εγγραφή

Γρήγορη έναρξη

Δημιουργήστε ένα κλειδί στον πίνακα ελέγχου σας, μετά στείλτε το πρώτο αίτημά σας. Δεν απαιτείται SDK.

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

Κάθε endpoint επιστρέφει το ίδιο σχήμα, οπότε μπορείτε να αλλάξετε εισόδους χωρίς να αλλάξετε τον κώδικα ανάλυσής σας.

Έλεγχος ταυτότητας

Περάστε το API key σας με έναν από τρεις τρόπους. Συνιστάται η κεφαλίδα Authorization: τα query string καταλήγουν στα server logs και στο ιστορικό του περιηγητή.

Κεφαλίδα Authorization (συνιστάται)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Προσαρμοσμένη κεφαλίδα
X-Api-Key: ng_live_xxxxxxxxxxxx
Παράμετρος query
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Ποτέ μην εκθέσετε το κλειδί σας στον κώδικα πελάτη. Οι κλήσεις από περιηγητή ή εφαρμογή κινητού θα πρέπει να διέρχονται από το δικό σας backend.

Μπορείτε να περιορίσετε ένα κλειδί σε συγκεκριμένες διευθύνσεις IP από τον πίνακα ελέγχου.

Βιβλιοθήκες πελάτη

Ένα API, τέσσερις τύποι εισόδου και εργαλεία μαζικής επεξεργασίας που χειρίζονται αρχεία που άλλες υπηρεσίες αποτυγχάνουν.

Προβολή όλων
GET · POST https://namegender.com/api

Φύλο από όνομα

Δέχεται ένα όνομα ή ένα πλήρες όνομα. Οι τίτλοι, τα μεσαία ονόματα και τα επώνυμα αφαιρούνται πριν την αναζήτηση, οπότε "Dr. Ayşe Yılmaz" και "Ayşe" δίνουν την ίδια απάντηση.

Παράμετρος Τύπος Περιγραφή
name
υποχρεωτικό
string Το όνομα προς ταξινόμηση. Όνομα ή πλήρες όνομα.
country
προαιρετικό
string Κωδικός χώρας ISO 3166-1 alpha-2. Βελτιώνει την ακρίβεια για ονόματα των οποίων το φύλο διαφέρει ανά περιοχή, όπως Andrea (αρσενικό στην Ιταλία, θηλυκό στη Γερμανία).
askToAI
προαιρετικό
boolean Επιστρέψτε σε ένα μοντέλο γλώσσας όταν το όνομα δεν υπάρχει στη βάση δεδομένων. Κοστίζει ένα επιπλέον credit.
forceToGenderize
προαιρετικό
boolean Επιστρέψτε το πιο πιθανό φύλο ακόμα και όταν η εμπιστοσύνη είναι κάτω από το όριο. Απενεργοποιημένο από προεπιλογή, επειδή μια απάντηση αναλογίας παρουσιαζόμενη ως σίγουρη είναι χειρότερη από καμία απάντηση.
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

Φύλο από email

Εξάγει το όνομα από το τοπικό μέρος της διεύθυνσης, κατόπιν ταξινομεί αυτό. "ayse.yilmaz84@example.com" αναλύεται σε Ayşe.

Παράμετρος Τύπος Περιγραφή
email
υποχρεωτικό
string Η διεύθυνση email. Χρησιμοποιείται μόνο το μέρος πριν το @.
country
προαιρετικό
string Κωδικός χώρας ISO 3166-1 alpha-2. Βελτιώνει την ακρίβεια για ονόματα των οποίων το φύλο διαφέρει ανά περιοχή, όπως Andrea (αρσενικό στην Ιταλία, θηλυκό στη Γερμανία).
askToAI
προαιρετικό
boolean Επιστρέψτε σε ένα μοντέλο γλώσσας όταν το όνομα δεν υπάρχει στη βάση δεδομένων. Κοστίζει ένα επιπλέον credit.

forceToGenderize δεν είναι διαθέσιμο εδώ: το όνομα εξάγεται εσωτερικά, οπότε η επιβολή ενός αποτελέσματος σε αβέβαιη εξαγωγή συνδυάζει δύο εικασίες.

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

Φύλο από όνομα χρήστη

Χειρίζεται camelCase, snake_case, αριθμούς στο τέλος και σήματα @ στην αρχή. "AyseYilmaz84" αναλύεται σε Ayşe.

Παράμετρος Τύπος Περιγραφή
username
υποχρεωτικό
string Το όνομα χρήστη ή handle. Ένα αρχικό @ αγνοείται.
country
προαιρετικό
string Κωδικός χώρας ISO 3166-1 alpha-2. Βελτιώνει την ακρίβεια για ονόματα των οποίων το φύλο διαφέρει ανά περιοχή, όπως Andrea (αρσενικό στην Ιταλία, θηλυκό στη Γερμανία).
askToAI
προαιρετικό
boolean Επιστρέψτε σε ένα μοντέλο γλώσσας όταν το όνομα δεν υπάρχει στη βάση δεδομένων. Κοστίζει ένα επιπλέον credit.
forceToGenderize
προαιρετικό
boolean Επιστρέψτε το πιο πιθανό φύλο ακόμα και όταν η εμπιστοσύνη είναι κάτω από το όριο. Απενεργοποιημένο από προεπιλογή, επειδή μια απάντηση αναλογίας παρουσιαζόμενη ως σίγουρη είναι χειρότερη από καμία απάντηση.
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

Μαζικό αίτημα

Στείλτε έως 100 ονόματα σε ένα αίτημα. Χρησιμοποιήστε αυτό αντί για βρόχο: ένα μαζικό κάλεσμα για 100 ονόματα είναι ένα μόνο round trip και μια μόνο αναζήτηση χωρίς διπλότυπα.

Παράμετρος Τύπος Περιγραφή
names
υποχρεωτικό
string[] Πίνακας ονομάτων. Μέγιστο 100 στοιχεία.
type
προαιρετικό
string Τι είναι τα στοιχεία: όνομα, email ή όνομα χρήστη. Προεπιλεγμένη τιμή όνομα.
country
προαιρετικό
string Εφαρμόζεται σε κάθε στοιχείο του αιτήματος.
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" }
  ]
}

Τα αποτελέσματα έρχονται με την ίδια σειρά που τα στείλατε. Τα credit χρεώνονται ανά όνομα, και ολόκληρο το αίτημα απορρίπτεται πριν από οποιοδήποτε έργο εάν το υπόλοιπό σας είναι ανεπαρκές, οπότε ποτέ δεν λαμβάνετε μερικώς επεξεργασμένη παρτίδα.

Το ρόφημα σύνοψης σας ενημερώνει για την αναλογία αντιστοίχισης με μια ματιά, ώστε να μπορείτε να αποφασίσετε εάν η είσοδος χρειάζεται καθαρισμό πριν επεξεργαστείτε το υπόλοιπο.

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

Λογαριασμός & quota

Ελέγξτε το εναπομένον υπόλοιπό σας χωρίς να ξοδέψετε ένα credit.

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
}

Μη λατινικά γράμματα

Στείλτε ένα όνομα στο δικό του γράμμα και το συνδέουμε με τα δεδομένα αναφοράς. Χωρίς επιπλέον παράμετρο: ανιχνεύουμε το γράμμα και επιλέγουμε τη σωστή στρατηγική.

Υποστηριζόμενο
Αραβικό γράμμα

Το αραβικό γράμμα παραλείπει τα σύντομα φωνήεντα, οπότε محمد γίνεται "mhmd" ενώ τα δεδομένα μας έχουν "muhammed". Αντιστοιχούμε με βάση το σχέδιο συμφώνων και διατηρούμε το θηλυκό σημάδι ة, ώστε خالد (Khalid) και خالدة (Khalida) να παραμένουν διακριτά. Καλύπτει επίσης Περσικά και Ουρδού ονόματα γραμμένα σε αραβικό γράμμα.

Κινέζικα χαρακτήρα

Μετατροπή σε Pinyin. Το επώνυμο προηγείται στα κινέζικα, οπότε 李明 έχει επώνυμο 李 (Li) και δεδομένο όνομα 明 (Ming) — αφαιρούμε το επώνυμο πριν την αναζήτηση. Ένας απλός χαρακτήρας είναι ένα πλήρες δεδομένο όνομα.

Κορεατικά

Ίδια επεξεργασία επωνύμου-πρώτο όπως τα κινέζικα, χρησιμοποιώντας τα κοινά κορεατικά επώνυμα.

Ιαπωνικά kana

Hiragana και katakana διαβάζονται σωστά (ひろし → Hiroshi).

Κυριλλικά

Ρωσικά, Ουκρανικά, Βουλγαρικά και Σερβικά ονόματα μεταφράζονται άμεσα.

Devanagari

Ινδικά, Μαράθι και Νεπαλικά ονόματα. Το εγγενές φωνήεν στο τέλος επεξεργάζεται (राहुल → Rahul, όχι "Rahula").

Δεν υποστηρίζεται
Ιαπωνικά kanji

Τα ιαπωνικά kanji και τα κινέζικα χαρακτήρα καταλαμβάνουν το ίδιο εύρος Unicode, οπότε δεν μπορούμε να τα διακρίνουμε μόνο από τους χαρακτήρες. Η είσοδος Han διαβάζεται ως κινέζικα: ένα όνομα kanji που δεν έχουμε ήδη αποθηκεύσει ακριβώς παίρνει την ανάγνωσή του στα Μανδαρινικά, η οποία για ένα ιαπωνικό όνομα είναι συνήθως λανθασμένη (το 健太 διαβάζεται ως "jian tai" ενώ το όνομα είναι Kenta). Τα ονόματα που έχουμε αποθηκεύσει ταιριάζουν ακριβώς και είναι σωστά. Στείλτε ιαπωνικά ονόματα σε kana ή Λατινικά για σιγουριά.

Ταϊλανδικά

Τα ταϊλανδικά παραλείπουν τα φωνήεντα όπως τα αραβικά και χρειάζονται δικό τους επίπεδο αντιστοίχησης. Δεν έχει υλοποιηθεί ακόμη, οπότε αυτά επιστρέφουν 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" }

Όταν δεν μπορούμε να μετατρέψουμε ένα σύστημα γραφής καθόλου, η απόκριση είναι gender: null με source: none. Ελέγξτε το πεδίο source: script σημαίνει ότι κάναμε μεταγραφή, db σημαίνει ότι ταιριάσαμε απευθείας τους χαρακτήρες που στείλατε. Τα δύο έχουν διαφορετική confidence και σας δείχνουμε ποιο πήρατε.

Πεδία απάντησης

Ίδια σε όλα τα endpoints.

Πεδίο Τύπος Περιγραφή
status boolean false όταν το αίτημα απέτυχε. Ελέγξτε αυτό πρώτα.
used_credits integer Credits που κατανάλωσε αυτό το αίτημα.
remaining_credits integer Credits που απομένουν μετά από αυτό το αίτημα.
expires null Πάντα null. Τα αγορασμένα credits δεν λήγουν.
q string Η είσοδός σας, επαναληφθείσα αμετάβλητη.
name string Το όνομα που πραγματικά αναζητήσαμε μετά την αφαίρεση τίτλων και επωνύμων.
gender string male, female, ή null όταν δεν είμαστε αρκετά σίγουροι.
country string Η χώρα από την οποία προήλθαν τα στατιστικά, ή null για το παγκόσμιο σύνολο.
total_names integer Πόσοι πραγματικοί άνθρωποι βασίζεται αυτή η απάντηση. 0 σημαίνει ότι η πηγή παρέχει αναλογίες και όχι μετρήσεις, όχι ότι η απάντηση είναι αδύναμη.
probability integer Εμπιστοσύνη στο δηλωμένο gender, 50 έως 100. 0 όταν το gender είναι null.
duration string Χρόνος επεξεργασίας στον διακομιστή.

Δύο πεδία που άλλες υπηρεσίες δεν σας δίνουν

source σας λέει από πού προήλθε η απάντηση: τη βάση δεδομένων αναφοράς, μια ασαφή αντιστοίχιση ή την εναλλακτική λύση AI. matched_as ονοματίζει την καταχώρηση που ταίριασε με ασαφή αντιστοίχιση. Μαζί σας επιτρέπουν να αποφασίσετε πόσο να εμπιστευθείτε ένα μεμονωμένο αποτέλεσμα αντί να το λάβετε με πίστη.

Πεδίο Τύπος Περιγραφή
source string db, fuzzy, llm, ή none.
confidence string υψηλή, μεσαία, χαμηλή, ανεπιβεβαίωτη ή άγνωστη, με βάση τα δεδομένα δείγματος.
matched_as string Για μια ασαφή αντιστοίχιση, η καταχώρηση βάσης δεδομένων που ταίριασε. Διαφορετικά null.

Κωδικοί σφάλματος

Τα σφάλματα επιστρέφουν ένα σώμα JSON με status: false και μια συμβολική ακολουθία σφάλματος που διαβάζεται από μηχάνημα. Αντιστοιχίστε το σφάλμα, όχι το μήνυμα: τα μηνύματα μεταφράζονται και ενδέχεται να αλλάξουν.

Κώδικας HTTP Σημασία
missing_key 401 Το API key λείπει. Περάστε το ως παράμετρο "key" ή ως Authorization: Bearer header.
invalid_key 401 Αυτό το API key δεν είναι έγκυρο.
revoked_key 401 Αυτό το API key έχει ανακληθεί.
blocked 403 Αυτός ο λογαριασμός έχει αναστείλει. Επικοινωνήστε με την υποστήριξη.
email_not_verified 403 Η διεύθυνση email αυτού του λογαριασμού δεν έχει επιβεβαιωθεί ακόμη. Ανοίξτε τον σύνδεσμο επιβεβαίωσης που σας στείλαμε ή ζητήστε νέον από τον πίνακα ελέγχου.
ip_not_allowed 403 Τα αιτήματα από αυτήν την IP διεύθυνση δεν επιτρέπονται για αυτό το κλειδί.
forbidden 403 Δεν επιτρέπεται να εκτελέσετε αυτήν την ενέργεια.
no_credits 402 Δεν έχετε πιστώσεις. Αγοράστε περισσότερες ή περιμένετε το ημερήσιο δωρεάν όριό σας να επανατεθεί.
missing_input 400 Η παράμετρος "name" είναι υποχρεωτική.
invalid_input 422 Η παράμετρος "name" δεν είναι έγκυρη.
too_many_items 422 Το μέγιστο όριο είναι 100 στοιχεία ανά αίτημα.
unknown_endpoint 404 Δεν υπάρχει endpoint σε αυτή τη διαδρομή. Ελέγξτε το URL σε σχέση με την τεκμηρίωση του API.
method_not_allowed 405 Αυτό το endpoint δεν δέχεται αιτήματα DELETE.
payload_too_large 413 Το σώμα του αιτήματος είναι πολύ μεγάλο.
rate_limited 429 Πολλά αιτήματα. Επιβραδύνετε και δοκιμάστε ξανά σε λίγο.
not_ready 503 Η βάση δεδομένων ονομάτων ανακατασκευάζεται. Δοκιμάστε ξανά σε λίγο.
server_error 500 Κάτι πήγε στραβά από την πλευρά μας. Έχουμε ειδοποιηθεί.
{
  "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"
}

Όρια ταχύτητας

Η κανονική χρήση δεν φτάνει σε όριο. Το όριο υπάρχει για να σταματήσει ένα διαρρέον κλειδί από τον κατάχρηση, και μετράται ανά API key και όχι ανά IP, έτσι ώστε πολλοί πελάτες σε έναν διακομιστή να μην καταναλώνουν το δικαίωμα ο ένας του άλλου.

Τρέχον όριο: 1.200 αιτήματα ανά λεπτό ανά κλειδί. Χρειάζεστε περισσότερα; Ζητήστε και θα το αυξήσουμε στον λογαριασμό σας.

Κάθε απάντηση φέρει τα τυπικά headers X-RateLimit-Limit και X-RateLimit-Remaining.

Μετανάστευση από άλλον παροχέα

Τα πεδία απάντησης και τα ονόματα παραμέτρων μας ακολουθούν τη συνηθισμένη σύμβαση, επομένως η εναλλαγή συνήθως σημαίνει αλλαγή μίας γραμμής: την βασική διεύθυνση URL.

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

askToAI και forceToGenderize διατηρούν την αρχική τους ορθογραφία για ακριβώς αυτό τον λόγο. Αν ένα πεδίο στο οποίο βασίζεστε λείπει, πείτε μας και θα το προσθέσουμε.

Κωδικοποιήστε την είσοδό σας

Τα ονόματα περιέχουν κενά και μη-ASCII χαρακτήρες. Κωδικοποιήστε το URL την τιμή πριν την τοποθετήσετε σε μια συμβολοσειρά ερωτήματος, ή χρησιμοποιήστε POST με JSON body.

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