---
title: "Ban guild member"
method: PUT
path: "/guilds/{guild_id}/bans/{user_id}"
tags: ["Guilds"]
---

# Ban guild member

`PUT /guilds/{guild_id}/bans/{user_id}`

Ban guild member. Requires ban_members permission. Prevents user from joining; optionally deletes recent messages and sets ban expiry duration.

## Path parameters

- `guild_id` union, required
  - string, snowflake
  - integer
- `user_id` union, required
  - string, snowflake
  - integer

## Request body

- GuildBanCreateRequest
  - `delete_message_days` integer — Number of days of messages to delete from the banned user (0-7). Deprecated in favor of delete_message_seconds.
  - `delete_message_seconds` integer — Number of seconds of messages to delete for the banned user (0-604800, default 0)
  - `reason` string, nullable — The reason for the ban (max 512 characters)
  - `ban_duration_seconds` integer — Duration of the ban in seconds (0 for permanent, or between 60 and 63072000 seconds for a temporary ban)

## Response `204`

No Content

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

> 21 revisions in range; 2 not diffed.

- **2026-09-18** `dd0ad4ea1c88` — 1 breaking, 1 info
  - request property `reason` list-of-types was narrowed by removing types `null` from media type `application/json`
  - the request property `reason` became nullable
- **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
- **2026-09-05** `4dbb738a3e22` — 4 info
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `400`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `401`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `403`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `500`
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/guilds/:guild_id/bans/:user_id/put.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/3d3fd6ec1785?raw)
