---
title: "List batches"
method: GET
path: "/batches"
tags: ["Batches"]
---

# List batches

`GET /batches`

List batches for your team, ordered from newest to oldest.

## Query parameters

- `cursor` string — Pagination cursor from a previous response
- `limit` integer — Maximum number of batches to return per page. Defaults to 100 when omitted; there is no upper bound.
- `status` 'completed' — Filter the listing to completed batches. `completed` is the only supported value; any other value returns a 400. Completed listings are ordered by expiry and use a distinct cursor, so keep sending `status=completed` on every cursor-paginated request.

## Headers

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

## Response `200`

OK

- BatchList
  - `object` 'list', required — The object type, always `list`.
  - `data` Batch[], required — The page of batches, newest first.
    - `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.
  - `hasMore` boolean, required — Whether there are more results
  - `nextCursor` string, nullable, required — Cursor for the next page

---

[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)
