การยืนยันตัวตน
ทุกการเรียกใช้ที่รันโมเดลหรืออ่านคำขอของคุณต้องใช้คีย์ API แค็ตตาล็อก (GET /models,
GET /categories), POST /quote และเอกสาร OpenAPI เป็นสาธารณะ
คีย์ API
สร้างและเพิกถอนคีย์ได้ที่ https://doitong.com/developers/dashboard#keys คีย์จะมีลักษณะ
aคือ doitong_ ตามด้วยอักขระฐานสิบหก 64 ตัว และจะแสดงเพียงครั้งเดียวเมื่อสร้าง ส่งคีย์ใน
ส่วนหัว Authorization:
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
X-API-Key: <key> ก็ใช้ได้เช่นกัน
คำขอที่ไม่มีคีย์จะได้รับ 401 พร้อมโค้ด missing_api_key; คีย์ที่ไม่รู้จัก ถูกเพิกถอน หรือหมดอายุก็จะได้รับ 401 เช่นกัน
ขอบเขต
คีย์แต่ละรายการจะมีขอบเขต API โมเดลจะตรวจสอบขอบเขตเหล่านี้:
| การดำเนินการ | ขอบเขตที่ต้องใช้ |
|---|---|
| รันโมเดล ยกเลิกคำขอ ลบไฟล์ของคำขอ เปลี่ยนการตั้งค่าพื้นที่จัดเก็บ | models:run (คีย์ที่มี images:create หรือ videos:create รุ่นเก่าก็ใช้ได้เช่นกัน) |
| สร้าง URL สำหรับอัปโหลด | models:run หรือ media:upload |
| อ่านคำขอและบัญชี | models:read (คีย์ที่รันโมเดลได้ก็อ่านได้เช่นกัน) |
คีย์ใหม่จะได้รับ models:read และ models:run เป็นค่าเริ่มต้น การเรียกใช้ที่ไม่มีขอบเขตที่ถูกต้องจะได้รับ 403 พร้อมโค้ด
insufficient_scope
งบประมาณเครดิต
คีย์สามารถมีงบประมาณของตัวเองเป็นเครดิต API (1,000 เครดิต API = $1) ซึ่งเจ้าของบัญชีกำหนดได้ ได้แก่ งบประมาณรวม งบประมาณรายวัน (ย้อนหลัง 24 ชั่วโมง) หรือทั้งสองอย่าง ก่อนเรียกเก็บค่าใช้จ่ายของการรัน ระบบจะตรวจสอบค่าใช้จ่ายเทียบกับจำนวนที่คีย์ใช้ไปแล้วผ่าน API นี้ (หักยอดคืนเงินแล้ว) การรันที่ทำให้เกินงบประมาณจะถูกปฏิเสธด้วย 402 budget_exceeded และจะไม่มีการเรียกเก็บเงิน
คีย์ที่ไม่มีงบประมาณสามารถใช้จ่ายได้สูงสุดเท่ายอดคงเหลือ API แยกกันนั้น การรันที่ยอดคงเหลือ API ไม่เพียงพอจะได้รับ 402 insufficient_credits
พร้อม top_up_url
GET https://api.doitong.com/v1/account แสดงยอดคงเหลือ API และงบประมาณที่เหลือของคีย์ (ทั้งสองค่าเป็นเครดิต API):
{
"object": "account",
"credits": 125000,
"balance": { "credits": 125000, "usd": "125.00" },
"top_up_url": "https://doitong.com/developers/dashboard#balance",
"key": {
"name": "Production server",
"prefix": "doitong_3fa9c1e...",
"scopes": ["models:read", "models:run"],
"budget_remaining": 50000,
"rate_limit": 3600,
"rate_limit_remaining": 3571
},
"webhook_signing_secret": "whsec_..."
}
budget_remaining จะเป็น null เมื่อคีย์ไม่มีงบประมาณของตัวเอง
ขีดจำกัดอัตราการใช้งาน
คีย์แต่ละรายการส่งคำขอได้ 3600 คำขอต่อชั่วโมง เว้นแต่จะกำหนดขีดจำกัดไว้แตกต่างกัน การตอบกลับที่ผ่านการยืนยันตัวตนทุกครั้งจะมี สถานะปัจจุบัน:
| ส่วนหัว | ความหมาย |
|---|---|
X-RateLimit-Limit |
จำนวนคำขอที่อนุญาตในช่วงเวลาปัจจุบัน |
X-RateLimit-Remaining |
จำนวนคำขอที่เหลือในช่วงเวลาปัจจุบัน |
X-RateLimit-Reset |
เวลา Unix ที่ช่วงเวลาจะรีเซ็ต |
เมื่อเกินขีดจำกัด คุณจะได้รับ 429 พร้อมส่วนหัว Retry-After (วินาที) การโพลระยะยาวด้วย ?wait= จะนับเป็นหนึ่งคำขอ
ต่อการเรียกใช้ ดังนั้นการรอจึงประหยัดกว่าการโพลถี่ ๆ
นอกจากนี้ แต่ละบัญชียังมีขีดจำกัดคำขอที่กำลังดำเนินการอยู่ (queued หรือ running) 10 คำขอ การเริ่มเพิ่มอีกหนึ่งคำขอจะส่งคืน
429 too_many_inflight; ให้เริ่มใหม่หลังจากมีคำขอหนึ่งรายการเสร็จสิ้น