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

# Get a batch

`GET /batches/{id}`

## Request

- Base URL: `https://services.certseal.com/api/v1`
- URL: `https://services.certseal.com/api/v1/batches/{id}`
- Auth: HTTP bearer

Returns the batch regardless of archive state — verification
tooling can keep resolving archived batches forever. Use the
`archivedAt` field on the response to detect frozen batches.

## Path parameters

- `id` string, required

## Response `200`

The batch.

- object
  - `batch` Batch, required
    - `id` string, required
    - `workspaceId` string, required
    - `title` string, required
    - `description` string, nullable
    - `designId` string, required
    - `emailTemplateId` string, nullable
    - `courseName` string, nullable: Default `{{course_name}}` for recipients in this batch.
    - `issuerName` string, nullable: Default `{{issuer_name}}` for recipients in this batch.
    - `recipientCount` integer, required: Cached count of recipients in the batch.
    - `archivedAt` string, date-time, nullable, required: Soft-delete marker. `null` for active batches; set when the batch has been archived via `POST /batches/{id}/archive`. Archived batches still serve `GET /batches/{id}`, public certificate URLs, and certificate lookups — but every write endpoint (recipient create / update / delete / send) returns `409 BATCH_ARCHIVED` until the batch is unarchived.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `401`: Missing, malformed, expired, or revoked API key.
- `404`: The requested resource was not found in this workspace.
- `429`: Too many requests for this API key. Honour the `Retry-After` response header (seconds) or the `detail.retryAfter` field.

---

[API](https://skmtc.dev/certseal/apis/certseal-com-api.md) · [All operations](https://skmtc.dev/certseal/apis/certseal-com-api/llms.txt) · [OpenAPI document](https://skmtc.dev/certseal/apis/certseal-com-api/revisions/9097f49f49f5?raw)
