REST API Reference
สี่เอนด์พอยต์ รูปแบบการตอบสนองเดียว ทุกอย่างด้านล่างใช้งานสดกับบัญชีของคุณ
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
เอนด์พอยต์ทั้งหมดจะส่งคืนรูปแบบเดียวกัน ดังนั้นคุณสามารถเปลี่ยนอินพุตได้โดยไม่ต้องเปลี่ยนโค้ดการแยกวิเคราะห์ของคุณ
การตรวจสอบสิทธิ์
ส่ง API key ของคุณได้สามวิธี แนะนำให้ใช้ header Authorization: query string อาจปรากฏในบันทึกเซิร์ฟเวอร์และประวัติเบราว์เซอร์
Authorization: Bearer ng_live_xxxxxxxxxxxx
X-Api-Key: ng_live_xxxxxxxxxxxx
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
คุณสามารถจำกัด key ให้ใช้กับที่อยู่ IP ที่ระบุได้จากแดชบอร์ด
Client libraries
API เดียว อินพุตสี่ประเภท และเครื่องมือจำนวนมากที่สามารถจัดการไฟล์ที่บริการอื่นทำได้ยาก
ดูทั้งหมดhttps://namegender.com/api
เพศจากชื่อ
ยอมรับชื่อจริงหรือชื่อเต็ม คำนำหน้า ชื่อกลาง และนามสกุลจะถูกลบออกก่อนการค้นหา ดังนั้น "Dr. Ayşe Yılmaz" และ "Ayşe" จึงให้คำตอบเดียวกัน
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
name
จำเป็น
|
string
|
ชื่อที่จะจำแนก ชื่อจริงหรือชื่อเต็ม |
country
ตัวเลือก
|
string
|
รหัสประเทศ ISO 3166-1 alpha-2 ช่วยปรับปรุงความแม่นยำสำหรับชื่อที่เพศแตกต่างตามภูมิภาค เช่น Andrea (ชาย ในอิตาลี หญิง ในเยอรมนี) |
askToAI
ตัวเลือก
|
boolean
|
ใช้โมเดลภาษาเมื่อชื่อไม่อยู่ในฐานข้อมูล ต้องใช้เครดิตเพิ่มเติมหนึ่งหน่วย |
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
เพศจากอีเมล
แยกบุคคลจากส่วนท้องถิ่นของที่อยู่ แล้วจำแนกนั้น "ayse.yilmaz84@example.com" ตรวจสอบเป็น Ayşe
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
email
จำเป็น
|
string
|
ที่อยู่อีเมล ใช้เฉพาะส่วนก่อน @ |
country
ตัวเลือก
|
string
|
รหัสประเทศ ISO 3166-1 alpha-2 ช่วยปรับปรุงความแม่นยำสำหรับชื่อที่เพศแตกต่างตามภูมิภาค เช่น Andrea (ชาย ในอิตาลี หญิง ในเยอรมนี) |
askToAI
ตัวเลือก
|
boolean
|
ใช้โมเดลภาษาเมื่อชื่อไม่อยู่ในฐานข้อมูล ต้องใช้เครดิตเพิ่มเติมหนึ่งหน่วย |
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
|
ใช้โมเดลภาษาเมื่อชื่อไม่อยู่ในฐานข้อมูล ต้องใช้เครดิตเพิ่มเติมหนึ่งหน่วย |
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 ชื่อในคำขอเดียว ใช้แทนการวนซ้ำ: การเรียก bulk เดียวสำหรับ 100 ชื่อคือการเดินทางครั้งเดียวและการค้นหาแบบลบรายการซ้ำครั้งเดียว
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
names
จำเป็น
|
string[]
|
อาร์เรย์ของชื่อ จำนวนรายการสูงสุด 100 |
type
ตัวเลือก
|
string
|
รายการคืออะไร: ชื่อ อีเมล หรือชื่อผู้ใช้ ค่าเริ่มต้นคือชื่อ |
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" }
]
}
ผลลัพธ์จะส่งกลับมาตามลำดับที่คุณส่ง เรียกเก็บเครดิตต่อชื่อ และคำขอทั้งหมดจะถูกปฏิเสธก่อนการทำงานหากยอดคงเหลือของคุณไม่เพียงพอ ดังนั้นคุณจึงไม่เคยได้รับแบตช์ที่ประมวลผลครึ่งหนึ่ง
บล็อกสรุปบอกคุณถึงอัตราการจับคู่ได้อย่างรวดเร็ว เพื่อให้คุณสามารถตัดสินใจได้ว่าอินพุตต้องการการทำความสะอาดก่อนที่คุณจะประมวลผลส่วนที่เหลือ
https://namegender.com/api/me
บัญชี & โควตา
ตรวจสอบยอดเครดิตคงเหลือของคุณโดยไม่ใช้เครดิต
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) — เราลบนามสกุลออกก่อนค้นหา อักษรเดียวถือเป็นชื่อจริงที่สมบูรณ์และจัดการเป็นตัวเดียว
การจัดการนามสกุลก่อนเหมือนกับภาษาจีน โดยใช้นามสกุลเกาหลีที่นิยมใช้
อ่านฮิรากานะและคะตะกานะได้อย่างถูกต้อง (ひろし → Hiroshi)
ชื่อรัสเซีย ยูเครน บัลแกเรีย และเซอร์เบีย แปลเป็นตัวเต็มโดยตรง
ชื่อฮินดี มราฐี และเนปาล สระที่ตามมาโดยปริยายจะถูกจัดการ (राहुल → Rahul ไม่ใช่ "Rahula")
อักษรคันจิของญี่ปุ่นและอักษรจีนอยู่ในช่วง Unicode เดียวกัน เราจึงไม่สามารถแยกแยะได้จากอักษรเพียงอย่างเดียว Han input จะถูกอ่านเป็นภาษาจีน: ชื่อคันจิที่เราไม่มีข้อมูลจะได้การอ่านแบบแมนดารินซึ่งสำหรับชื่อญี่ปุ่นมักจะผิด (健太 อ่านว่า "jian tai" ทั้งที่ชื่อคือ Kenta) ชื่อที่เรามีข้อมูลจะตรงกันทั้งหมดและถูกต้อง ส่งชื่อญี่ปุ่นในรูป kana หรือ Latin เพื่อให้แน่นอน
ภาษาไทยละเว้นสระเหมือนอาหรับและต้องการชั้นการจับคู่เฉพาะ ยังไม่สร้างเสร็จ จึงส่งคืน 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" }
เมื่อเราไม่สามารถแปลงอักษรได้เลย response จะเป็น gender: null ที่มี source: none ตรวจสอบ source field: script หมายความว่าเราทำการ transliterate db หมายความว่าเราจับคู่อักษรที่คุณส่งมาโดยตรง ทั้งสองมี confidence ต่างกัน และเราจะแสดงให้เห็นว่าคุณได้ข้อมูลแบบไหน
ฟิลด์การตอบสนอง
เหมือนกันในทุก endpoint
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
status
|
boolean
|
false เมื่อคำขอล้มเหลว ตรวจสอบที่นี่เป็นอันดับแรก |
used_credits
|
integer
|
เครดิตที่คำขอนี้ใช้ไป |
remaining_credits
|
integer
|
เครดิตที่เหลือหลังจากคำขอนี้ |
expires
|
null
|
เป็น null เสมอ เครดิตที่ซื้อไม่หมดอายุ |
q
|
string
|
input ของคุณ ส่งกลับมาเหมือนเดิม |
name
|
string
|
ชื่อที่เราค้นหาจริงๆ หลังจากลบคำนำหน้าและนามสกุล |
gender
|
string
|
male female หรือ null เมื่อเราไม่มั่นใจพอที่จะพูด |
country
|
string
|
ประเทศที่สถิติมาจาก หรือ null สำหรับข้อมูลรวมทั่วโลก |
total_names
|
integer
|
จำนวนคนจริงที่คำตอบนี้อิงจาก 0 หมายความว่าแหล่งที่มาให้สัดส่วน ไม่ใช่ว่าคำตอบอ่อนแอ |
probability
|
integer
|
ความมั่นใจในเพศที่ระบุ 50 ถึง 100 0 เมื่อ gender เป็น null |
duration
|
string
|
เวลาประมวลผลฝั่ง server |
สองฟิลด์ที่บริการอื่นไม่ให้
source บอกคุณว่าคำตอบมาจากไหน: ฐานข้อมูลอ้างอิง fuzzy match หรือ AI fallback matched_as ตั้งชื่อรายการที่ fuzzy match ลงจอด ทั้งสองช่วยให้คุณตัดสินใจว่าจะเชื่อถือผลลัพธ์เดียวมากน้อยเพียงใด
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
source
|
string
|
db fuzzy llm หรือ none |
confidence
|
string
|
สูง ปานกลาง ต่ำ ยังไม่ยืนยัน หรือไม่ทราบ โดยอิงจากหลักฐานตัวอย่าง |
matched_as
|
string
|
สำหรับ fuzzy match รายการฐานข้อมูลที่จับคู่ ไม่เช่นนั้น null |
รหัสข้อผิดพลาด
ข้อผิดพลาดส่งกลับ JSON body ที่มี status: false และ error string ที่อ่านได้โดยเครื่อง จับคู่กับ error ไม่ใช่ message เพราะ message ถูกแปลและอาจเปลี่ยนแปลง
| รหัส | HTTP | ความหมาย |
|---|---|---|
missing_key |
401 | API key หายไป ส่งเป็น parameter "key" หรือ header Authorization: Bearer |
invalid_key |
401 | API key นี้ไม่ถูกต้อง |
revoked_key |
401 | API key นี้ถูกยกเลิกแล้ว |
blocked |
403 | บัญชีนี้ถูกระงับ ติดต่อ support |
email_not_verified |
403 | ที่อยู่อีเมลของบัญชีนี้ยังไม่ได้รับการยืนยัน กรุณาเปิดลิงก์ยืนยันที่เราส่งให้ หรือขอลิงก์ใหม่จากแดชบอร์ด |
ip_not_allowed |
403 | ไม่อนุญาตให้ส่งคำขอจากที่อยู่ IP นี้สำหรับ key นี้ |
forbidden |
403 | คุณไม่ได้รับอนุญาตให้ดำเนินการนี้ |
no_credits |
402 | credit หมดแล้ว ซื้อเพิ่มหรือรอ quota ฟรีรายวันรีเซ็ต |
missing_input |
400 | ต้องระบุ parameter "name" |
invalid_input |
422 | Parameter "name" ไม่ถูกต้อง |
too_many_items |
422 | ส่งได้สูงสุด 100 รายการต่อคำขอเดียว |
ai_consent_required |
422 | askToAI ส่งชื่อไปยังผู้ให้บริการ AI ของบุคคลที่สาม ซึ่งบัญชีนี้ยังไม่ได้ยินยอม ดูฟิลด์ "ai" เพื่อดูว่าผู้ให้บริการนั้นคือใคร จากนั้นเปิดใช้งาน AI lookups ในการตั้งค่าแดชบอร์ดของคุณ |
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 คำขอต่อนาทีต่อ key ต้องการเพิ่มเติมหรือ ถามเรา เราจะเพิ่มในบัญชีของคุณ
ทุกการตอบสนองมีส่วนหัว 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 รักษาการสะกดเดิมไว้ด้วยเหตุผลนี้เท่านั้น หากฟิลด์ที่คุณพึ่งพาหายไป บอกเราและเราจะเพิ่มมันให้
เข้ารหัสข้อมูลของคุณ
ชื่อมีช่องว่างและอักขระ non-ASCII URL-encode ค่าก่อนนำมาใส่ในสตริงการค้นหา หรือใช้ 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