---
title: "Lightweight status read used by /generate/<id>/status and the"
method: GET
path: "/api/v1/videos/{video_id}/status"
tags: ["Videos"]
---

# Lightweight status read used by /generate/<id>/status and the

`GET /api/v1/videos/{video_id}/status`

## Request

- Base URL: `https://api.avatarfactory.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.avatarfactory.io/api/v1/videos/{video_id}/status`
- Auth: one of:
  - API key in cookie `session`
  - HTTP bearer

video library's rendering-card poll (progress + label + ETA).

## Path parameters

- `video_id` integer, required

## Response `200`

OK

- VideoStatusResponse: Lightweight status payload for /generate/<id>/status hydration. Also the payload the video library's rendering cards poll, so it carries the live render trio — `progress` (0-100), `progress_label` ("Shot 2 of 3 · Kling") and `eta_seconds` (honest countdown learned from the user's render history). All None when not rendering. Phase 3 adds the progressive-reveal trio for multi-shot renders: `shots_ready` / `shots_total` (the "X of N shots ready" line) and `ready_scenes` (the finished per-shot clips available so far). Zero / empty for a single-job (non-multi-shot) render. The Shot Quality Feedback Loop adds `shots` (per-shot render status, so the re-roll UI can poll one shot) and `needs_rebuild` (the Full Cut is stale until a rebuild).
  - `avatar_id` integer, nullable
  - `avatar_name` string, nullable
  - `elapsed_seconds` integer, nullable
  - `eta_seconds` integer, nullable
  - `final_video_file` string, nullable
  - `id` integer, required
  - `needs_rebuild` boolean
  - `progress` integer, nullable
  - `progress_label` string, nullable
  - `ready_scenes` ReadySceneItem[]
    - `asset_id` integer, required
    - `scene_index` integer, nullable
    - `video_file` string, nullable
  - `script_text` string
  - `shots` ShotProgressItem[]
    - `attempts` integer
    - `awaiting_review` boolean
    - `candidate_clip` string, nullable
    - `shot_index` integer, required
    - `status` string, required
  - `shots_ready` integer, nullable
  - `shots_total` integer, nullable
  - `status` string, nullable
  - `title` string, nullable

## Other responses

- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/avatarfactory/apis/avatarfactory-api.md) · [All operations](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/revisions/66fc7aa3f296?raw)
