เอกสาร API V2

ข้อผิดพลาดและการส่งคำขอซ้ำใน API V2

จัดการ Problem Details ของ GenderAPI.io V2 ข้อผิดพลาดจากการตรวจสอบ ขีดจำกัดคำขอ และความไม่แน่นอนของการหักเครดิต ทำความเข้าใจการหักเครดิตเมื่อส่งคำขอซ้ำ และเมื่อใดควรติดต่อทีมช่วยเหลือ

ข้อผิดพลาดและรหัสสถานะ HTTP

ข้อผิดพลาดของแอปพลิเคชันใช้ application/problem+json (RFC 9457) ให้แยกกรณีตาม code และ action ที่คงที่ ไม่ใช่ตาม detail ที่เป็นข้อความสำหรับคนอ่าน ข้อผิดพลาดจากการตรวจสอบจะมีตำแหน่ง JSON Pointer ใน errors แนบ request_id เมื่อติดต่อทีมช่วยเหลือ ความล้มเหลวของพร็อกซีหรือการรับส่งข้อมูลอาจส่งคืนเนื้อหาที่ต่างออกไป จึงควรตรวจสอบ Content-Type ก่อนแยกวิเคราะห์ JSON

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

สถานะ HTTPความหมายโดยทั่วไปขั้นตอนถัดไป
400 / 413 / 415JSON มีรูปแบบไม่ถูกต้อง เนื้อหามีขนาดเกิน หรือประเภทสื่อไม่รองรับแก้ไขคำขอ
401 / 403การเข้าถึงถูกปฏิเสธ บัญชีถูกจำกัด หรือเครดิตไม่เพียงพอตรวจสอบ code แล้วแก้ไขการเข้าถึงหรือเติมเครดิต / รอให้การทดลองใช้รีเซ็ต
422ข้อมูลนำเข้าไม่ถูกต้องหรือตัวเลือกใช้ร่วมกันไม่ได้แก้ไขฟิลด์ที่ระบุใน errors
404 / 405ไม่รู้จักเส้นทางหรือไม่รองรับเมธอด HTTP นี้ตรวจสอบพาธของ endpoint และส่วนหัว Allow ในการตอบกลับ
429ถึงขีดจำกัดอัตราคำขอหรือจำนวนงานพร้อมกันรอตาม Retry-After ก่อนส่งคำขอถัดไป
500เซิร์ฟเวอร์ล้มเหลวโดยไม่คาดคิดติดต่อทีมช่วยเหลือพร้อม request_id และตรวจสอบการหักเครดิตก่อนส่งคำขอซ้ำ
502 / 503 / 504ความล้มเหลวของผู้ให้บริการ ระบบที่เกี่ยวข้อง การหักเครดิต หรือการหมดเวลาตรวจสอบ code, action และ billing_status ก่อนส่งคำขอซ้ำ
ตัวอย่างการตอบกลับ JSON
{
  "type": "urn:genderapi:problem:validation_error",
  "title": "validation error",
  "status": 422,
  "detail": "A valid email address is required.",
  "instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
  "code": "validation_error",
  "request_id": "11111111-1111-4111-8111-111111111111",
  "documentation": "https://api.genderapi.io/api/v2/errors",
  "action": "correct_request",
  "errors": [
    {
      "pointer": "/value",
      "message": "Invalid email address."
    }
  ],
  "meta": {
    "request_id": "11111111-1111-4111-8111-111111111111",
    "duration_ms": 12,
    "access": {
      "mode": "ip_trial",
      "reason": "api_key_missing"
    },
    "usage": {
      "charged_credits": 0,
      "remaining_credits": null,
      "billing_status": "not_charged",
      "resets_at": "2026-09-26T12:00:00.000Z",
      "limit": 10,
      "period_seconds": 86400
    }
  }
}

ฟิลด์การตอบกลับของข้อผิดพลาด

ฟิลด์ชนิดข้อมูลเป็น null ได้ตัวอย่างคำอธิบาย
typestringไม่"urn:genderapi:problem:validation_error"URI ที่ระบุประเภทของปัญหา
titlestringไม่"validation error"ชื่อข้อผิดพลาดสั้น ๆ สำหรับคนอ่าน
statusintegerไม่422รหัสสถานะ HTTP
detailstringไม่"The request does not match the schema."คำอธิบายความล้มเหลวครั้งนี้โดยเฉพาะ
instancestringไม่"urn:uuid:550e8400-e29b-41d4-a716-446655440000"ตัวระบุของคำขอที่ล้มเหลว
codestringไม่"validation_error"รหัสข้อผิดพลาดที่คงที่และเครื่องอ่านได้
request_idstringไม่"550e8400-e29b-41d4-a716-446655440000"ตัวระบุเฉพาะของการส่ง HTTP ครั้งนี้ และส่งใน X-Request-ID ด้วย
documentationstringไม่"https://api.genderapi.io/api/v2/errors"ลิงก์ไปยังรายการข้อผิดพลาด เมื่อมีการระบุ
actionstringไม่"correct_request"แนวทางแก้ไขที่แนะนำ มีเมื่อกำหนดไว้ในรายการข้อผิดพลาด
errorsarray<object>ไม่[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]ปัญหาจากการตรวจสอบ มีเมื่อมีข้อมูล แต่ละรายการมี pointer และ message
errors[].pointerstringไม่"/value"JSON Pointer ที่ระบุข้อมูลนำเข้าที่ไม่ถูกต้อง
errors[].messagestringไม่"must NOT have fewer than 1 characters"คำอธิบายปัญหาจากการตรวจสอบ

เมทาดาทาของการเข้าถึง การหักเครดิต และคำขอ

ฟิลด์ชนิดข้อมูลเป็น null ได้ตัวอย่างคำอธิบาย
meta.request_idstringไม่"550e8400-e29b-41d4-a716-446655440000"ตัวระบุเฉพาะของการส่ง HTTP ครั้งนี้ และส่งใน X-Request-ID ด้วย
meta.duration_msintegerไม่42ระยะเวลาประมวลผลคำขอเป็นมิลลิวินาที
meta.access.modestringไม่"api_key"api_key, ip_trial หรือ unauthenticated เมื่อใช้บัญชีแบบชำระเงิน ให้ตรวจสอบว่าเป็น api_key
meta.access.reasonstringใช่nullเหตุผลที่ใช้การทดลองใช้แทน: api_key_missing, api_key_invalid หรือ api_key_not_found กรณีอื่นเป็น null
meta.usage.charged_creditsintegerใช่1เครดิตสุทธิที่หัก เป็นศูนย์ก่อนหักหรือหลังยืนยันการคืนเครดิตเต็มจำนวน และเป็น null เมื่อการหักเครดิตยังไม่ยืนยัน
meta.usage.remaining_creditsintegerใช่99ยอดคงเหลือเมื่องานเสร็จ อาจติดลบได้ เป็น null เมื่อไม่มีข้อมูลหรือการหักเครดิตยังไม่ยืนยัน
meta.usage.billing_statusstringไม่"confirmed"not_charged, confirmed หรือ unconfirmed ตรวจสอบค่านี้ก่อนส่งคำขอคาดการณ์ที่ล้มเหลวซ้ำ
meta.usage.resets_atstringใช่"2026-09-27T12:00:00.000Z"เวลารีเซ็ตการทดลองใช้ตาม IP ใน UTC (ISO 8601) เป็น null สำหรับบัญชีที่ใช้คีย์ API หรือเมื่อไม่ทราบ
meta.usage.limitintegerใช่10จำนวนเครดิตของการทดลองใช้ตาม IP เป็น null สำหรับบัญชีที่ใช้คีย์ API
meta.usage.period_secondsintegerใช่86400รอบเวลาของการทดลองใช้ตาม IP เป็นวินาที เป็น null สำหรับบัญชีที่ใช้คีย์ API

การส่งคำขอซ้ำและการหักเครดิต

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

สำหรับการตอบกลับ 429 ให้รอตาม Retry-After ก่อนส่งคำขอถัดไป สำหรับการคาดการณ์ที่ล้มเหลว ให้ตรวจสอบ code, action และ meta.usage.billing_status ก่อน หากพบ billing_reconciliation_required หรือการหักเครดิตยังไม่ยืนยัน ให้ติดต่อทีมช่วยเหลือพร้อม request_id ก่อนส่งคำขอซ้ำ

คำขอแบบกลุ่มที่สำเร็จบางส่วนอาจส่งคืน HTTP 200 ตรวจสอบทุกรายการ และส่งซ้ำเฉพาะรายการที่ล้มเหลวหลังยืนยันการหักเครดิตแล้ว หากส่งรายการที่สำเร็จซ้ำจะถูกหักเครดิตอีกครั้ง

X-Request-ID และ meta.request_id ระบุการส่ง HTTP ครั้งปัจจุบัน อ่าน /usage เพื่อดูยอดคงเหลือปัจจุบัน HEAD ไม่ได้เริ่มการคาดการณ์ที่มีการหักเครดิต และการตอบกลับของการคาดการณ์และบัญชีไม่สามารถแคชได้

ไคลเอนต์ควรรองรับฟิลด์ที่เพิ่มเข้ามาในการตอบกลับ และคงค่า null ไว้เมื่อไม่มีข้อมูล

ขีดจำกัดคำขอ

รองรับ HTTP 429 และ Retry-After แทนที่จะคาดว่าคำขอจะได้รับการยอมรับเสมอที่ระดับสูงสุดเหล่านี้ ความจุของบริการใช้ร่วมกัน ค่าที่แสดงคือค่าเริ่มต้นปัจจุบันของบริการ การตอบกลับเกี่ยวกับขีดจำกัดคำขอมี X-RateLimit-Limit, X-RateLimit-Remaining และ X-RateLimit-Reset (วินาที Unix) Retry-After คือระยะเวลารอเป็นวินาที ส่วนหัวเหล่านี้อธิบายขีดจำกัดคำขอ ไม่ใช่เครดิตคงเหลือ แม้แต่การอ่าน /usage ที่ใช้ฟรีก็ยังนับรวมในขีดจำกัดคำขอ

ขีดจำกัดค่า
เนื้อหาคำขอ JSONสูงสุด 64 KiB
ค่าที่ส่งเพื่อคาดการณ์1–254 อักขระ
คำขอแบบกลุ่ม50 รายการเมื่อใช้คีย์ API และ 10 รายการเมื่อใช้การทดลองใช้ตาม IP
อัตราคำขอต่อบัญชี120 คำขอต่อนาที
อัตราคำขอต่อ IP600 คำขอต่อนาที
งานพร้อมกัน2 งานต่อบัญชี และ 16 งานทั้งบริการ