> ## Documentation Index
> Fetch the complete documentation index at: https://tfstudio.truefan.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get single video status

> Check one video's status by bulk_job_id + your own external_id

Send the `bulk_job_id` from [Generate videos](/docs/api-reference/generation/bulk-generate-videos) and the `external_id` you set on that row to get that one video's status — the only per-row lookup in this API. Use this while a batch is still processing; once the whole batch is done, the same information (plus every other row's) is in the [CSV export](/docs/api-reference/status/export-bulk-job-csv) instead.

<ParamField path="bulk_job_id" type="string" required>
  Returned from [Generate videos](/docs/api-reference/generation/bulk-generate-videos).
</ParamField>

<ParamField path="external_id" type="string" required>
  Whatever you sent for this row's `external_id` — see [Correlating results back to your own data](/docs/guides/bulk-generate-videos#correlating-results-back-to-your-own-data).
</ParamField>

<ParamField header="Authorization" type="string" required>
  `Bearer {api_key}`
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://dev-backend-ai.truefans.in/api/external/v1/bulk-jobs/{bulk_job_id}/generations/{external_id}/status/" \
    -H "Authorization: Bearer $TRUEFAN_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "generation_id": "f339beb9-305d-4a01-89ef-669b7ec70de3",
    "row_index": 0,
    "external_id": "usr_9182",
    "status": "processing",
    "result_video_url": null,
    "thumbnail_url": null,
    "error_message": null,
    "created": "2026-08-21T10:02:00Z",
    "modified": "2026-08-21T10:02:05Z"
  }
  ```

  ```json 401 Unauthorized theme={null}
  { "error": "API key required" }
  ```

  ```json 404 Not Found — no bulk job theme={null}
  { "error": "Bulk job not found" }
  ```

  ```json 404 Not Found — no matching row theme={null}
  { "error": "No row with this external_id in this bulk job" }
  ```

  ```json 409 Conflict theme={null}
  { "error": "external_id is not unique within this bulk job — multiple rows match" }
  ```
</ResponseExample>

<Warning>
  `external_id` only needs to be unique **within the batch that defined it** — nothing stops you from reusing the same value across different batches (that's fine, since lookups are always scoped to one `bulk_job_id`), but reusing it for two rows in the **same** batch makes this endpoint ambiguous and returns `409`.
</Warning>

## Response fields

<ResponseField name="status" type="string">
  `pending` → `processing` → `success` or `failed`. Terminal states are `success`/`failed` — stop polling once you reach one.
</ResponseField>

<ResponseField name="row_index" type="integer">
  This row's position in the `rows` list it was submitted with — `0` for a single-video (one-row) request.
</ResponseField>

<ResponseField name="result_video_url" type="string | null">
  Populated only once `status` is `success`.
</ResponseField>

<ResponseField name="error_message" type="string | null">
  Populated only once `status` is `failed`.
</ResponseField>
