---
title: "Change what a person is subscribed to"
method: PUT
path: "/v1/notifications/preferences"
tags: ["notifications"]
---

# Change what a person is subscribed to

`PUT /v1/notifications/preferences`

## Request

- Base URL: `https://api.flowral.app`
- URL: `https://api.flowral.app/v1/notifications/preferences`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://api.flowral.app/v1/oauth/token`, scopes: `notifications:write`)

Sets the account defaults. Only the keys you send are changed; sending `null` for one resets it to the built-in default rather than turning it off.

## Request body

- object
  - `memberId` string, required: The person these settings belong to.
  - `email` boolean: The master switch for this scope. `null` means "inherit".
  - `muted` boolean: Flow scope only: silence everything about this flow.
  - `events` object: Per-event switches: `assigned`, `unlocked`, `digest`. Omit a key to leave it alone; send `null` to reset it to inherited.
  - `timezone` string: Account scope only. IANA zone name — the digest is sent in this person's morning, not the server's.
  - `digestHour` integer: Account scope only. 0–23, local. Default 8.

## Response `200`

SUCCESS

- NotificationPreferences: What one person is emailed about, resolved. When `flowId` is set, this is the account settings with that flow's override already applied.
  - `memberId` string, required
  - `flowId` string, nullable: Null for the account-level answer.
  - `email` boolean, required: The master switch. False means no notification email at all, whatever the per-event flags say.
  - `muted` boolean: Set by a flow-level override to silence one flow.
  - `events` object, required: Per-event switches.
    - `assigned` boolean: A task was assigned to them.
    - `unlocked` boolean: A task of theirs stopped being blocked.
    - `digest` boolean: The morning summary. Account level only.
  - `timezone` string: IANA zone. The digest is sent in this person's morning.
  - `digestHour` integer: 0–23, local.

## Other responses

- `400`: VALIDATION_FAILED
- `401`: UNAUTHORIZED
- `403`: FORBIDDEN · INSUFFICIENT_SCOPE
- `404`: MEMBER_NOT_FOUND
- `429`: RATE_LIMITED

---

[API](https://skmtc.dev/flowral/apis/flowral-api.md) · [All operations](https://skmtc.dev/flowral/apis/flowral-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flowral/apis/flowral-api/revisions/6cd2337b682c?raw)
