---
title: "Update notification role recipients"
method: PUT
path: "/v1/notifications/routing"
tags: ["Account"]
---

# Update notification role recipients

`PUT /v1/notifications/routing`

## Request

- Base URL: `https://api.inth.com`
- URL: `https://api.inth.com/v1/notifications/routing`
- Auth: HTTP bearer

Requires notifications.routing.write and admin or owner. userIds must be unique current members, at most 500. configured:false requires [] and restores fallback. configured:true with [] sends that role to nobody. Requires a user-delegated OAuth token. Organization API keys are refused. Enforced after scope and role authorization: rollout-agent-access-writes (default off) and allow-public-agent-writes (default on). Reads remain available when writes are paused.

## Query parameters

- `organizationId` string

## Request body

- NotificationRoutingUpdate
  - `role` 'engineering' | 'compliance' | 'legal', required
  - `configured` boolean, required
  - `userIds` string[], required

## Response `200`

Update notification role recipients

- object
  - `success` true, required
  - `data` NotificationPreferences, required
    - `organizationId` string, required
    - `account` object[], required
      - `family` 'welcome' | 'upsell' | 'spike-protection' | 'banner-recording' | 'consent-rate-shift' | 'banner-change-published' | 'first-week-recap' | 'unconfigured-region' | 'missing-translation' | 'c15t-upgrade' | 'nps', required
      - `enabled` boolean, required
      - `mode` 'immediate' | 'daily', required
    - `organization` object[], required
      - `family` 'welcome' | 'upsell' | 'spike-protection' | 'banner-recording' | 'consent-rate-shift' | 'banner-change-published' | 'first-week-recap' | 'unconfigured-region' | 'missing-translation' | 'c15t-upgrade' | 'nps', required
      - `enabled` boolean, required
      - `mode` 'immediate' | 'daily', required
    - `routing` object[], nullable, required
      - `role` 'engineering' | 'compliance' | 'legal', required
      - `configured` boolean, required
      - `userIds` string[], required
    - `membersPath` string, nullable, required

## Other responses

- `400`: The request payload or parameters are invalid.
- `401`: Authentication is missing, invalid, or expired.
- `403`: The credential is valid but may not perform the operation. `INSUFFICIENT_SCOPE`: the credential was never granted the capability the operation needs. `details.requiredScope` names it, and the `WWW-Authenticate` header carries `Bearer error="insufficient_scope"`. An OAuth client fixes this by requesting the scope; an organization API key cannot gain it. `FORBIDDEN`: the capability is present but the membership behind the credential lacks the role, or the resource belongs to another organization.
- `404`: The requested resource was not found.
- `409`: The request conflicts with the current resource state.
- `503`: The capability is temporarily paused by an operator. Retry later.

## Changes

- **2026-11-02** `50689d9c4424`: 2 warning
  - added the new `c15t-upgrade` enum value to the `data/account/items/family` response property for the response status `200`
  - added the new `c15t-upgrade` enum value to the `data/organization/items/family` response property for the response status `200`
- **2026-10-31** `a3f4100e14c9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/inth/apis/inth-api/changes/v1/notifications/routing/put.md)

---

[API](https://skmtc.dev/inth/apis/inth-api.md) - [All operations](https://skmtc.dev/inth/apis/inth-api/llms.txt) - [OpenAPI document](https://skmtc.dev/inth/apis/inth-api/revisions/8741280c3463?raw)
