---
title: "POST /guilds/{guild_id}/channels"
method: POST
path: "/guilds/{guild_id}/channels"
---

# POST /guilds/{guild_id}/channels

`POST /guilds/{guild_id}/channels`

## Request body

- CreateGuildChannelRequest
  - `type` union
    - 1 — A direct message between users
    - 3 — A direct message between multiple users
    - 0 — A text channel within a server
    - 2 — A voice channel within a server
    - 4 — An organizational category that contains up to 50 channels
    - 5 — A channel that users can follow and crosspost into their own server (formerly news channels)
    - 10 — A temporary sub-channel within a GUILD_ANNOUNCEMENT channel
    - 11 — A temporary sub-channel within a GUILD_TEXT or GUILD_THREADS_ONLY channel type set
    - 12 — A temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission
    - 13 — A voice channel for hosting events with an audience
    - 14 — The channel in a hub containing the listed servers
    - 15 — Channel that can only contain threads
  - `name` string, required
  - `position` integer, nullable
  - `topic` string, nullable
  - `bitrate` integer, nullable
  - `user_limit` integer, nullable
  - `nsfw` boolean, nullable
  - `rate_limit_per_user` integer, nullable
  - `parent_id` string, snowflake
  - `permission_overwrites` ChannelPermissionOverwriteRequest[], nullable
    - `id` string, snowflake, required
    - `type` union
      - 0
      - 1
    - `allow` integer, nullable
    - `deny` integer, nullable
  - `rtc_region` string, nullable
  - `video_quality_mode` union
    - 1 — Discord chooses the quality for optimal performance
    - 2 — 720p
  - `default_auto_archive_duration` union
    - 60 — One hour
    - 1440 — One day
    - 4320 — Three days
    - 10080 — Seven days
  - `default_reaction_emoji` UpdateDefaultReactionEmojiRequest
    - `emoji_id` string, snowflake
    - `emoji_name` string, nullable
  - `default_thread_rate_limit_per_user` integer, nullable
  - `default_sort_order` union
    - 0 — Sort forum posts by activity
    - 1 — Sort forum posts by creation time (from most recent to oldest)
  - `default_forum_layout` union
    - 0 — No default has been set for forum channel
    - 1 — Display posts as a list
    - 2 — Display posts as a collection of tiles
  - `default_tag_setting` union
    - 'match_all' — The thread tags must contain all tags in the search query
    - 'match_some' — The thread tags must contain at least one of tags in the search query
  - `available_tags` CreateOrUpdateThreadTagRequest[], nullable
    - `name` string, required
    - `emoji_id` string, snowflake
    - `emoji_name` string, nullable
    - `moderated` boolean, nullable

## Response `201`

201 response for create_guild_channel

- GuildChannelResponse
  - `id` string, snowflake, required
  - `type` union, required
    - 1 — A direct message between users
    - 3 — A direct message between multiple users
    - 0 — A text channel within a server
    - 2 — A voice channel within a server
    - 4 — An organizational category that contains up to 50 channels
    - 5 — A channel that users can follow and crosspost into their own server (formerly news channels)
    - 10 — A temporary sub-channel within a GUILD_ANNOUNCEMENT channel
    - 11 — A temporary sub-channel within a GUILD_TEXT or GUILD_THREADS_ONLY channel type set
    - 12 — A temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission
    - 13 — A voice channel for hosting events with an audience
    - 14 — The channel in a hub containing the listed servers
    - 15 — Channel that can only contain threads
  - `last_message_id` string, snowflake
  - `flags` integer, required
  - `last_pin_timestamp` string, date-time, nullable
  - `guild_id` string, snowflake, required
  - `name` string, required
  - `parent_id` string, snowflake
  - `rate_limit_per_user` integer
  - `bitrate` integer
  - `user_limit` integer
  - `rtc_region` string, nullable
  - `video_quality_mode` union
    - 1 — Discord chooses the quality for optimal performance
    - 2 — 720p
  - `permissions` string
  - `topic` string, nullable
  - `default_auto_archive_duration` union
    - 60 — One hour
    - 1440 — One day
    - 4320 — Three days
    - 10080 — Seven days
  - `default_thread_rate_limit_per_user` integer
  - `position` integer, required
  - `permission_overwrites` ChannelPermissionOverwriteResponse[]
    - `id` string, snowflake, required
    - `type` union, required
      - 0
      - 1
    - `allow` string, required
    - `deny` string, required
  - `nsfw` boolean
  - `available_tags` ForumTagResponse[]
    - `id` string, snowflake, required
    - `name` string, required
    - `moderated` boolean, required
    - `emoji_id` string, snowflake, required
    - `emoji_name` string, nullable, required
  - `default_reaction_emoji` DefaultReactionEmojiResponse
    - `emoji_id` string, snowflake, required
    - `emoji_name` string, nullable, required
  - `default_sort_order` union
    - 0 — Sort forum posts by activity
    - 1 — Sort forum posts by creation time (from most recent to oldest)
  - `default_forum_layout` union
    - 0 — No default has been set for forum channel
    - 1 — Display posts as a list
    - 2 — Display posts as a collection of tiles
  - `default_tag_setting` union
    - 'match_all' — The thread tags must contain all tags in the search query
    - 'match_some' — The thread tags must contain at least one of tags in the search query

## Other responses

- `429` — Client ratelimited response
- `4XX` — Client error response

## Changes

- **2026-06-05** `693bf1f99bba` — 2 warning
  - removed the optional property `hd_streaming_buyer_id` from the response with the `201` status
  - removed the optional property `hd_streaming_until` from the response with the `201` status
- **2026-04-17** `e5468cac9be0` — 2 breaking, 3 info
  - added `subschema #1: DEFAULT, subschema #2: LIST, subschema #3: GRID` to the `default_forum_layout` response property `oneOf` list for the response status `201`
  - the `default_forum_layout` response's property type/format changed from ``/`` to `integer`/`int32` for status `201`
  - the response property `default_reaction_emoji/oneOf[#/components/schemas/DefaultReactionEmojiResponse]/emoji_id` became required for the status `201`
  - the response property `default_reaction_emoji/oneOf[#/components/schemas/DefaultReactionEmojiResponse]/emoji_name` became required for the status `201`
  - …1 more
- **2026-02-04** `e200830e509a` — 2 info
  - the response property `available_tags/items/emoji_id` became required for the status `201`
  - the response property `available_tags/items/emoji_name` became required for the status `201`

[Change history](https://skmtc.dev/discord/apis/discord-http-api-preview/changes/guilds/:guild_id/channels/post.md)

---

[API](https://skmtc.dev/discord/apis/discord-http-api-preview.md) · [All operations](https://skmtc.dev/discord/apis/discord-http-api-preview/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/discord/discord-http-api-preview/revisions/49efa428e0dd/schema)
