---
title: "Set"
method: PATCH
path: "/users/me/preferences/notifications"
tags: ["Users"]
---

# Set

`PATCH /users/me/preferences/notifications`

Sets the authenticated user's notification preferences. Each preference is addressed by `scope`, not by id, so a scope read back from either list endpoint can be sent straight here.

A scope naming an experience with no topic sets that experience's level, and accepts all three levels. Any other scope sets a topic override, which is binary — `all` or `nothing` — and requires a `channel`.

`level: null` clears the preference. Preferences are stored as overrides, so clearing one means the scope inherits its default again rather than being switched off.

The batch is applied in one transaction: if any entry is rejected, none are written. Experience levels are applied before topic overrides, because setting a level replaces every topic preference for that experience — so an override sent alongside a level wins. The response reports what each scope now resolves to, in the order the entries were sent.

## Request body

- object
  - `preferences` object[], required — The preferences to set, at most 100 per request.
    - `level` 'all' | 'mentions' | 'nothing' | 'null', nullable, required — What the user is notified about in this scope. `mentions` is only valid for an experience level. `null` clears the preference.
    - `scope` object, required — What the preference applies to. `null` on a dimension means the preference is not narrowed there.
      - `account_id` string, nullable — Account to scope the preference to (member notifications), `biz_` tag.
      - `channel` 'in_app' | 'mobile' | 'null', nullable — Delivery channel the preference applies to. Required when setting a topic override.
      - `experience_id` string, nullable — Experience to scope the preference to (`exp_` tag). Requires `account_id` when a `topic_id` is also given.
      - `team_account_id` string, nullable — Account whose team notifications the preference is scoped to, `biz_` tag.
      - `topic_id` string, nullable — Notification topic to scope the preference to, `topic_` tag.

## Response `200`

preferences set

- object
  - `data` NotificationPreferenceState[], required
    - `level` 'all' | 'mentions' | 'nothing' | 'null', nullable, required — What the user is now notified about in this scope, or `null` if the preference was cleared and the scope inherits its default again.
    - `object` 'notification_preference' | 'experience_notification_preference', required — Which kind of preference was written: `experience_notification_preference` for an experience level, `notification_preference` for a topic override.
    - `scope` NotificationPreferenceScope, required
      - `account_id` string, nullable, required — Account the preference is scoped to (member notifications), prefixed `biz_`.
      - `channel` 'in_app' | 'mobile' | 'null', nullable, required — Delivery channel the preference applies to. `null` applies to every channel.
      - `experience_id` string, nullable, required — Experience the preference is scoped to, prefixed `exp_`.
      - `team_account_id` string, nullable, required — Account whose team notifications the preference is scoped to, prefixed `biz_`.
      - `topic_id` string, nullable, required — Notification topic the preference is scoped to, prefixed `topic_`.

## Other responses

- `400` — Invalid Parameters
- `404` — Resource not found

## Changes

- **2026-08-07** `f1020c3ecda4` — 2 info
  - added the optional property `error/code` to the response with the `400` status
  - added the optional property `error/code` to the response with the `404` status
- **2026-08-04** `bdd0e2c70d58` — 1 info
  - the security scope `user:notifications:update` was added to the endpoint's security scheme `bearerAuth`
- **2026-07-31** `099fdc3be422` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/whop/apis/whop-api/changes/users/me/preferences/notifications/patch.md)

---

[API](https://skmtc.dev/whop/apis/whop-api.md) · [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/9e320991dd2f/schema)
