Get transcribe job status
Request
- Base URL: https://api.ffmpeg-micro.com
- URL: https://api.ffmpeg-micro.com/v1/transcribe/{id}
- Auth: HTTP bearer
Path parameters
Response
Transcribe job details
Job lifecycle: pending (created, awaiting pickup) → processing → completed | failed; a user cancellation sets canceled (US spelling). Note there is no queued status — new jobs start as pending.
GCS URL of the source audio/video (echoed from the request)
Same value as media_url (legacy field name on reads)
Always srt for transcribe jobs
gs:// URL of the generated SRT once status is completed. Use /v1/transcribe/{id}/download to obtain a signed HTTPS URL.
Populated when status is failed or canceled ("Job canceled by user")
Machine classification derived from error_message (generated column). Only meaningful when status is failed; jobs with no error carry unknown, never null.
Duration of the source media (drives billing — input minutes)
Billable minutes, metered per second on input duration (a 19-second job bills 0.3167). Not an integer.
Wall-clock processing time measured by the toolkit; null until completed
Jobs waiting in the job's toolkit lane at acceptance, this one included: the accepting worker's queue length right after this job was enqueued, so 1 means it was next in line. Set once at acceptance and never updated: a rough "how far back was I", not a live counter. Once started_at is set the job is no longer waiting, whatever this says. Null on jobs accepted before the field existed, or when the toolkit's accept response carried no queue length.
The processing lane the job runs in. Jobs with many large inputs (more than five 4K frames' worth of pixels in total) go to heavy, a service with more memory. Otherwise, inputs longer than two minutes (by probed length or requested output span) go to long; everything else is short. Each lane is a separate service, so nothing in one can delay a job in another. Null on jobs accepted before lanes existed.
When the toolkit began executing the job. Set as soon as encoding starts, so null means the job is still waiting in its lane and non-null with status processing means it is encoding now. If that start signal was missed, it is filled from the completion or failure report. started_at - created_at is submission-to-start and includes the gateway's own download and probe before dispatch, so it is an upper bound on queue wait, not the wait itself.
Internal user identifier resolved from API key
Example response
{
"id": "f8e6a1f4-2da3-496e-9e29-4d63502ad90c",
"media_url": "gs://<YOUR_BUCKET>/narration.mp3",
"output_url": "gs://ffmpeg-micro-user-<user-id>-output/<job-id>.srt",
"queue_position": 3
}