> ## 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 image batch status

> Check the overall status of an image batch

<ParamField path="bulk_job_id" type="string" required>
  Returned from [Generate images](/docs/api-reference/generation/bulk-generate-images).
</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/image-bulk-jobs/{bulk_job_id}/status/" \
    -H "Authorization: Bearer $TRUEFAN_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK — still processing theme={null}
  {
    "bulk_job_id": "8c1f2e3a-...",
    "status": "processing",
    "batch_name": "Diwali greetings",
    "created": "2026-08-21T10:00:00Z",
    "modified": "2026-08-21T10:03:00Z",
    "summary": { "total": 2, "success": 1, "failed": 0, "pending": 1 },
    "csv_ready": false
  }
  ```

  ```json 200 OK — done theme={null}
  {
    "bulk_job_id": "8c1f2e3a-...",
    "status": "done",
    "batch_name": "Diwali greetings",
    "created": "2026-08-21T10:00:00Z",
    "modified": "2026-08-21T10:04:00Z",
    "summary": { "total": 2, "success": 2, "failed": 0, "pending": 0 },
    "csv_ready": true
  }
  ```

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

  ```json 404 Not Found theme={null}
  { "error": "Image bulk job not found" }
  ```
</ResponseExample>

## Response fields

<ResponseField name="status" type="string">
  The job as a whole: `pending` → `processing` → `dispatched` → `done` or `failed`. `done` means every row reached a terminal state — check `summary` for how many succeeded vs. failed.
</ResponseField>

<ResponseField name="summary" type="object">
  Headline counts — most integrations poll on `summary.pending == 0` to know the whole batch is done, rather than checking every row.
</ResponseField>

<ResponseField name="csv_ready" type="boolean">
  `true` once `status` is `done` — the point at which [Download image CSV export](/docs/api-reference/image-status/export-image-bulk-job-csv) becomes available for this batch. `false` (and the export 404s) at every earlier state, since some rows wouldn't have a result yet.
</ResponseField>

<Note>
  This endpoint only returns aggregate counts — no per-row detail, and no per-row identifiers, while a batch is still processing. Wait for `csv_ready` (or the [`bulk_job.completed` webhook](/docs/guides/webhooks)) and download every row's result at once via [Download image CSV export](/docs/api-reference/image-status/export-image-bulk-job-csv).
</Note>

<Tip>
  Image batches finish considerably faster than video ones — an image render is a layer composite, not an avatar render — so a poll interval tuned for video is usually far longer than an image batch needs.
</Tip>
