ดำเนินการต่อ → ภาพรวม

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 header (แนะนำ)
Authorization: Bearer ng_live_xxxxxxxxxxxx
Custom header
X-Api-Key: ng_live_xxxxxxxxxxxx
Query parameter
https://namegender.com/api?name=Ayşe&key=ng_live_xxxxxxxxxxxx
ห้ามเปิดเผย key ของคุณในโค้ดฝั่งไคลเอนต์ การเรียกจากเบราว์เซอร์หรือแอปบนมือถือควรผ่านแบ็คเอนด์ของคุณเอง

คุณสามารถจำกัด key ให้ใช้กับที่อยู่ IP ที่ระบุได้จากแดชบอร์ด

Client libraries

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 ใช้โมเดลภาษาเมื่อชื่อไม่อยู่ในฐานข้อมูล ต้องใช้เครดิตเพิ่มเติมหนึ่งหน่วย
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

เพศจากอีเมล

แยกบุคคลจากส่วนท้องถิ่นของที่อยู่ แล้วจำแนกนั้น "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"
}
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 ใช้โมเดลภาษาเมื่อชื่อไม่อยู่ในฐานข้อมูล ต้องใช้เครดิตเพิ่มเติมหนึ่งหน่วย
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 ชื่อในคำขอเดียว ใช้แทนการวนซ้ำ: การเรียก 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" }
  ]
}

ผลลัพธ์จะส่งกลับมาตามลำดับที่คุณส่ง เรียกเก็บเครดิตต่อชื่อ และคำขอทั้งหมดจะถูกปฏิเสธก่อนการทำงานหากยอดคงเหลือของคุณไม่เพียงพอ ดังนั้นคุณจึงไม่เคยได้รับแบตช์ที่ประมวลผลครึ่งหนึ่ง

บล็อกสรุปบอกคุณถึงอัตราการจับคู่ได้อย่างรวดเร็ว เพื่อให้คุณสามารถตัดสินใจได้ว่าอินพุตต้องการการทำความสะอาดก่อนที่คุณจะประมวลผลส่วนที่เหลือ

GET 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 รายการต่อคำขอเดียว
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