ประวัติงาน — GET /jobs

รายการงานถอดเสียงทั้งหมด เรียงจากงานที่ส่งล่าสุดก่อน หน้าละ 30 รายการ — เมื่อเรียกด้วย API key จะเห็นงานของผู้ใช้ทุกคนรวมถึงงานที่สร้างด้วย key เอง (session จาก editor เห็นเฉพาะงานของตัวเอง) งานที่เสร็จแล้วคือรายการประวัติซับไตเติลของ editor

GET https://api.lomasub.ai/jobs?filter=<filter>&page=<n>

Headers

Header ค่า จำเป็น
Authorization Bearer <API_KEY> ต้องระบุ

Query Parameters

พารามิเตอร์ ชนิด ค่าเริ่มต้น คำอธิบาย
filter all | finished | running | failed all เลือกสถานะที่จะแสดง — finished = READY, running = QUEUED และทุกขั้นตอนของ worker (ทุกสถานะที่ยังไม่สิ้นสุด), failed = FAILED ค่าอื่นตอบ 422
page int ≥ 1 1 เลขหน้าเริ่มที่ 1 หน้าที่เลยท้ายรายการจะได้ jobs ว่างพร้อม total ที่ถูกต้อง ค่าน้อยกว่า 1 ตอบ 422

ตัวอย่าง Request

curl "https://api.lomasub.ai/jobs?filter=finished&page=1" \
  -H "Authorization: Bearer $LOMA_API_SECRET_KEY"

Response — 200 OK

ฟิลด์ ชนิด คำอธิบาย
jobs array รายการงานไม่เกิน page_size รายการ เรียงตามเวลาส่งงานจากใหม่ไปเก่า ลำดับคงที่ข้ามหน้า
page int หน้าที่ส่งกลับ
page_size int จำนวนรายการต่อหน้า เป็น 30 เสมอ
total int จำนวนงานทั้งหมดที่ตรงกับ filter (เท่ากันทุกหน้า)
has_more bool page × page_size < total

ฟิลด์ของแต่ละรายการ (jobs[])

ฟิลด์ ชนิด คำอธิบาย
id string (UUID) รหัสงาน ค่าเดียวกับที่ใช้ใน GET /status
user_id int | null เจ้าของงานเมื่อสร้างจาก session ของ editor — เป็น null สำหรับงานที่สร้างด้วย API key
name string filename ที่ส่งมาตอน POST /new-transcribe — เป็น "untitled" เมื่อไม่ได้ส่ง
state string สถานะดิบของงาน: QUEUED, ขั้นตอนของ worker, READY หรือ FAILED
queued_at string (timestamp) เวลาส่งงาน มีเสมอ
finished_at string | null เวลาที่งานเป็น READYnull สำหรับสถานะอื่น
edited_at string | null เวลาบันทึกล่าสุดผ่าน PUT /jobs/{job_id}null จนกว่าจะบันทึกครั้งแรก
duration_seconds number | null ความยาวสื่อสำหรับแสดงผล: ค่า duration_seconds ที่ส่งมาตอนสร้างงาน ถ้าไม่มีใช้ค่าที่ worker วัดได้ ถ้าไม่มีทั้งคู่เป็น null — มีเพียงค่าที่ส่งมาเท่านั้นที่ใช้ใน GET /jobs/match
cue_count int | null จำนวนบรรทัดในผลลัพธ์ — เป็นตัวเลขเมื่อ READY นอกนั้น null
has_karaoke bool งานนี้มี karaoke VTT (timestamp ระดับคำ) หรือไม่ — false จนกว่าจะ READY
edited bool เคยบันทึก SRT ที่แก้ไขแล้วสำหรับงานนี้หรือไม่
failed_stage · error string | null มีเฉพาะรายการที่ FAILED ความหมายเดียวกับใน GET /status

ตัวอย่าง Response

{
  "jobs": [
    {"id": "7f3c2b1e-9a4d-4c8e-b2f1-5d6e7a8b9c0d", "user_id": 42, "name": "interview.mp4", "state": "READY",
     "queued_at": "2026-09-08T09:12:44.318412Z", "finished_at": "2026-09-08T09:14:23.088441Z",
     "edited_at": null, "duration_seconds": 1483.2, "cue_count": 412, "has_karaoke": true, "edited": false},
    {"id": "c41d0a77-2e6b-4f1a-9d3c-8b7e6f5a4d3c", "user_id": null, "name": "meeting.m4a", "state": "TRANSCRIBING",
     "queued_at": "2026-09-08T09:10:02.900114Z", "finished_at": null,
     "edited_at": null, "duration_seconds": 3602.5, "cue_count": null, "has_karaoke": false, "edited": false},
    {"id": "0b9e8d7c-6a5f-4e3d-b2c1-a0f9e8d7c6b5", "user_id": null, "name": "clip.mp3", "state": "FAILED",
     "queued_at": "2026-09-08T08:55:31.220870Z", "finished_at": null,
     "edited_at": null, "duration_seconds": null, "cue_count": null, "has_karaoke": false, "edited": false,
     "failed_stage": "SPLITTING", "error": "source download failed: HTTP 403"}
  ],
  "page": 1, "page_size": 30, "total": 47, "has_more": true
}

ข้อผิดพลาดที่อาจพบ

สถานะ สาเหตุ
401 Unauthorized ไม่มีหรือ API key ไม่ถูกต้อง
422 Unprocessable Entity filter ไม่ใช่ค่าที่กำหนด หรือ page น้อยกว่า 1

GET /jobs/match

ค้นหางานที่เสร็จแล้วของไฟล์สื่อที่เคยถอดเสียงไปแล้ว เพื่อให้ client นำผลเดิมมาใช้แทนการสร้างงานใหม่

GET https://api.lomasub.ai/jobs/match?name=<filename>&duration_seconds=<seconds>
พารามิเตอร์ ชนิด จำเป็น คำอธิบาย
name string (1–255) ต้องระบุ filename ตรงตัวตามที่ส่งตอนสร้างงาน
duration_seconds number ≥ 0 ต้องระบุ ความยาวสื่อ — งานจะตรงกันเมื่อ duration_seconds ที่ส่งตอน /new-transcribe ต่างกันไม่เกิน 0.5 วินาที งานที่สร้างโดยไม่ส่งค่านี้จะไม่ถูกจับคู่เลย แม้ worker จะวัดความยาวได้เท่ากัน

ตอบ 200 OK เสมอ เป็น {"job": <รายการ> | null} — งาน READY ที่แก้ไขล่าสุดซึ่งชื่อและความยาวตรงกัน ในรูปแบบเดียวกับรายการใน jobs[] ด้านบน หรือ null เมื่อไม่พบ

curl "https://api.lomasub.ai/jobs/match?name=interview.mp4&duration_seconds=1483.2" \
  -H "Authorization: Bearer $LOMA_API_SECRET_KEY"

results matching ""

    No results matching ""