# Update a batch

`PATCH https://api.parasend.com/v1/batches/{id}`

Source: https://parasend.com/docs/api/batches/update

Authentication: `Authorization: Bearer <API key>` (a `ps_test_` key in test mode, `ps_live_` in live mode).

Changes a batch. A draft can be changed in full; after Send out, only its name and its lock.

## Path parameters

- `id` (string, required): The batch's ID, starting `bat_`.

## Body (application/json)

- `name` (string · nullable, optional)
- `defaults` (object, optional)
  - `defaults.options` (object, optional)
    - `defaults.options.notify_channels` (array of string, optional): How the recipient is told — the invitation and every reminder go to each channel listed; each needs its contact (recipient.email, recipient.phone). Default — e-mail when there is an address, else SMS. Told on both, a failure on one channel bounces the delivery only once the other cannot arrive either. One of: `email`, `sms`.
    - `defaults.options.auth_methods` (array of string, optional): Which ways of identifying the recipient to offer within `recipient.verification_level`, in your order of preference. The recipient may always use a way at least as strong as the weakest one you list. Left out: every way the level allows (an SMS code only when the recipient has a phone). One of: `audkenni`, `smart_id`, `sms_otp`, `passkey`, `videoid`, `password`, `link_only`.
    - `defaults.options.reminder_policy` (string · nullable, optional): The follow-up policy's ID (`rpol_…`): the reminders this delivery sends while it waits.
    - `defaults.options.brand_profile_id` (string · nullable, optional): The brand profile's ID (`bp_…`). One set on the delivery wins over the batch's, and the batch's over the account's default.
    - `defaults.options.expires_in_days` (integer, optional): How many days the recipient has to confirm receipt before the delivery expires: a whole number from 1 to 365. Default 30. For a delivery in a batch, the days count from when the batch is sent out.
    - `defaults.options.sender_display` (string, optional): What the recipient and the evidence show as the sender. `legal_person` (your organisation's default) shows the organisation, with an opaque reference to the person who sent it; that person's name, personal code and e-mail are not shown. `individual` names the person who sent it as well. Your choice per delivery or template; a personal account is always `individual`. One of: `legal_person`, `individual`.
    - `defaults.options.allow_parasend_links` (boolean, optional): Send even though your brand profile's link domain is not working, with Parasend's own links (warning `link_domain_unavailable`). Without it such a delivery is refused with 409 `link_domain_unavailable`. Default: `false`.
    - `defaults.options.notice_wording` (object, optional): Which saved wording the first notice uses, per channel: a wording ID, null for Parasend's own, or left out for your organisation's default.
      - `defaults.options.notice_wording.email` (string · nullable, optional)
      - `defaults.options.notice_wording.sms` (string · nullable, optional)
  - `defaults.additional_security_source` (string · nullable, optional): `csv_personal_code`: a delivery added with a `recipient.personal_code`, and no `recipient.conditional_authentication` of its own, gets `conditional_authentication: true`, so only that person can open it. null or left out: no such rule. One of: `csv_personal_code`.
  - `defaults.language` (string, optional): The `language` (`is` or `en`) for deliveries added to the batch that do not set their own.
  - `defaults.message` (string, optional): The `message` for deliveries added to the batch that do not set their own: the plain-text note the recipient sees before signing in.
  - `defaults.title` (string, optional): The `title` for deliveries added to the batch that do not set their own: the subject the recipient sees in the notice and on their page.
  - `defaults.verification_level` (string, optional): The `recipient.verification_level` (`high`, `substantial`, `medium` or `low`) for deliveries added to the batch that do not set their own.
- `follow_up_policy_id` (string · nullable, optional)
- `allow_policy_override` (boolean, optional)
- `own_policy_deliveries` (string, optional): One of: `keep`, `switch`.
- `scheduled_at` (string · date-time · nullable, optional)
- `send_window` (object, optional)
  - `send_window.start` (string, required): Local time HH:MM, inclusive.
  - `send_window.end` (string, required): Local time HH:MM, exclusive; after start, same day.
  - `send_window.tz` (string, optional): The time zone of `start` and `end`: always `Atlantic/Reykjavik`, which is UTC all year.

## Example: Rename a batch

```bash
curl -X PATCH "https://api.parasend.com/v1/batches/bat_01M6R27T8SXWNM911FS53W4S9F" \
  -H "Authorization: Bearer $PARASEND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "November notices, first run"
  }'
```

```js
const res = await fetch('https://api.parasend.com/v1/batches/bat_01M6R27T8SXWNM911FS53W4S9F', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.PARASEND_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'November notices, first run',
  }),
});
const data = await res.json();
```

## Response 200

The batch.

```json
{
  "id": "bat_01M6R27T8SXWNM911FS53W4S9F",
  "object": "batch",
  "name": "November notices, first run",
  "status": "draft",
  "sending_mode": "on_finalize",
  "follow_up_policy_id": null,
  "allow_policy_override": true,
  "follow_ups_paused": false,
  "scheduled_at": null,
  "send_window": {
    "tz": "Atlantic/Reykjavik",
    "end": "21:00",
    "start": "09:00"
  },
  "defaults": {},
  "files": [],
  "accepting_deliveries": true,
  "counts": {
    "total": 0,
    "delivered": 0,
    "in_progress": 0,
    "ended": 0
  },
  "created_by": {
    "user_id": "usr_01M6R27SYD4B50414S0BZ4KBKR",
    "via": "api_key"
  },
  "livemode": false,
  "created": "2026-11-06T09:15:05.881Z",
  "sent_out_at": null,
  "following_up_at": null,
  "completed_at": null,
  "cancelled_at": null
}
```

Errors: one shape, `{"error": {type, code, message, param, request_id}}`; every code is listed at https://parasend.com/docs/errors.
