คีย์ API ใช้ตรวจสอบตัวตนของการเรียก serving API ของคุณ (/v1/models, /v1/chat/completions และ endpoint สำหรับเรียกแซนด์บ็อกซ์) คีย์มีหน้าตาเป็น aig_ ตามด้วย token 32 อักขระ และผูกกับโปรเจกต์เดียวเท่านั้น — การผูกถูกเลือกตอนสร้างและไม่เปลี่ยนอีกเลย
curl https://api.aigridapp.com/v1/chat/completions \
-H "Authorization: Bearer $AIGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"hello"}]}'Runtime actors#
Runtime actor คือตัวตนที่อยู่เบื้องหลังการเรียก แยกจากสิ่งที่จ่ายเงินให้การเรียกนั้น คีย์ API ของมนุษย์คนหนึ่งเป็น actor ชนิดหนึ่ง ผลิตภัณฑ์แซนด์บ็อกซ์เองก็รันภายใต้ actor ของตัวมันเอง จึงใช้จ่ายจากงบประมาณของโปรเจกต์ได้โดยไม่ต้องมีคีย์ส่วนตัว แท็บ Runtime actors ของโปรเจกต์แสดง actor แต่ละตัวพร้อม class, environment, คีย์ และการเรียกล่าสุด การเปิดระเบียนจะแสดงที่มาของ actor และการผูกกระเป๋าเงินที่ตัดสินว่าใครเป็นผู้จ่าย
หนึ่งคีย์ หนึ่งโปรเจกต์#
โปรเจกต์ที่ผูกไว้คือบริบทของการทำงานและการคิดเงินของทุกการเรียกที่คีย์นั้นทำ: การใช้งาน การตรวจนโยบาย และการคิดเงินจากกระเป๋าเงิน ทั้งหมดลงที่โปรเจกต์นั้น คีย์ไม่มีการเลือกโปรเจกต์รายการเรียก — header selector X-AIGrid-Project ทำได้เพียงระบุซ้ำให้ตรงกับโปรเจกต์ที่ผูกไว้ เท่านั้น selector ที่ระบุโปรเจกต์อื่นถูกปฏิเสธด้วย 403 project_mismatch ก่อนที่จะมีการกันเงินใด ๆ
คีย์ไม่มีเงินเป็นของตัวเอง ทุกการเรียกคิดเงินจากกระเป๋าเงินของโปรเจกต์ที่มันผูกไว้
ผู้ที่ออกคีย์ได้#
การสร้างคีย์ต้องมีครบพร้อมกันทั้งหมด: การเป็นสมาชิกองค์กรที่ active, grant ที่ active บนทีมเจ้าของของโปรเจกต์ และ grant ที่ active ในโปรเจกต์ซึ่งพก project.invoke (Project Owner หรือ Project Consumer) — ยืนยันโดย authorization adapter หากขาดข้อใดจะตอบ 403 key_issuer_denied กฎฉบับเต็มและความแตกต่างจากการใช้งานทั่วไปอยู่ใน บทบาทและสิทธิ์
กฎนี้ถูกประเมินซ้ำทุกครั้งที่ใช้คีย์: ถอน grant ของผู้สร้าง หรือระงับตัวบุคคล องค์กร หรือโปรเจกต์ แล้วการเรียกครั้งถัดไปจะถูกปฏิเสธ
นโยบายการเข้าถึง: all-eligible หรือ listed#
คีย์แต่ละใบพกนโยบายการเข้าถึงหนึ่งในสองแบบ เลือกตอนสร้าง:
all-eligible(ค่าเริ่มต้น) เข้าถึงทุก resource ที่ใช้ได้อยู่ในโปรเจกต์ที่ผูกไว้ — รวมถึงผลิตภัณฑ์ที่กำหนดเพิ่มในภายหลังlistedเข้าถึงเฉพาะ resource ที่ระบุไว้ในallowedModelsเท่านั้น ทุกรายการต้องเป็น resource ที่ใช้ได้ของโปรเจกต์ ณ เวลาที่ออกคีย์ (มิฉะนั้นเป็น422 resource_not_eligible) และความใช้ได้ถูกตรวจซ้ำทุกการเรียก — การระบุ resource ที่รายการของคุณไม่รวมไว้จะตอบ403 key_scopeรายการว่างไม่เคยหมายถึง “ทั้งหมด”
วงเงินและวันหมดอายุ#
การควบคุมที่เป็นตัวเลือก กำหนดตอนสร้าง และบังคับใช้ตอน admission ทั้งคู่:
| การตั้งค่า | ค่า |
|---|---|
| วงเงิน | จำนวนเงินหน่วย micro-USD รีเซ็ตแบบ daily, weekly หรือ monthly — หรือ lifetime |
| วันหมดอายุ | 1–365 วัน; 90 วัน เมื่อไม่ระบุ |
วงเงินและวันหมดอายุเป็นส่วนหนึ่งของคีย์ และคงอยู่เมื่อหมุนเวียนคีย์ การควบคุมการใช้จ่ายระดับองค์กรที่กว้างกว่ามีผลซ้อนทับอีกชั้น
การหมุนเวียนคีย์#
การหมุนเวียนคีย์จะออก secret ทดแทน ที่มีโปรเจกต์ นโยบายการเข้าถึง รายการ วงเงิน และช่วงวันหมดอายุเดิม — และเพิกถอนคีย์เก่าทันที ทะเบียนบันทึกสายสัมพันธ์ไว้ (rotatedFrom / rotatedTo) และทั้งการหมุนเวียนและการเพิกถอนถูกบันทึกตรวจสอบ
คีย์เก่าที่ไม่ได้ผูกโปรเจกต์#
คีย์ที่สร้างก่อนการผูกโปรเจกต์จะกลายเป็นข้อบังคับนั้นไม่มีโปรเจกต์ มันถูกปฏิเสธทุกที่ด้วย 403 key_unbound — ไม่มีการผูกให้อัตโนมัติ ไม่มีการเพิกถอนอัตโนมัติ และหมุนเวียนไม่ได้ คอนโซลทำเครื่องหมายไว้ว่า “Needs reissue”: ให้สร้างคีย์ที่ผูกกับโปรเจกต์แล้วเพิกถอนคีย์เก่า
สิ่งที่เกิดขึ้นเมื่อคีย์ถูกปฏิเสธ#
การเรียกที่ถูกปฏิเสธไม่เคยถึงผู้ให้บริการและไม่มีการคิดเงิน — ไม่มีระเบียนการใช้งาน ไม่มี reservation ไม่มีการ dispatch ดู ข้อผิดพลาด สำหรับรหัสต่าง ๆ (unauthenticated, project_mismatch, key_scope, key_unbound, key_issuer_denied) และสิ่งที่แก้แต่ละรหัสได้
ถัดไป#
- การตรวจสอบตัวตน — header, selector และรหัสข้อผิดพลาด
- บทบาทและสิทธิ์ — กฎการออกคีย์ฉบับเต็ม
- เพดานและการควบคุมการใช้จ่าย — ข้อจำกัดที่อยู่เหนือระดับคีย์