Endpoint
Job status values
complete and failed are both terminal — a job never leaves either state, and
never moves from failed back to complete. Once you see one of them you can
stop polling.
failed is only ever returned when the pipeline actually recorded a failure. It
is never inferred from how long a job has been running, so a slow job is
processing, not failed.
Stage
Alongsidestatus, every response carries a finer-grained stage so you can
watch a job advance without inferring progress from elapsed time.
A job submitted with
align=false goes straight from transcribing to done.
How long jobs take
Measured end to end on production traffic, a 3-minute track takes roughly 90–130 seconds of processing — about 0.4–0.8× the audio duration. Longer tracks and batches under load take longer.Response shapes
Processing
transcript_completed_at is stamped when the transcript is ready, which is
before alignment finishes. completed_at means the whole job is done. Use
status rather than either timestamp to decide whether a job has finished.
Complete — align=true, word_align=true (default)
words_original and words_transliterated are only present when word_align_requested: true and alignment is complete. Jobs submitted with word_align=false include only lrc_* and srt_* in downloads.Complete — align=false
Whenalign=false was passed at submission, downloads is omitted from the response.
Failed
error.stage is the pipeline stage that failed — transcription or
alignment. A job that failed at alignment still has a usable transcript in
results; one that failed at transcription has nothing.
Additional fields
Review fields
Present whenreview=true was passed at submission:
review_url is null until alignment completes and the token is generated. review_approved_at is null until the artist approves.
second_opinion and alignment
Present on every response. Both arenull when the corresponding check did not
run — see Quality Signals for the full field reference.
second_opinion is available as soon as the transcript is, so it is readable
while a job is still aligning. alignment is null until alignment completes,
and on jobs submitted with align=false.
external_id
Present on all jobs. Contains the value passed at submission, ornull if not provided.
job_id → track lookup.
Audio URL field
Present when the job was submitted viaaudio_url mode: