---
title: "Get bulk render status"
canonical_url: https://docs.zvid.io/docs/endpoints/get-bulk-render/
source: docs/endpoints/get-bulk-render.api.mdx
content_revision: 6338386a1dd87e4a
---

# Get bulk render status

`GET /api/render/bulk/{id}`

Batch status with per-item job states and results.

## Authentication

- Option 1: `x-api-key: YOUR_API_KEY` (header). API key for authentication. Create one in your dashboard.
- Option 2: `Authorization: Bearer YOUR_ACCESS_TOKEN`. Dashboard JWT in Authorization: Bearer &lt;token>, only on operations that explicitly list this scheme. Prefer x-api-key for REST integrations. OAuth for hosted MCP is a separate connection at https://mcp.zvid.io/mcp.

Create API keys at [app.zvid.io/api-keys](https://app.zvid.io/api-keys). Keep credentials on your server.

## Parameters

| Parameter | Location | Type | Required | Description and constraints |
| --- | --- | --- | --- | --- |
| `id` | path | string | Yes |  |

## Request

The shell examples read credentials from `ZVID_API_KEY` (or `ZVID_ACCESS_TOKEN` for Bearer authentication). Set that variable in your environment. Replace sample project, template, job, and asset identifiers with values from your own account.

This operation does not take a request body.

### Request example

```bash
curl --request GET 'https://api.zvid.io/api/render/bulk/YOUR_ID' \
  --header "x-api-key: $ZVID_API_KEY"
```

## Responses


### HTTP 200

Batch and child job results

Content type: `application/json`.

Required properties: `bulk`, `jobs`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `response.bulk` | object | Yes | Required properties: `id`, `status`, `totalJobs`, `counts`. |
| `response.jobs` | array of [BulkJobSummary](#schema-bulk-job-summary) | Yes |  |

**Nested field: `response.bulk`**

Required properties: `id`, `status`, `totalJobs`, `counts`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `response.bulk.id` | string | Yes |  |
| `response.bulk.name` | string / null | No |  |
| `response.bulk.templateId` | string / null | No |  |
| `response.bulk.type` | `"video"` / `"image"` | No |  |
| `response.bulk.status` | string | Yes |  |
| `response.bulk.totalJobs` | integer | Yes |  |
| `response.bulk.creditsReserved` | number | No |  |
| `response.bulk.counts` | object | Yes | Required properties: `completed`, `failed`, `pending`. |
| `response.bulk.createdAt` | string | No | Format: `date-time`. |

**Nested field: `response.bulk.counts`**

Required properties: `completed`, `failed`, `pending`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `response.bulk.counts.completed` | integer | Yes |  |
| `response.bulk.counts.failed` | integer | Yes |  |
| `response.bulk.counts.pending` | integer | Yes |  |

**Nested field: `response.jobs`**

**Array item: `response.jobs[]`**

Schema: [BulkJobSummary](#schema-bulk-job-summary).


**Representative successful response response**

```json
{
  "bulk": {
    "id": "blk_abcdefghijklmnopqrst",
    "name": "One image",
    "templateId": null,
    "type": "image",
    "status": "completed",
    "totalJobs": 1,
    "creditsReserved": 1,
    "counts": {
      "completed": 1,
      "failed": 0,
      "pending": 0
    },
    "createdAt": "2026-09-22T12:00:00Z"
  },
  "jobs": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "status": "completed",
      "name": "First image",
      "creditsEstimated": 0,
      "creditsConsumed": 0,
      "videoDuration": null,
      "videoResolution": "1200x630",
      "outputUrl": "https://example.com/image.png",
      "thumbnailUrl": null,
      "errorMessage": null,
      "createdAt": "2026-09-22T12:00:00Z",
      "completedAt": "2026-09-22T12:00:03Z"
    }
  ]
}
```

### HTTP 401

Unauthorized

Content type: `application/json`.

Unknown properties are rejected. Required properties: `error`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `response.error` | string | Yes | Error type |
| `response.message` | string | No | Human-readable error message |


### HTTP 404

Batch not found
No response body is defined.

## Schema definitions

The following definitions describe the fields referenced above. Expand a definition to inspect its complete contract.


### schema bulk render detail

**BulkRenderDetail**


Required properties: `bulk`, `jobs`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `BulkRenderDetail.bulk` | object | Yes | Required properties: `id`, `status`, `totalJobs`, `counts`. |
| `BulkRenderDetail.jobs` | array of [BulkJobSummary](#schema-bulk-job-summary) | Yes |  |

**Nested field: `BulkRenderDetail.bulk`**

Required properties: `id`, `status`, `totalJobs`, `counts`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `BulkRenderDetail.bulk.id` | string | Yes |  |
| `BulkRenderDetail.bulk.name` | string / null | No |  |
| `BulkRenderDetail.bulk.templateId` | string / null | No |  |
| `BulkRenderDetail.bulk.type` | `"video"` / `"image"` | No |  |
| `BulkRenderDetail.bulk.status` | string | Yes |  |
| `BulkRenderDetail.bulk.totalJobs` | integer | Yes |  |
| `BulkRenderDetail.bulk.creditsReserved` | number | No |  |
| `BulkRenderDetail.bulk.counts` | object | Yes | Required properties: `completed`, `failed`, `pending`. |
| `BulkRenderDetail.bulk.createdAt` | string | No | Format: `date-time`. |

**Nested field: `BulkRenderDetail.bulk.counts`**

Required properties: `completed`, `failed`, `pending`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `BulkRenderDetail.bulk.counts.completed` | integer | Yes |  |
| `BulkRenderDetail.bulk.counts.failed` | integer | Yes |  |
| `BulkRenderDetail.bulk.counts.pending` | integer | Yes |  |

**Nested field: `BulkRenderDetail.jobs`**

**Array item: `BulkRenderDetail.jobs[]`**

Schema: [BulkJobSummary](#schema-bulk-job-summary).


### schema bulk job summary

**BulkJobSummary**


One render job as returned by the job list endpoint.

Required properties: `id`, `status`, `createdAt`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `BulkJobSummary.id` | string | Yes |  |
| `BulkJobSummary.status` | `"queued"` / `"processing"` / `"completed"` / `"failed"` | Yes | Job status |
| `BulkJobSummary.name` | string / null | No |  |
| `BulkJobSummary.creditsEstimated` | number / null | No |  |
| `BulkJobSummary.creditsConsumed` | number / null | No |  |
| `BulkJobSummary.videoDuration` | number / null | No | Output duration in seconds (null for images) |
| `BulkJobSummary.videoResolution` | string / null | No |  |
| `BulkJobSummary.outputUrl` | string / null | No | CDN URL of the finished output (null until completed) |
| `BulkJobSummary.thumbnailUrl` | string / null | No |  |
| `BulkJobSummary.errorMessage` | string / null | No |  |
| `BulkJobSummary.templateId` | string / null | No | Source template, when the job was rendered from one |
| `BulkJobSummary.createdAt` | string | Yes | Format: `date-time`. |
| `BulkJobSummary.completedAt` | string / null | No | Format: `date-time`. |


### schema authentication error

**AuthenticationError**


Unknown properties are rejected. Required properties: `error`.

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| `AuthenticationError.error` | string | Yes | Error type |
| `AuthenticationError.message` | string | No | Human-readable error message |


## Related resources

- [OpenAPI specification](https://docs.zvid.io/openapi.yaml)
- [Project payload schema](https://docs.zvid.io/schemas/render-payload.schema.json)
- [Quick Start](https://docs.zvid.io/docs/quick-start/)
- [Authentication guide](https://docs.zvid.io/docs/authentication/)
