---
title: "Bulk update subscriber preferences"
method: PATCH
path: "/v2/subscribers/{subscriberId}/preferences/bulk"
tags: ["Subscribers"]
---

# Bulk update subscriber preferences

`PATCH /v2/subscribers/{subscriberId}/preferences/bulk`

Bulk update subscriber preferences by its unique key identifier **subscriberId**. 
    This API allows updating multiple workflow preferences in a single request.

## Path parameters

- `subscriberId` string, required

## Request body

- BulkUpdateSubscriberPreferencesDto
  - `preferences` BulkUpdateSubscriberPreferenceItemDto[], required — Array of workflow preferences to update (maximum 100 items)
    - `channels` PatchPreferenceChannelsDto, required
      - `email` boolean — Email channel preference
      - `sms` boolean — SMS channel preference
      - `in_app` boolean — In-app channel preference
      - `push` boolean — Push channel preference
      - `chat` boolean — Chat channel preference
      - `tool` boolean — Tool channel preference
    - `workflowId` string, required — Workflow internal _id, identifier or slug
  - `context` object

## Response `200`

OK

- GetPreferencesResponseDto[]
  - `level` 'global' | 'template', required — The level of the preference (global or template)
  - `workflow` WorkflowDto
    - `id` string, required — Unique identifier of the workflow
    - `identifier` string, required — Workflow identifier used for triggering
    - `name` string, required — Human-readable name of the workflow
    - `critical` boolean, required — Whether this workflow is marked as critical
    - `tags` string[] — Tags associated with the workflow
    - `data` object — Custom data associated with the workflow
    - `severity` 'high' | 'medium' | 'low' | 'none', required — Severity of the workflow
  - `enabled` boolean, required — Whether the preference is enabled
  - `channels` SubscriberPreferenceChannels, required
    - `email` boolean — Email channel preference
    - `sms` boolean — SMS channel preference
    - `in_app` boolean — In-app channel preference
    - `chat` boolean — Chat channel preference
    - `push` boolean — Push notification channel preference
    - `tool` boolean — Tool channel preference
  - `condition` object, nullable — Condition using JSON Logic rules

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `405` — Method Not Allowed
- `409` — Conflict
- `413` — Payload Too Large
- `414` — URI Too Long
- `415` — Unsupported Media Type
- `422` — Unprocessable Entity
- `429` — The client has sent too many requests in a given amount of time.
- `500` — Internal Server Error
- `503` — The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.

---

[API](https://skmtc.net/novu/apis/deprecated-novu-api-use-openapi-json-yaml-instead.md) · [All operations](https://skmtc.net/novu/apis/deprecated-novu-api-use-openapi-json-yaml-instead/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novu/deprecated-novu-api-use-openapi-json-yaml-instead/versions/986fe259fa85/schema)
