แก้ไขและดาวน์โหลดซับไตเติล — PUT /jobs/{job_id}
งานที่ READY จะเก็บ result.srt และ result.karaoke.vtt ของ worker ไว้โดยไม่แก้ไขตลอดไป — ซับไตเติลที่แก้ไขแล้วถูกบันทึกเป็นสำเนาไว้ข้าง ๆ และถูกส่งให้แทนเมื่อดาวน์โหลด ทั้ง 4 route ในหน้านี้ตอบ 404 not found สำหรับทุกอย่างที่ไม่ใช่งาน READY (id ไม่มี รูปแบบผิด งานยังไม่เสร็จ หรือเป็นงานของผู้ใช้อื่นเมื่อเรียกด้วย session cookie)
| Header |
ค่า |
จำเป็น |
Authorization |
Bearer <API_KEY> |
ต้องระบุ |
Content-Type |
application/json (เฉพาะ PUT) |
ต้องระบุ |
บันทึกซับไตเติลที่แก้ไข — PUT /jobs/{job_id}
PUT https://api.lomasub.ai/jobs/<job_id>
| ฟิลด์ |
ชนิด |
จำเป็น |
คำอธิบาย |
srt |
string (1 ไบต์ – 2 MiB) |
ต้องระบุ |
ข้อความ SRT ที่แก้ไขแล้ว บันทึกเป็น edited.srt ข้างผลลัพธ์ของงาน และเขียนทับทุกครั้งที่บันทึก |
cue_count |
int ≥ 0 |
— (ค่าเริ่มต้น 0) |
จำนวนบรรทัดที่บันทึกลงรายการงานและแสดงใน GET /jobs |
karaoke_vtt |
string (1 ไบต์ – 2 MiB) | null |
— |
WebVTT พร้อม timestamp ระดับคำที่แก้ไขแล้ว บันทึกเป็น edited.karaoke.vtt เฉพาะเมื่องานมีผลลัพธ์ karaoke ไม่เช่นนั้นถูกละเลย ไม่ส่งมาถ้าต้องการคงไฟล์ karaoke เดิมไว้ |
ตัวอย่าง Request
curl -X PUT "https://api.lomasub.ai/jobs/7f3c2b1e-9a4d-4c8e-b2f1-5d6e7a8b9c0d" \
-H "Authorization: Bearer $LOMA_API_SECRET_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile srt interview.edited.srt '{srt: $srt, cue_count: 409}')"
Response — 200 OK
{"ok": true}
ดาวน์โหลดซับไตเติล
GET https://api.lomasub.ai/jobs/<job_id>.srt
GET https://api.lomasub.ai/jobs/<job_id>/original.srt
GET https://api.lomasub.ai/jobs/<job_id>/karaoke.vtt
| Route |
สิ่งที่ส่งกลับ |
ชื่อไฟล์แนบ |
Content type |
/jobs/{id}.srt |
SRT ที่แก้ไขแล้วถ้าเคยบันทึก ไม่เช่นนั้นเป็น result.srt ของ worker |
cancer-doc-check.srt |
text/plain; charset=utf-8 |
/jobs/{id}/original.srt |
result.srt ของ worker ซึ่งไม่ถูกเขียนทับเลย |
cancer-doc-check.original.srt |
text/plain; charset=utf-8 |
/jobs/{id}/karaoke.vtt |
karaoke VTT ที่แก้ไขแล้วถ้าเคยบันทึก ไม่เช่นนั้นเป็นของ worker — ตอบ 404 เมื่องานไม่มีไฟล์นี้ (forcealigner_level = none) |
cancer-doc-check.karaoke.vtt |
text/vtt; charset=utf-8 |
แต่ละ route ส่งกลับเป็นไฟล์แนบที่ตั้งชื่อตาม filename ของงานโดยตัดนามสกุลสื่อออกแล้วต่อท้ายตาม route (ตัวอย่างในตารางคือชื่อสำหรับ cancer-doc-check.mp4) ชื่อภาษาไทยส่งใน filename*=UTF-8''… พร้อมชื่อ ASCII สำรอง มาพร้อม Cache-Control: no-store และต่างจากลิงก์ presigned *_url ใน GET /status ตรงที่ route เหล่านี้ผ่าน API จึงต้องแนบ Authorization header
curl -o interview.current.srt "https://api.lomasub.ai/jobs/7f3c2b1e-9a4d-4c8e-b2f1-5d6e7a8b9c0d.srt" \
-H "Authorization: Bearer $LOMA_API_SECRET_KEY"
ข้อผิดพลาดที่อาจพบ
| สถานะ |
สาเหตุ |
ตัวอย่างข้อความ |
401 Unauthorized |
ไม่มีหรือ API key ไม่ถูกต้อง |
— |
404 Not Found |
งานไม่มี รูปแบบ id ผิด งานยังไม่ READY หรือ karaoke VTT ไม่มีสำหรับงานนี้ |
"not found" |
422 Unprocessable Entity |
srt ว่างหรือเกิน 2 MiB, cue_count ติดลบ |
ตอบเป็น list ตามรูปแบบ FastAPI |
502 Bad Gateway |
เขียนลง bucket ไม่สำเร็จตอน PUT |
"storage unavailable" |