# GET /v1/batches/{batch_id}/items

> Each item with its task id and result.

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.

Each item with its task id and result.

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_...`).

Query:

- `limit` (`integer`): How many items per page, 1 to 100. Default 20.
- `cursor` (`string`): Where to go on from: the `next_cursor` of the page before, unchanged. Absent: the first page.

## Answers 200

- `data` (`object[]`): The items on this page.
  - `object` (`"batch.item"`): Always batch.item.
  - `index` (`integer`): Where it was in the items you sent, from 0.
  - `user_id` (`string | null`): Your id for its user; null on your company's own Bash.
  - `status` (`"queued" | "running" | "succeeded" | "failed" | "cancelled"`): queued: not started yet. running: its conversation is working. succeeded or failed: it has finished. cancelled: the batch was cancelled before it started.
  - `conversation_id` (`string | null`): The conversation it runs in (conv_...); null until it starts.
  - `task_id` (`string | null`): The work it started (task_...); null until it starts work.
  - `result` (`object | null`): What it came to, once it succeeded; null before, and when it failed.
    - `reply` (`string | null`): What Bash said when it took the item: an item goes straight to work, so this is the one line Started work on it. The work's answer is text.
    - `text` (`string | null`): The work's answer: its final reply, the words of its last step that said anything. Null when the item did not go to work (its reply is the answer then) or the work ended with no final reply. Example: `Your flight 6E 2134 is on time.`.
    - `data` (`any | null`): Data the work returned for an output_schema; null when it returned none.
    - `outcome` (`object | null`): Whether it met its success criteria; null when there were none.
  - `error` (`object | null`): Why it failed; null unless it did.
    - `code` (`string`): A stable code to branch on.
    - `message` (`string`): What went wrong, in plain words.
  - `metadata` (`map of string`): Your labels for this item, as you sent them.
  - `created_at` (`string`): When the batch was made, as an ISO 8601 time.
  - `finished_at` (`string | null`): When it finished, as an ISO 8601 time; null until then.
- `next_cursor` (`string | null`): Send it as `cursor` for the next page; null on the last page.

## Code

**TypeScript**

```ts
const batch = vestra.ask([{ user: 'traveller-42', message: 'Is your flight hit by the storm?' }]);
const results: unknown[] = [];
for await (const item of batch.items()) results.push(item.result);
```

**Python**

```python
batch = vestra.ask([{"user": "traveller-42", "message": "Is your flight hit by the storm?"}])
results = [item.result for item in batch.items()]
```

**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.
