PUBLIC API · VERSION 1
สถานะเครื่องและคิว
เรียกดูได้โดยไม่ต้องเข้าสู่ระบบ
API นี้ให้ข้อมูลรวมสำหรับเลือกเซิร์ฟเวอร์ ได้แก่ ความพร้อม คิวงาน คลิปสำเร็จวันนี้ และเวลาเฉลี่ยที่มีตัวอย่างรองรับ เป็นการอ่านข้อมูลเท่านั้น ไม่มีการส่งงานสร้างเสียง
ลองเรียกข้อมูลจริง
เลือก endpoint แล้วกดปุ่ม คำตอบด้านล่างมาจากคำขอนั้นโดยตรง หน้านี้ไม่ส่งคุกกี้หรือข้อมูลเข้าสู่ระบบ
กด “ลองเรียก API” เพื่อดูข้อมูลปัจจุบัน
Endpoints
| เส้นทาง | คำตอบ |
|---|---|
GET /api/public/v1/servers?include=voice2,voice1 | ข้อมูลทั้งห้าเครื่อง: voice8, voice3, voice5, voice2 และ voice1 โดยเครื่องนี้เป็นรายการแรก |
GET /api/public/v1/servers?include=voice2 | ข้อมูล voice8, voice3, voice5 และ voice2 ใน servers[] พร้อม schema_version, request_id, observed_at และ refresh_after_seconds |
GET /api/public/v1/servers | Voice8 คงรายการเดิมสามเครื่องเพื่อรองรับหน้าที่เปิดค้างอยู่; Voice2 คืนทั้งสี่เครื่องโดยมีเครื่องตัวเองเป็นรายการแรก |
GET /api/public/v1/status | สถานะของเครื่องที่รับคำขอโดยตรง พร้อม schema_version, request_id และ observed_at |
ใช้ origin ของหน้านี้เป็นฐาน รองรับ GET, HEAD และ OPTIONS โดยไม่ต้องส่ง token ส่วน HEAD ไม่มี response body
fetch('/api/public/v1/servers?include=voice2,voice1', {
credentials: 'omit',
headers: { Accept: 'application/json' }
}).then(async response => ({
requestId: response.headers.get('X-Request-ID'),
data: await response.json()
}));
X-Request-ID ใน response header ตรงกับ request_id ชั้นนอกของ JSON และเปลี่ยนทุกคำขอ แม้ข้อมูลต้นทางยังอยู่ในรอบแคช วัตถุแต่ละเครื่องใน servers[] ไม่มีรหัสคำขอซ้อน
อนุญาตการอ่านข้าม origin ด้วย Access-Control-Allow-Origin: * และเปิดให้อ่าน header X-Request-ID โดยไม่ใช้ credentials
ฟิลด์ของแต่ละเครื่อง
| ฟิลด์ | ความหมาย |
|---|---|
server | id, label, url ระบุเครื่องในรายการที่กำหนดไว้: voice8, voice3, voice5, voice2 และ voice1 |
availability | state เป็น ready, degraded, unavailable หรือ unknown; reachable หมายถึงเข้าถึงแหล่งข้อมูลได้ ส่วน engine_ready ต้องมีข้อมูลความพร้อมของเครื่องสร้างเสียงรองรับ ทั้งสองค่านี้อาจเป็น null การเข้าถึง endpoint ได้อย่างเดียวไม่ได้ยืนยันว่าเครื่องพร้อม |
freshness | source เป็น local ของเครื่องนี้, legacy_public สำหรับ voice3 หรือ versioned_public ของเครื่องอื่นที่รองรับ API นี้; age_seconds คืออายุข้อมูล, stale ระบุข้อมูลเก่า และ cache_seconds คือรอบแคชต้นทาง |
queue.workflow | จำนวนงานหรือชุดที่ queued / running พร้อม capacity แยก total, voiceonly, heavy และ policy หากเครื่องยังไม่ส่งข้อมูลชนิดนี้จะเป็น null |
queue.compute | จำนวนขั้นตอนประมวลผลที่ queued / running พร้อมรายละเอียด inference และ nvenc ซึ่งมี queued, running, capacity เป็นคนละหน่วยกับจำนวนงาน จึงใช้แทน queue.workflow ไม่ได้ |
today | date ตาม timezone: Asia/Bangkok และ scope: all_modes; clips_completed นับคลิปผลงาน, media_seconds รวมความยาวสื่อ และ workflows นับ submitted, completed, failed, cancelled ของงานหรือชุด |
today.averages | queue_seconds, processing_seconds, total_seconds มีจำนวนตัวอย่างคู่กันคือ queue_samples, processing_samples, total_samples ส่วน process_seconds_per_media_minute ใช้ normalization_samples |
coverage | ledger_updated_at, historical_timing_samples, issues[] และ notes[] ใช้ตรวจขอบเขตและข้อจำกัดของข้อมูล |
ใช้ตัวเลขอย่างไรให้ตรงความหมาย
nullคือไม่ทราบหรือแหล่งข้อมูลไม่พร้อม ต้องแสดง — แทนศูนย์ ส่วน0คือแหล่งข้อมูลยืนยันจำนวนเป็นศูนย์แล้ว- งานหรือชุดหนึ่งอาจมีหลายคลิป หรืออาจไม่สำเร็จ จำนวนคลิปกับจำนวนงานจึงไม่จำเป็นต้องเท่ากัน
- ค่าเวลาเฉลี่ยใช้คลิปสำเร็จทุกโหมดที่มีข้อมูลของฟิลด์นั้น ไม่รวมอัปโหลด และเวลาประมวลผลอาจไม่ครอบคลุมการตัด AutoCute ก่อนเข้ากระบวนการหรือการกู้คืนงาน ต้องอ่านจำนวนตัวอย่างควบคู่เสมอ
- เวลารวมใช้เฉพาะรายการที่มีทั้งเวลารอและประมวลผล อัตราต่อวิดีโอหนึ่งนาทีใช้รายการที่มีเวลาประมวลผลและความยาวสื่อตรงกัน ไม่ใช่ ETA หรือเวลาที่รับประกันของงานถัดไป
- คิวปัจจุบันรวมภาระทดสอบที่กำลังรัน ส่วนสถิติรายวันตัดข้อมูล QA ที่ระบบระบุได้ออก
- voice3 ใช้ข้อมูลสาธารณะเดิม ความพร้อมอ่านจาก runtime health เมื่อมี boolean ยืนยันเท่านั้น ปัจจุบันข้อมูลคิวงานรวมและเวลาบางชนิดของเครื่องนี้อาจเป็น null แม้คิวประมวลผลมีข้อมูล
ความถี่และข้อมูลส่วนตัว
แนะนำเรียกตาม refresh_after_seconds ซึ่งปกติคือ 15 วินาที และหยุดรีเฟรชเมื่อหน้าไม่ได้แสดงอยู่ ข้อมูล local มีแคช 10 วินาที และเครื่องปลายทางมีแคช 15 วินาที คำตอบ HTTP ใช้ Cache-Control: no-store จึงควรตรวจ freshness ใน JSON ด้วย
API เปิดเผยเฉพาะข้อมูลรวม ไม่มีเจ้าของงาน IP หมายเลข process เส้นทางไฟล์ รหัสงาน URL สื่อส่วนตัว สคริปต์เสียง token หรือคุกกี้ ไม่รับ URL ปลายทางจากผู้เรียก และไม่สร้างงานประมวลผล
หากแหล่งข้อมูลไม่พร้อม ช่องที่ไม่ทราบจะเป็น null หากข้อมูลเก่าให้แสดงคำเตือนและเวลาอัปเดต ห้ามใช้สถานะ HTTP สำเร็จเพียงอย่างเดียวตัดสินว่าทุกเครื่องพร้อมสร้างเสียง