---
title: "Update user preference (single)"
method: POST
path: "/{WSID}/{version}/subscriptions/list/{subscription_id}/user"
tags: ["Manage User Subscriptions & Preferences"]
---

# Update user preference (single)

`POST /{WSID}/{version}/subscriptions/list/{subscription_id}/user`

This API enables you to update the channel preference of a user for a particular subscription topic.

**Note:** If the channel configuration for a subscription topic is set to 'required', then the user preference for the channel cannot be updated.

## Path parameters

- `WSID` string, required
- `version` 'live' | 'test', required
- `subscription_id` string, required

## Request body

- UpdateSubscriptionSingle
  - `channel` 'sms' | 'whatsapp' | 'email' | 'discord' | 'slack' | 'teams' | 'push' | 'voice' | 'inapp' | 'webpush', required
  - `distinct_id` string, required
  - `status` 'opted-in' | 'opted-out', required

## Response `200`

Subscription updated successfully

- object
  - `SXXXXXXXXX` PreferenceChannels, required
    - `discord` 'opted-out' | 'opted-in'
    - `email` 'opted-out' | 'opted-in'
    - `inapp` 'opted-out' | 'opted-in'
    - `push` 'opted-out' | 'opted-in'
    - `slack` 'opted-out' | 'opted-in'
    - `sms` 'opted-out' | 'opted-in'
    - `teams` 'opted-out' | 'opted-in'
    - `voice` 'opted-out' | 'opted-in'
    - `webpush` 'opted-out' | 'opted-in'
    - `whatsapp` 'opted-out' | 'opted-in'

## Other responses

- `400` — Distinct ID, channel, or status is not provided
- `401` — API Key or Workspace ID is invalid. User is unauthorised.

## Changes

- **2025-02-17** `ee2cf82f4e6a` — 4 info
  - the response property `_message` became required for the status `400`
  - the response property `_message` became required for the status `401`
  - the response property `status` became required for the status `400`
  - the response property `status` became required for the status `401`
- **2025-02-12** `758a3fb292b9` — 3 breaking, 1 info
  - the request property `channel` became required
  - the request property `distinct_id` became required
  - the request property `status` became required
  - the response property `SXXXXXXXXX` became required for the status `200`

[Change history](https://skmtc.dev/fynoio/apis/fyno-rest-api/changes/:WSID/:version/subscriptions/list/:subscription_id/user/post.md)

---

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