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

# List batches

> Your workspace's batches, newest first.

Scope: `batches:read`. A paginated list (`items`, `total`, `page`, `pageSize`); see
[Requests and responses](https://docs.satyakod.com/api-reference/introduction.md#requests-and-responses).

**status** `string`

`draft`, `signing`, `at_printer`, `printed` or `revoked`. Any other value is ignored.

**family** `string`

`gs1_signed` or `private_code`. Any other value is ignored.

**q** `string`

Matches part of the batch number, the product name or the lot. A full serial finds the batch it
was issued in.

**sort** `string`

`created`, `product`, `quantity`, `status` or `number`; prefix with `-` for descending
(`-quantity`). Without it, or with any other value, newest first.

**page** `integer` (default: 1)

**pageSize** `integer` (default: 20)

Up to 200.

Each item:

**id** `string` *required*

The batch number, such as `B-1045`. Use it with [Get a batch](https://docs.satyakod.com/api-reference/get-batch.md).

**productId** `string` *required*

**productName** `string` *required*

**gtin** `string`

The product's GTIN-14, when it has one.

**codeFamily** `string` *required*

`gs1_signed` or `private_code`.

**verification** `string` *required*

Where the codes are checked: `online`, `offline` or `both`. See
[Verification modes](https://docs.satyakod.com/concepts/verification-modes.md).

**quantity** `integer` *required*

**status** `string` *required*

`draft`, `signing`, `at_printer`, `printed` or `revoked`.

**serialRange** `object`

The batch's `first` and `last` serial. Absent on drafts.

**lot** `string`

**productionDate** `string`

`YYYY-MM-DD`; `expiryDate` likewise.

**authorisedRegion** `string`

Where the batch may be sold. Absent when it may be sold everywhere.

**printLine** `string` *required*

The print line's name; empty when the files are printed outside Satyakod.

**signingKeyId** `string`

The key that signed the serials. Absent on drafts.

**scannedCount** `integer` *required*

Scans of this batch's codes so far.

**createdBy** `object` *required*

`id`, `name` and `email`; `{"id": "system", "name": "System", "email": ""}` when no person
created it.

**createdAt** `string` *required*

ISO 8601; `updatedAt` likewise.

**revokedAt** `string`

When codes were revoked. `revokedRange` (`first`, `last`) is the range revoked, when only part of
the batch was, and `revokedCount` how many serials are revoked (the whole batch or the range).

Also `signedCodes` (`true` when each code also carries a signature that can be checked offline) and
`designId` (the Private Code design, on `private_code` batches).

```bash cURL theme={null}
curl "https://api.satyakod.com/v1/batches?status=printed&pageSize=1" \
  -H "Authorization: Bearer $SATYAKOD_KEY"
```

```json 200 theme={null}
{
  "items": [
    {
      "id": "B-1045",
      "productId": "prd_wb18",
      "productName": "Wiper blade WB-18",
      "gtin": "08901234567893",
      "codeFamily": "gs1_signed",
      "verification": "online",
      "quantity": 5000,
      "status": "printed",
      "serialRange": { "first": "0021-A051-2PXK-20J9", "last": "0021-A051-7RQM-4D2K" },
      "lot": "L2611A",
      "productionDate": "2026-11-02",
      "authorisedRegion": "West · MH, GJ, GA",
      "printLine": "Pune line 2",
      "signingKeyId": "acme-gs1-2026-01",
      "scannedCount": 1312,
      "createdBy": { "id": "12", "name": "Priya Nair", "email": "priya@example.com" },
      "createdAt": "2026-11-02T09:14:00+00:00",
      "updatedAt": "2026-11-03T11:40:00+00:00"
    }
  ],
  "total": 37,
  "page": 1,
  "pageSize": 1
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.