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

# Start Batch

> Start a paused batch to begin downloading all episodes

## Overview

Starts a paused batch, enqueuing all episode jobs for processing. The batch must be in `paused` status.

## Header Parameters

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication
</ParamField>

## Path Parameters

<ParamField path="id" type="string" required>
  The batch UUID returned from `POST /jobs`
</ParamField>

## Response

<ResponseField name="batch_id" type="string">
  The batch UUID
</ResponseField>

<ResponseField name="started_jobs" type="integer">
  Number of jobs successfully enqueued for processing
</ResponseField>

<ResponseField name="status" type="string">
  New batch status (`processing`)
</ResponseField>

## Example

<CodeGroup>
  ```bash Request theme={null}
  curl -X POST "https://api.tornadoapi.io/batch/550e8400-e29b-41d4-a716-446655440001/start" \
    -H "x-api-key: sk_your_api_key"
  ```

  ```json 200 OK theme={null}
  {
    "batch_id": "550e8400-e29b-41d4-a716-446655440001",
    "started_jobs": 142,
    "status": "processing"
  }
  ```
</CodeGroup>

## Error Responses

<ResponseExample>
  ```json 400 Bad Request theme={null}
  {
    "error": "Batch is not paused (current status: processing)"
  }
  ```

  ```json 401 Unauthorized theme={null}
  {
    "error": "Batch does not belong to this API key"
  }
  ```

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

## Workflow

The typical paused batch workflow is:

1. `POST /jobs` with `paused: true` - Create batch, get episode titles
2. `PATCH /batch/{id}/jobs` - Rename episodes as needed
3. `POST /batch/{id}/start` - Start downloading
4. `GET /batch/{id}` - Poll for progress
