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
| Param | Notes |
|---|---|
id | The opaque job id returned on submit (vid_01J…). Valid until expires_at. |
Polling pattern
- Submit a job → poll every few seconds.
- Terminal states:
completed,failed,cancelled,expired. - Stop polling when
statusis terminal; readresult(completed) orerror(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
| Field | Notes |
|---|---|
status | queued → processing → completed | failed | cancelled; expired after retention. |
progress | 0–100 when the provider reports it. |
result | Only when completed (and not expired): {url, content_type, seconds} — download the video from url. |
error | Only when failed: the uniform error shape with request_id. |
billing.state | pending → charged (completed) / void (failed, cancelled). |
expires_at | Completion time + retention window (default 7 days). After it passes, status becomes expired, result is removed, and polls still return 200. |
Errors
| Status | Code | Meaning |
|---|---|---|
| 404 | job_not_found | No 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.