Αναφορά 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: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
Μπορείτε να περιορίσετε ένα κλειδί σε συγκεκριμένες διευθύνσεις IP από τον πίνακα ελέγχου.
Βιβλιοθήκες πελάτη
Ένα API, τέσσερις τύποι εισόδου και εργαλεία μαζικής επεξεργασίας που χειρίζονται αρχεία που άλλες υπηρεσίες αποτυγχάνουν.
Προβολή όλων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
}
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"
}
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"
}
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 χρεώνονται ανά όνομα, και ολόκληρο το αίτημα απορρίπτεται πριν από οποιοδήποτε έργο εάν το υπόλοιπό σας είναι ανεπαρκές, οπότε ποτέ δεν λαμβάνετε μερικώς επεξεργασμένη παρτίδα.
Το ρόφημα σύνοψης σας ενημερώνει για την αναλογία αντιστοίχισης με μια ματιά, ώστε να μπορείτε να αποφασίσετε εάν η είσοδος χρειάζεται καθαρισμό πριν επεξεργαστείτε το υπόλοιπο.
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) — αφαιρούμε το επώνυμο πριν την αναζήτηση. Ένας απλός χαρακτήρας είναι ένα πλήρες δεδομένο όνομα.
Ίδια επεξεργασία επωνύμου-πρώτο όπως τα κινέζικα, χρησιμοποιώντας τα κοινά κορεατικά επώνυμα.
Hiragana και katakana διαβάζονται σωστά (ひろし → Hiroshi).
Ρωσικά, Ουκρανικά, Βουλγαρικά και Σερβικά ονόματα μεταφράζονται άμεσα.
Ινδικά, Μαράθι και Νεπαλικά ονόματα. Το εγγενές φωνήεν στο τέλος επεξεργάζεται (राहुल → Rahul, όχι "Rahula").
Τα ιαπωνικά 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 στοιχεία ανά αίτημα. |
ai_consent_required |
422 | Το askToAI στέλνει το όνομα σε έναν τρίτο provider AI, για τον οποίο αυτός ο λογαριασμός δεν έχει συμφωνήσει. Δείτε το πεδίο "ai" για να προσδιορίσετε ποιος είναι ο provider, και στη συνέχεια ενεργοποιήστε τις αναζητήσεις AI στις ρυθμίσεις του πίνακα ελέγχου σας. |
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