---
title: "Bulk Update"
method: PATCH
path: "/v1/bulk/user/preference/"
---

# Bulk Update

`PATCH /v1/bulk/user/preference/`

Bulk API to update channel and category-level notification preferences for multiple users in one request.

## Query parameters

- `tenant_id` string

## Request body

- object
  - `distinct_ids` string[], required — distinct_id of users whose preference need to be updated
  - `channel_preferences` object[] — Use this to update channel level user preferences. Set `is_restricted - true` if the channel is opted_out by the user. This will only send critical notifications to the user which can't be opted out
    - `channel` string — Add channel as `email`, `inbox`, `sms`, `whatsapp`, `androidpush`, `slack`, `iospush`, `webpush`
    - `is_restricted` boolean — set `is_restricted = true` if user wants to receive notification in mandatory categories on this channel. Mandatory categories are `can't unsubscribe` categories and the above channel is added as `mandatory channel` in that category
  - `categories` object[] — Use this to user preference across categories and channels inside a category.
    - `category` string — notification category slug. You can get this from Notification Categories page on SuprSend dashboard -> Settings page
    - `preference` string — choose one of the options: `opt_in` if the user has allowed notification in this category and `opt_out` if user wants to discontinue notification in this category
    - `opt_out_channels` string[] — Add array of channels if user wants to unsubscribe from particular channels in this category. Add channels as `email`, `sms`, `whatsapp`, `androidpush`, `inbox`, `iospush`, `slack`, `webpush`
    - `opt_in_channels` string[] — You can either pass opt_out_channels when user opts out from a channel in the category or opt_in_channels when user opts in to a channel in the category. Add channels as `email`, `sms`, `whatsapp`, `androidpush`, `inbox`, `iospush`, `slack`, `webpush`
    - `digest_schedule` object, nullable — Recipient's preferred digest schedule for this category. Set to `null` to fall back to the tenant or category default.
      - `id` string — ID of the selected digest schedule option.
      - `time` string — Override time if the option's `time.edit_policy` is `editable`. Format: HH:MM.
      - `dtstart` string, date-time — Override start datetime if the option's `dtstart.edit_policy` is `editable`.
      - `weekdays` string[] — Override weekdays if the option's `weekdays.edit_policy` is `editable`.
      - `monthdays` object[] — Override monthdays if the option's `monthdays.edit_policy` is `editable`.
        - `pos` integer — Position in the month (1-31; use a negative value to count from the end).
        - `day` string — Optional day of the week (su, mo, tu, we, th, fr, sa).
    - `properties` object[] — Override values for category condition properties. Only properties with `edit_policy` `editable` can be overridden, and the value's datatype must match the property's `value_type`.
      - `key` string — Property key identifier.
      - `value` unknown

## Response `202`

202

- object
  - `success` boolean

## Other responses

- `404` — 404

---

[API](https://skmtc.net/suprsend/apis/suprsend-api.md) · [All operations](https://skmtc.net/suprsend/apis/suprsend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/suprsend/suprsend-api/versions/8bd2574bd2c3/schema)
