# GET /v1/batches/{batch_id}

> Progress: counts by status, spend so far.

In [Batches API](https://vestra.ai/developers/reference/api/batches.md): Many users at once: one ask each, followed together.

Send `Authorization: Bearer vk_test_...` on every call.

Progress: counts by status, spend so far.

Your API key, scope `runtime` or `all`. On the card: [`ask`](https://vestra.ai/developers/ask.md). Every call here is a checked sample.

## Request

Path:

- `batch_id` (`string`, required): The batch's id (`bat_...`).

## Answers 200

- `id` (`string`): The batch (bat_...). Example: `bat_7xk`.
- `object` (`"batch"`): Always batch.
- `status` (`"running" | "cancelled" | "completed"`): running: items are still starting or running. cancelled: you cancelled it, so no new item starts. completed: every item has finished.
- `deployment_id` (`string | null`): The deployment that answers its items (dep_...); null when none applies.
- `concurrency` (`integer`): How many items run at once.
- `item_count` (`integer`): How many items it has.
- `counts` (`object`): Its items, by status.
  - `queued` (`integer`): Items not started yet.
  - `running` (`integer`): Items running now.
  - `succeeded` (`integer`): Items that finished well.
  - `failed` (`integer`): Items that failed.
  - `cancelled` (`integer`): Items a cancel kept from starting.
- `spend_usd` (`number`): What it has cost so far, in billed US dollars: every item's conversation and all its work. Example: `0.061`.
- `metadata` (`map of string`): Your labels, as you sent them; empty when you sent none.
- `created_at` (`string`): When it was made, as an ISO 8601 time.
- `completed_at` (`string | null`): When it stopped running, completed or cancelled, as an ISO 8601 time; null while running.

## Code

**TypeScript**

```ts
const batch = vestra.ask([{ user: 'traveller-42', message: 'Is your flight hit by the storm?' }]);
const progress = await batch.get();
```

**Python**

```python
batch = vestra.ask([{"user": "traveller-42", "message": "Is your flight hit by the storm?"}])
progress = batch.get()
```

**CLI**

```bash
vestra events bat_7xk
```

**HTTP**

```bash
# Its status and counts, then each item's text: the work's answer.
curl "$VESTRA_BASE_URL/v1/batches/bat_7xk" \
  -H "Authorization: Bearer $VESTRA_API_KEY"

curl "$VESTRA_BASE_URL/v1/batches/bat_7xk/items" \
  -H "Authorization: Bearer $VESTRA_API_KEY"
```

**MCP**: No sample in your language for this route, so here it is over HTTP.
