---
title: "Update channel settings"
method: PATCH
path: "/channels/{channel_id}"
tags: ["Channels"]
---

# Update channel settings

`PATCH /channels/{channel_id}`

Modifies channel properties such as name, description, topic, nsfw flag, and slowmode. Requires management permissions in the channel.

## Path parameters

- `channel_id` union, required
  - string, snowflake
  - integer

## Request body

- union
  - object
    - `topic` string, nullable — The channel topic (1-1024 characters)
    - `url` string, nullable — External URL for link channels
    - `parent_id` union
      - string, snowflake
      - integer
    - `bitrate` integer, nullable — Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature
    - `user_limit` integer, nullable — Maximum users allowed in voice channel (0-99, 0 means unlimited)
    - `voice_connection_limit` integer, nullable — Maximum active voice connections allowed per user in a voice channel (1-100)
    - `permission_overwrites` object[] — Permission overwrites for roles and members
      - `id` union, required
        - string, snowflake
        - integer
      - `type` 0 | 1, required — The type of overwrite (0 = role, 1 = member)
      - `allow` union
        - string, int64
        - integer
      - `deny` union
        - string, int64
        - integer
    - `rate_limit_per_user` integer, nullable — Slowmode delay in seconds (0-21600)
    - `nsfw` boolean, nullable — Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.
    - `nsfw_override` boolean, nullable — Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.
    - `content_warning_level` 0 | 1 — The content warning level for a guild, category, or channel
    - `content_warning_text` string, nullable — Custom channel content warning text (max 200 characters); null inherits from parent or guild
    - `icon` string
    - `owner_id` union
      - string, snowflake
      - integer
    - `nicks` ChannelNicknameOverrides — User nickname overrides (user ID to nickname mapping)
    - `rtc_region` string, nullable — Voice region ID for the voice channel (1-64 characters)
    - `name` string, nullable — The name of the channel
  - object
    - `topic` string, nullable — The channel topic (1-1024 characters)
    - `url` string, nullable — External URL for link channels
    - `parent_id` union
      - string, snowflake
      - integer
    - `bitrate` integer, nullable — Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature
    - `user_limit` integer, nullable — Maximum users allowed in voice channel (0-99, 0 means unlimited)
    - `voice_connection_limit` integer, nullable — Maximum active voice connections allowed per user in a voice channel (1-100)
    - `permission_overwrites` object[] — Permission overwrites for roles and members
      - `id` union, required
        - string, snowflake
        - integer
      - `type` 0 | 1, required — The type of overwrite (0 = role, 1 = member)
      - `allow` union
        - string, int64
        - integer
      - `deny` union
        - string, int64
        - integer
    - `rate_limit_per_user` integer, nullable — Slowmode delay in seconds (0-21600)
    - `nsfw` boolean, nullable — Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.
    - `nsfw_override` boolean, nullable — Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.
    - `content_warning_level` 0 | 1 — The content warning level for a guild, category, or channel
    - `content_warning_text` string, nullable — Custom channel content warning text (max 200 characters); null inherits from parent or guild
    - `icon` string
    - `owner_id` union
      - string, snowflake
      - integer
    - `nicks` ChannelNicknameOverrides — User nickname overrides (user ID to nickname mapping)
    - `rtc_region` string, nullable — Voice region ID for the voice channel (1-64 characters)
    - `name` string, nullable — The name of the channel
  - object
    - `topic` string, nullable — The channel topic (1-1024 characters)
    - `url` string, nullable — External URL for link channels
    - `parent_id` union
      - string, snowflake
      - integer
    - `bitrate` integer, nullable — Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature
    - `user_limit` integer, nullable — Maximum users allowed in voice channel (0-99, 0 means unlimited)
    - `voice_connection_limit` integer, nullable — Maximum active voice connections allowed per user in a voice channel (1-100)
    - `permission_overwrites` object[] — Permission overwrites for roles and members
      - `id` union, required
        - string, snowflake
        - integer
      - `type` 0 | 1, required — The type of overwrite (0 = role, 1 = member)
      - `allow` union
        - string, int64
        - integer
      - `deny` union
        - string, int64
        - integer
    - `rate_limit_per_user` integer, nullable — Slowmode delay in seconds (0-21600)
    - `nsfw` boolean, nullable — Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.
    - `nsfw_override` boolean, nullable — Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.
    - `content_warning_level` 0 | 1 — The content warning level for a guild, category, or channel
    - `content_warning_text` string, nullable — Custom channel content warning text (max 200 characters); null inherits from parent or guild
    - `icon` string
    - `owner_id` union
      - string, snowflake
      - integer
    - `nicks` ChannelNicknameOverrides — User nickname overrides (user ID to nickname mapping)
    - `rtc_region` string, nullable — Voice region ID for the voice channel (1-64 characters)
    - `name` string, nullable — The name of the category
  - object
    - `topic` string, nullable — The channel topic (1-1024 characters)
    - `url` string, nullable — External URL for link channels
    - `parent_id` union
      - string, snowflake
      - integer
    - `bitrate` integer, nullable — Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature
    - `user_limit` integer, nullable — Maximum users allowed in voice channel (0-99, 0 means unlimited)
    - `voice_connection_limit` integer, nullable — Maximum active voice connections allowed per user in a voice channel (1-100)
    - `permission_overwrites` object[] — Permission overwrites for roles and members
      - `id` union, required
        - string, snowflake
        - integer
      - `type` 0 | 1, required — The type of overwrite (0 = role, 1 = member)
      - `allow` union
        - string, int64
        - integer
      - `deny` union
        - string, int64
        - integer
    - `rate_limit_per_user` integer, nullable — Slowmode delay in seconds (0-21600)
    - `nsfw` boolean, nullable — Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.
    - `nsfw_override` boolean, nullable — Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.
    - `content_warning_level` 0 | 1 — The content warning level for a guild, category, or channel
    - `content_warning_text` string, nullable — Custom channel content warning text (max 200 characters); null inherits from parent or guild
    - `icon` string
    - `owner_id` union
      - string, snowflake
      - integer
    - `nicks` ChannelNicknameOverrides — User nickname overrides (user ID to nickname mapping)
    - `rtc_region` string, nullable — Voice region ID for the voice channel (1-64 characters)
    - `name` string, nullable — The name of the channel
  - object
    - `name` string, nullable — The name of the group DM
    - `icon` string
    - `owner_id` union
      - string, snowflake
      - integer
    - `nicks` ChannelNicknameOverrides — User nickname overrides (user ID to nickname mapping)

## Response `200`

Success

- ChannelResponse
  - `id` string, snowflake, required
  - `guild_id` string, snowflake
  - `name` string — The name of the channel
  - `topic` string, nullable — The topic of the channel
  - `url` string, uri, nullable — The URL associated with the channel
  - `icon` string, nullable — The icon hash of the channel (for group DMs)
  - `owner_id` string, snowflake
  - `type` 0 | 1 | 2 | 3 | 4 | 998 | 999, required — The type of the channel
  - `position` integer
  - `parent_id` string, snowflake
  - `bitrate` integer
  - `user_limit` integer
  - `voice_connection_limit` integer
  - `rtc_region` string, nullable — The voice region ID for the voice channel
  - `last_message_id` string, snowflake
  - `last_pin_timestamp` string, date-time, nullable — The ISO 8601 timestamp of when the last pinned message was pinned
  - `permission_overwrites` ChannelOverwriteResponse[] — The permission overwrites for this channel
    - `id` string, snowflake, required
    - `type` 0 | 1, required — The type of entity the overwrite applies to
    - `allow` string, int64, required — Permission bitfield as string
    - `deny` string, int64, required — Permission bitfield as string
  - `recipients` UserPartialResponse[] — The recipients of the DM channel
    - `id` string, snowflake, required
    - `username` string, required — The username of the user, not unique across the platform
    - `discriminator` string, required — The four-digit discriminator tag of the user
    - `global_name` string, nullable, required — The display name of the user, if set
    - `avatar` string, nullable, required — The hash of the user avatar image
    - `avatar_color` integer, required
    - `bot` boolean — Whether the user is a bot account
    - `system` boolean — Whether the user is an official system user
    - `flags` integer, required — The public flags on the user account
    - `mention_flags` 0 | 1 | 2 — Reply mention preference
  - `nsfw` boolean — Whether the channel is marked as NSFW (effective value, walking channel → category → guild)
  - `nsfw_override` boolean, nullable — Per-channel adult-content override; null means inherit from parent category and then guild. Categories use this same field as their own override.
  - `content_warning_level` 0 | 1 — The content warning level for a guild, category, or channel
  - `content_warning_text` string, nullable — Custom channel content warning text (max 200 characters); null inherits from parent or guild
  - `rate_limit_per_user` integer
  - `nicks` object — Custom nicknames for users in this channel (for group DMs)

## Other responses

- `400` — Bad Request - The request was malformed or contained invalid data
- `401` — Unauthorized - Authentication is required or the token is invalid
- `403` — Forbidden - You do not have permission to perform this action
- `429` — Too Many Requests - You are being rate limited
- `500` — Internal Server Error - An unexpected error occurred

## Changes

> 14 revisions in range; 1 not diffed.

- **2026-09-18** `dd0ad4ea1c88` — 7 breaking, 8 info
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` from the request body `anyOf` list
  - the response property `icon` became nullable for the status `200`
  - the response property `nsfw_override` became nullable for the status `200`
  - the response property `recipients/items/avatar` became nullable for the status `200`
  - …11 more
- **2026-09-06** `a52a2cf49d9b` — 32 warning, 200 info
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `400`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `401`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `403`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `500`
  - …228 more
  - …this revision’s changelog is incomplete
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/channels/:channel_id/patch.md)

---

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