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

# Get a batch

> One batch, with its signing, printing and download details.

Scope: `batches:read`. A batch number your workspace doesn't have is a `404`.

**id** `string` *required*

The batch number, such as `B-1045`.

The response has every field of a [list item](https://docs.satyakod.com/api-reference/list-batches.md), plus:

**symbology** `string` *required*

How the codes are printed: `gs1_datamatrix`, `gs1_qr`, `private_code`, or serial only:
`code128`, `datamatrix`, `qr`.

**signedAt** `string`

When the serials were signed. `signedBy` (`id`, `name`, `email`) is who signed them.

**signingKeyAlgorithm** `string`

**printedAt** `string`

When the batch was printed.

**goodCount** `integer`

Once printed: labels printed well. `voidedCount` is labels voided on the line.

**counterfeitScans** `integer` *required*

Scans of this batch with a `counterfeit` verdict.

**downloads** `object[]` *required*

The batch's files once signed: `kind` (`printer_job`, `serial_csv`, `proof_pdf`), `label`,
`format` (`ZPL`, `CSV`, `PDF`) and `sizeBytes` (an estimate). Empty on drafts.

**scannerPhones** `integer` *required*

Phones with the Satyakod app that scanned this batch and asked for alerts.

**notices** `object[]`

Recall and copied-code notices sent to those phones, newest first: `id`, `kind` (`recall` or
`counterfeit`), `message`, `createdAt`, `notified` (phones it went to) and, for a revoked range,
`serials` (`first`, `last`).

The response also carries what the dashboard's batch form and print controls use: `regionIds`,
`regionLabel`, `serialFormat`, `labelTemplateId`, `printLineId`, `printLineDevice`,
`signingKeyLocation`, `canSendToPrinter`, `printRequestedAt` and `printError`.

```bash cURL theme={null}
curl https://api.satyakod.com/v1/batches/B-1045 \
  -H "Authorization: Bearer $SATYAKOD_KEY"
```

```json 200 theme={null}
{
  "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",
  "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",
  "symbology": "gs1_datamatrix",
  "signingKeyAlgorithm": "HMAC-SHA256 · 32-bit tag",
  "signedAt": "2026-11-02T09:15:00+00:00",
  "signedBy": { "id": "12", "name": "Priya Nair", "email": "priya@example.com" },
  "printedAt": "2026-11-03T11:40:00+00:00",
  "goodCount": 4988,
  "voidedCount": 12,
  "counterfeitScans": 3,
  "canSendToPrinter": false,
  "downloads": [
    { "kind": "printer_job", "label": "Printer job", "format": "ZPL", "sizeBytes": 1450000 },
    { "kind": "serial_csv", "label": "Serial list", "format": "CSV", "sizeBytes": 160000 },
    { "kind": "proof_pdf", "label": "Proof sheet", "format": "PDF", "sizeBytes": 90000 }
  ],
  "scannerPhones": 41
}
```


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