---
title: "Get a batch"
method: GET
path: "/batches/{id}"
tags: ["Batches"]
---

# Get a batch

`GET /batches/{id}`

Retrieve a single batch by ID.

## Path parameters

- `id` string, required — Batch ID.

## Headers

- `Exa-Beta` 'batches-2026-06-06', required — Required beta token for the Batch API.

## Response `200`

OK

- Batch
  - `id` string, required — Batch ID. New batch IDs are returned with the `batch_` prefix.
  - `object` 'batch', required — The object type, always `batch`.
  - `status` 'in_progress' | 'completed' | 'cancelling' | 'cancelled' | 'expired', required — Lifecycle status of the batch.
  - `requestCounts` BatchRequestCounts, required
    - `total` integer, required — Total requests in the batch.
    - `completed` integer, required — Requests that have completed successfully.
    - `failed` integer, required — Requests that have failed.
  - `createdAt` string, date-time, required — When the batch was created.
  - `expiresAt` string, date-time, nullable, required — When the batch expires, or `null` if it does not expire.
  - `endedAt` string, date-time, nullable, required — When the batch reached a terminal status, or `null` while it is still running.
  - `resultsUrl` string, nullable, required — Short-lived presigned download URL for the batch results file (JSONL), or `null` until the batch completes. This is a direct object-store download link, not an API route; fetch it as-is and re-fetch the batch to mint a fresh URL once it expires.
  - `metadata` object, required — Caller-provided key-value metadata for your own tracking.

---

[API](https://skmtc.net/exa/apis/exa-public-api.md) · [All operations](https://skmtc.net/exa/apis/exa-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/exa/exa-public-api/revisions/cebbdd9640af/schema)
