---
title: "Update a recipient"
method: PATCH
path: "/batches/{batchId}/recipients/{recipientId}"
tags: ["Recipients"]
---

# Update a recipient

`PATCH /batches/{batchId}/recipients/{recipientId}`

## Request

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

Partial update — only the fields you include are changed. Pass
`null` to clear an optional field (e.g. `"email": null`).

## Path parameters

- `batchId` string, required
- `recipientId` string, required

## Request body

- RecipientPatch: Partial-update body. Include only the fields you want to change. Pass `null` to clear an optional field.
  - `name` string, nullable
  - `email` string, email, nullable
  - `certificateId` string, nullable
  - `issueDate` string, date, nullable
  - `expiryDate` string, date, nullable
  - `data` object

## Response `200`

The updated recipient.

- object
  - `recipient` Recipient, required
    - `id` string, required
    - `batchId` string, required
    - `name` string, nullable
    - `email` string, email, nullable
    - `certificateId` string, nullable: Human-readable id, e.g. CERT-2026-003843-000001.
    - `shareToken` string, nullable: Opaque token used in public viewer URLs.
    - `certUrl` string, uri, nullable: Fully-qualified public viewer URL. Null when `PUBLIC_APP_URL` isn't configured on the server.
    - `issueDate` string, date-time, nullable
    - `expiryDate` string, date-time, nullable
    - `data` object, required: All free-form fields preserved from the original input; interpolated into the certificate template at render time.
    - `emailStatus` 'pending' | 'queued' | 'sending' | 'sent' | 'failed', required
    - `emailSentAt` string, date-time, nullable
    - `createdAt` string, date-time, required

## Other responses

- `400`: The request body or query was invalid.
- `401`: Missing, malformed, expired, or revoked API key.
- `404`: The requested resource was not found in this workspace.
- `409`: Request collided with the current state of the resource. The `error` code disambiguates the cause: - `CONFLICT` — duplicate `certificateId`, recipient already queued, etc. The `detail` shape varies per cause. - `BATCH_ARCHIVED` — the target batch has been archived. Unarchive it via `POST /batches/{id}/unarchive` before retrying any write (recipient create / update / delete / send).
- `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)
