---
title: "Create guild"
method: POST
path: "/guilds"
tags: ["Guilds"]
---

# Create guild

`POST /guilds`

Only claimed, email-verified non-bot users can create guilds.

## Request body

- GuildCreateRequest
  - `name` string, required — The name of the guild (1-100 characters)
  - `icon` string
  - `empty_features` boolean — Whether to create the guild without default features
  - `template` TemplateSerializedGuild
    - `name` string, required — The name of the template guild
    - `description` string, nullable — The description of the template guild
    - `verification_level` number — The verification level
    - `default_message_notifications` number — The default message notification level
    - `explicit_content_filter` number — The explicit content filter level
    - `system_channel_id` union — The template-local system channel ID
      - integer
      - string
    - `afk_timeout` number — The AFK timeout in seconds
    - `system_channel_flags` number — The system channel flags
    - `roles` TemplateRole[], required — The roles in the template
      - `id` union, required — The template-local role ID
        - integer
        - string
      - `name` string, nullable — The name of the role
      - `permissions` union — The permissions bitfield as a string (legacy)
        - string
        - integer
      - `permissions_new` union — The permissions bitfield as a string (preferred)
        - string
        - integer
      - `color` number — The colour of the role as an integer
      - `hoist` boolean — Whether the role is hoisted
      - `mentionable` boolean — Whether the role is mentionable
      - `unicode_emoji` string, nullable — The unicode emoji for the role icon
    - `channels` TemplateChannel[], required — The channels in the template
      - `id` union, required — The template-local channel ID
        - integer
        - string
      - `type` number, required — The channel type (0 = text, 2 = voice, 4 = category)
      - `name` string, nullable — The name of the channel
      - `topic` string, nullable — The channel topic
      - `position` number, required — The position of the channel
      - `parent_id` union — The template-local ID of the parent category
        - integer
        - string
      - `bitrate` number, nullable — The bitrate for voice channels
      - `user_limit` number, nullable — The user limit for voice channels
      - `voice_connection_limit` number, nullable — The per-user voice connection limit for voice channels
      - `nsfw` boolean — Whether the channel is NSFW
      - `rate_limit_per_user` number — Slowmode rate limit in seconds
      - `permission_overwrites` object[] — Permission overwrites for this channel
        - `id` union, required — The ID of the role or user for this overwrite
          - integer
          - string
        - `type` union, required — The type of overwrite (0/role = role, 1/member = member)
          - number
          - string
        - `allow` union, required — The allowed permissions bitfield as a string
          - string
          - integer
        - `deny` union, required — The denied permissions bitfield as a string
          - string
          - integer

## Response `200`

Success

- GuildResponse
  - `id` string, snowflake, required
  - `name` string, required — The name of the guild
  - `icon` string, nullable — The hash of the guild icon
  - `banner` string, nullable — The hash of the guild banner
  - `banner_width` integer
  - `banner_height` integer
  - `splash` string, nullable — The hash of the guild splash screen
  - `splash_width` integer
  - `splash_height` integer
  - `splash_card_alignment` 0 | 1 | 2, required — The alignment of the splash card
  - `embed_splash` string, nullable — The hash of the embedded invite splash
  - `embed_splash_width` integer
  - `embed_splash_height` integer
  - `vanity_url_code` string, nullable — The vanity URL code for the guild
  - `owner_id` string, snowflake, required
  - `system_channel_id` string, snowflake
  - `system_channel_flags` integer, required — System channel message flags
  - `rules_channel_id` string, snowflake
  - `afk_channel_id` string, snowflake
  - `afk_timeout` integer, required
  - `features` GuildFeatureSchema[], required — Array of guild feature flags
  - `verification_level` 0 | 1 | 2 | 3 | 4, required — Required verification level for members
  - `mfa_level` 0 | 1, required — Required MFA level for moderation actions
  - `nsfw_level` 0 | 3, required — The NSFW level of the guild
  - `nsfw` boolean, required — Whether the guild is marked as adult (18+) content
  - `content_warning_level` 0 | 1, required — The content warning level for a guild, category, or channel
  - `content_warning_text` string, nullable — Custom guild-wide content warning text; null falls back to a localized default
  - `explicit_content_filter` 0 | 1 | 2, required — Level of content filtering for explicit media
  - `default_message_notifications` 0 | 1, required — Default notification level for new members
  - `disabled_operations` integer, required — Bitfield of disabled operations in the guild
  - `message_history_cutoff` string, date-time, nullable — ISO8601 timestamp controlling how far back members without Read Message History can access messages. When null, no historical access is allowed.
  - `permissions` string, int64 — Permission bitfield as string
  - `roles` GuildRoleResponse[] — Roles in the guild from gateway state
    - `id` string, snowflake, required
    - `name` string, required — The name of the role
    - `color` integer, required
    - `position` integer, required
    - `hoist_position` integer
    - `permissions` string, int64, required — Permission bitfield as string
    - `hoist` boolean, required — Whether this role is displayed separately in the member list
    - `mentionable` boolean, required — Whether this role can be mentioned by anyone
    - `unicode_emoji` string, nullable — The unicode emoji for this role
  - `emojis` GuildEmojiResponse[] — Emojis in the guild from gateway state
    - `id` string, snowflake, required
    - `name` string, required — The name of the emoji
    - `animated` boolean, required — Whether this emoji is animated
    - `nsfw` boolean, required — Deprecated; always false. Retained for compatibility with older clients
  - `stickers` GuildStickerResponse[] — Stickers in the guild from gateway state
    - `id` string, snowflake, required
    - `name` string, required — The name of the sticker
    - `description` string, required — The description of the sticker
    - `tags` string[], required — Autocomplete/suggestion tags for the sticker
    - `animated` boolean, required — Whether this sticker is animated
    - `nsfw` boolean, required — Deprecated; always false. Retained for compatibility with older clients
  - `channels` ChannelResponse[] — Channels visible to the requesting user from gateway state
    - `id` string, snowflake, required
    - `guild_id` string, snowflake
    - `name` string, nullable — 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)
  - `member_count` integer
  - `online_count` integer
  - `approximate_member_count` integer
  - `approximate_presence_count` integer

## 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

> 20 revisions in range; 2 not diffed.

- **2026-09-21** `3c2f66ec8e7b` — 1 breaking
  - the response property `channels/items/name` became nullable for the status `200`
- **2026-09-18** `dd0ad4ea1c88` — 22 breaking, 23 info
  - request property `template/channels/items/bitrate` list-of-types was narrowed by removing types `null` from media type `application/json`
  - request property `template/channels/items/name` list-of-types was narrowed by removing types `null` from media type `application/json`
  - request property `template/channels/items/permission_overwrites/items/type` list-of-types was narrowed by removing types `string` from media type `application/json`
  - request property `template/channels/items/topic` list-of-types was narrowed by removing types `null` from media type `application/json`
  - …41 more
- **2026-09-06** `a52a2cf49d9b` — 32 warning
  - 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`
  - …28 more
  - …this revision’s changelog is incomplete
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/guilds/post.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/55834b33d5d5?raw)
