GET/v1/videos/{id}

Videos — Poll Job

Retrieve the current state of a video job.

Returns the job resource with HTTP 200 for every state, including failed and expired. A failed generation is never an HTTP error on poll — read status: "failed" plus the error object inside the body.

Path parameters

ParamNotes
idThe opaque job id returned on submit (vid_01J…). Valid until expires_at.

Polling pattern

  1. Submit a job → poll every few seconds.
  2. Terminal states: completed, failed, cancelled, expired.
  3. Stop polling when status is terminal; read result (completed) or error (failed).

Response

Completed — terminal, result populated, billing charged:

{
  "id": "vid_01J8TESTVID01",
  "object": "video.job",
  "model": "ltx-2",
  "status": "completed",
  "created_at": 1724680000,
  "started_at": 1724680001,
  "completed_at": 1724680030,
  "expires_at": 1725284800,
  "progress": 100,
  "result": {
    "url": "https://api.<domain>/v1/videos/vid_01J8TESTVID01/content",
    "content_type": "video/mp4",
    "seconds": 8
  },
  "billing": { "state": "charged" },
  "provider_metadata": { "provider": "ltx-staging", "actual_model": "ltx-2.3-distilled" }
}

Failed — also HTTP 200, never an HTTP error on poll; read the error object and note billing is void (never charged):

{
  "id": "vid_01J8TESTVID01",
  "object": "video.job",
  "model": "ltx-2",
  "status": "failed",
  "created_at": 1724680000,
  "started_at": 1724680001,
  "completed_at": 1724680030,
  "expires_at": 1725284800,
  "progress": 0,
  "error": {
    "type": "server_error",
    "message": "generation failed upstream",
    "code": "provider_error",
    "request_id": "req_01J8TESTVID01"
  },
  "billing": { "state": "void" },
  "provider_metadata": { "provider": "ltx-staging", "actual_model": "ltx-2.3-distilled" }
}

Field reference

FieldNotes
statusqueued → processing → completed | failed | cancelled; expired after retention.
progress0–100 when the provider reports it.
resultOnly when completed (and not expired): {url, content_type, seconds} — download the video from url.
errorOnly when failed: the uniform error shape with request_id.
billing.statepending → charged (completed) / void (failed, cancelled).
expires_atCompletion time + retention window (default 7 days). After it passes, status becomes expired, result is removed, and polls still return 200.

Errors

StatusCodeMeaning
404job_not_foundNo job with this id is visible to your organisation. Also returned for vid_ ids looked up without an organisation scope.

Plus the standard surface (401, 403, 429, 502, 503) — see Errors.