ตรวจสอบสถานะงาน — GET /status
ตรวจสอบความคืบหน้าของงานถอดเสียงด้วย job_id — เมื่องานเสร็จสิ้น (state = READY) response จะมีลิงก์ดาวน์โหลดไฟล์ซับไตเติลให้ทันที
GET https://api.lomasub.ai/status?job_id=<job_id>
| Header |
ค่า |
จำเป็น |
Authorization |
Bearer <API_KEY> |
✅ |
Query Parameters
ตัวอย่าง Request
curl "https://api.lomasub.ai/status?job_id=0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64" \
-H "Authorization: Bearer $LOMA_API_SECRET_KEY"
Response — 200 OK
ฟิลด์ที่มีเสมอ
| ฟิลด์ |
ชนิด |
คำอธิบาย |
job_id |
string (UUID) |
รหัสงาน |
state |
string |
สถานะปัจจุบันของงาน (ดูตารางสถานะด้านล่าง) |
source_url |
string (URL) |
URL ไฟล์เสียงต้นทางของงานนี้ |
audio_duration_seconds |
float | null |
ความยาวไฟล์เสียง (วินาที) — เป็น null จนกว่าระบบวิเคราะห์ไฟล์เสร็จ |
started_at |
string (timestamp) |
เวลาเริ่มประมวลผล (หรือเวลาเข้าคิวหากยังไม่เริ่ม) |
config |
object |
ค่า config ทั้งหมดของงานนี้ (ค่าที่ส่งมารวมกับค่าเริ่มต้น) |
s1_queued_ts … s9_ready_ts |
string | null |
เวลาเริ่มของแต่ละขั้นตอน — ขั้นตอนที่ยังไม่ถึงจะเป็น null ใช้ดูความคืบหน้าได้ |
สถานะของงาน (state)
งานจะไล่สถานะตามลำดับต่อไปนี้ (บางขั้นตอนมีเฉพาะเมื่อเปิดตัวเลือกที่เกี่ยวข้อง)
| สถานะ |
คำอธิบาย |
QUEUED |
เข้าคิว รอ worker รับงาน |
SPLITTING |
กำลังแบ่งช่วงเสียง (VAD) |
TRANSCRIBING |
กำลังถอดเสียงเป็นข้อความ |
ALIGNING |
กำลังจัดตำแหน่งเวลาของแต่ละคำ |
LLM_SPLITTING |
กำลังตัดประโยคด้วยโมเดลภาษา (เฉพาะเมื่อ forcealigner_level="llmsplitting") |
FORCEDALIGN_2ND |
กำลังจัดตำแหน่งเวลารอบที่สอง (เฉพาะเมื่อ forcealigner_level="llmsplitting") |
PREPARING_SRT |
กำลังเตรียมข้อมูลซับไตเติล |
DIARIZING |
กำลังระบุผู้พูด (เฉพาะเมื่อ speaker_diarization=true) |
BUILDING_SRT |
กำลังสร้างไฟล์ซับไตเติล |
REVISING_SRT |
กำลังขัดเกลาข้อความ (เฉพาะเมื่อ revise_srt=true) |
READY |
✅ เสร็จสิ้น — ดาวน์โหลดผลลัพธ์ได้ |
FAILED |
❌ งานล้มเหลว — ดูรายละเอียดใน failed_stage และ error |
การ poll: เรียกซ้ำทุก ~1 วินาทีจนกว่า state จะเป็น READY หรือ FAILED ซึ่งเป็นสถานะสิ้นสุดทั้งคู่
ฟิลด์เพิ่มเติมเมื่อ state = READY
| ฟิลด์ |
ชนิด |
คำอธิบาย |
srt_url |
string (URL) |
ลิงก์ดาวน์โหลด result.srt (presigned URL มีอายุจำกัด) |
vtt_url |
string (URL) |
ลิงก์ดาวน์โหลด result.vtt |
compact_url |
string (URL) |
ลิงก์ดาวน์โหลด result.compact.txt (ข้อความล้วน) |
srt_object_key, vtt_object_key, compact_object_key |
string |
ตำแหน่งไฟล์ในระบบจัดเก็บ เช่น jobs/<job_id>/result.srt |
ลิงก์ดาวน์โหลดเป็น presigned URL ที่มีวันหมดอายุ — หากลิงก์หมดอายุ ให้เรียก GET /status อีกครั้งเพื่อรับลิงก์ใหม่
ฟิลด์เพิ่มเติมเมื่อ state = FAILED
| ฟิลด์ |
ชนิด |
คำอธิบาย |
failed_stage |
string |
ขั้นตอนที่งานล้มเหลว เช่น ALIGNING |
error |
string |
ข้อความอธิบายสาเหตุ |
ตัวอย่าง Response — งานกำลังประมวลผล
{
"job_id": "0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"state": "TRANSCRIBING",
"source_url": "https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3",
"audio_duration_seconds": 213.4,
"started_at": "2026-07-10T09:15:24.102Z",
"srt_object_key": null,
"config": { "language": "th", "srt_target_chars": 40, "speaker_diarization": false },
"s1_queued_ts": "2026-07-10T09:15:22.481Z",
"s2_splitting_ts": "2026-07-10T09:15:24.102Z",
"s3_transcribing_ts": "2026-07-10T09:15:41.877Z",
"s4_aligning_ts": null,
"s4a_llm_splitting_ts": null,
"s4b_forcedalign_2nd_ts": null,
"s5_preparing_srt_ts": null,
"s6_diarizing_ts": null,
"s7_building_srt_ts": null,
"s8_revising_srt_ts": null,
"s9_ready_ts": null
}
ตัวอย่าง Response — งานเสร็จสิ้น
{
"job_id": "0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"state": "READY",
"source_url": "https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3",
"audio_duration_seconds": 213.4,
"srt_object_key": "jobs/0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64/result.srt",
"srt_url": "https://...presigned.../result.srt?X-Amz-Expires=...",
"vtt_object_key": "jobs/0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64/result.vtt",
"vtt_url": "https://...presigned.../result.vtt?X-Amz-Expires=...",
"compact_object_key": "jobs/0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64/result.compact.txt",
"compact_url": "https://...presigned.../result.compact.txt?X-Amz-Expires=...",
"s9_ready_ts": "2026-07-10T09:18:03.554Z"
}
ตัวอย่าง Response — งานล้มเหลว
{
"job_id": "0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"state": "FAILED",
"failed_stage": "ALIGNING",
"error": "forcealigner request failed"
}
ข้อผิดพลาดที่อาจพบ
| สถานะ |
สาเหตุ |
ตัวอย่างข้อความ |
401 Unauthorized |
ไม่มีหรือ API key ไม่ถูกต้อง |
— |
404 Not Found |
ไม่พบ job_id ที่ระบุ |
"job not found" |