Job lifecycle
Track jobs, handle cancellations, and download captions.
Status
Read GET /jobs/{id} about once a minute, or use webhooks.
| Status | Meaning |
|---|---|
queued | Accepted, waiting to start. |
processing | Captioning is in progress. |
completed | Captions are ready. |
cancelled | Stopped; inspect cancellation. |
eta is an estimate; passing it does not mean the job failed. progress reaches 100 on completion.
Cancellations
A cancelled job still returns HTTP 200. Check status, use cancellation.reason in your code, and show cancellation.message to users.
| Reason | Action | Charge |
|---|---|---|
unsupported_language | Submit a supported language. | Refunded |
unsupported_media | Duration mismatch; submit a corrected file or link. | Refunded |
unusable_media | Replace damaged or unreadable audio. | Refunded |
media_unavailable | Make the media accessible. | Refunded |
deleted | Someone deleted the job in the dashboard. | Kept |
not_started | Submit a new order. | Never charged |
Refunded jobs show cost.amount: "0.00".
Downloading captions
GET /jobs/{id}/captions returns the file in the requested format: SRT (default), VTT, TXT, DOCX, or JSON. See the reference for format options and restrictions.
The job’s captions object also contains download URLs. These require the same bearer authentication as API requests.
Downloads return the latest revision, including dashboard edits. JSON includes a revision number.