Guild members
A guild member is an account that has joined a guild, with a nickname, avatar, roles and moderation state that apply in that guild only.
Every route here needs membership of the guild, and a target that isn't a member returns 404 UNKNOWN_MEMBER.
Guild member object
Section titled “Guild member object”Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| user | partial user object | The account the membership belongs to |
| nick | ?string | The nickname in this guild |
| avatar1 | ?string | The image hash of the guild avatar |
| banner1 | ?string | The image hash of the guild banner |
| accent_color | ?integer | The guild profile accent color as packed 24-bit RGB |
| roles2 | array[snowflake] | The IDs of the member's roles (max 250) |
| joined_at | ISO8601 timestamp | The time the account joined this guild |
| mute3 | boolean | Whether the member is muted in voice |
| deaf | boolean | Whether the member is deafened in voice |
| communication_disabled_until4 | ?ISO8601 timestamp | The time the communication timeout ends |
| profile_flags?5 | integer | The guild member profile flags set on the membership |
| mention_flags?5 | integer | The reply mention preference for this guild |
1 An animated hash starts with a_
2 The everyone role is never listed
3 True for a moderator mute and while a communication timeout is active
4 The time can be in the past, and the communication timeout is only active while it's in the future
5 Omitted when the value is 0
Example
Section titled “Example”{ "user": {"id": "1489002177550843906", "username": "ada", "discriminator": "0042"}, "nick": "Ada L.", "avatar": null, "banner": null, "accent_color": 3447003, "roles": ["1489002177550843910"], "joined_at": "2026-08-14T09:12:44.000Z", "mute": false, "deaf": false, "communication_disabled_until": null}Guild member profile flags
Section titled “Guild member profile flags”A set flag makes the member show the default avatar or banner in this guild in place of their account one.
| Value | Name | Description |
|---|---|---|
| 1 << 0 | AVATAR_UNSET | Show the default avatar |
| 1 << 1 | BANNER_UNSET | Show the default banner |
Guild member update object
Section titled “Guild member update object”The request body for Modify current guild member and Modify guild member. An omitted field keeps its value.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| nick?1 | ?string | The nickname (1-32 characters) |
| roles?2 | array[snowflake] | The complete replacement role set (max 250) |
| avatar?3 | ?base64 string | The guild avatar image data, or null to clear it |
| banner?3 | ?base64 string | The guild banner image data, or null to clear it |
| bio? | ?string | The guild profile biography (1-320 characters) |
| pronouns? | ?string | The guild profile pronouns (1-40 characters) |
| accent_color? | ?integer | The guild profile accent color as packed 24-bit RGB (0-16777215) |
| profile_flags? | ?integer | The guild member profile flags to store |
| mention_flags?4 | ?integer | The reply mention preference for this guild |
| mute? | boolean | Whether the member is muted in voice |
| deaf? | boolean | Whether the member is deafened in voice |
| communication_disabled_until?5 | ?ISO8601 timestamp | The time the communication timeout ends |
| timeout_reason? | ?string | The reason for the timeout (1-512 characters) |
| channel_id?6 | ?snowflake | The voice channel to move the member into, or null to disconnect them |
| connection_id?6 | ?string | The voice connection to move, defaulting to all of them (1-32 characters) |
1 A blank string clears the nickname
2 Roles missing from the array are removed, and unknown role IDs are dropped
3 Base64 image data with an optional data URL prefix. The decoded size is limited by avatar_max_size in the instance limits
4 0 restores the account-level preference
5 Null or a past time clears the timeout, and a time more than 365.25 days ahead returns TIMEOUT_CANNOT_EXCEED_365_DAYS
6 A connection_id that isn't one of the member's connections returns 400 USER_NOT_IN_VOICE
List guild members
Section titled “List guild members”GET/v1/guilds/{guild_id}/membersReturns guild member objects in ascending user ID order. It needs no permission.
Query parameters
Section titled “Query parameters”| Field | Type | Description |
|---|---|---|
| limit? | integer | The maximum number of members to return (1-1000, default 1) |
| after? | snowflake | Only return members with a user ID greater than this |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | array[guild member object] | Members were returned |
The rate limit is 40 requests per 10 seconds, on the guild:members::guild_id bucket.
Get current guild member
Section titled “Get current guild member”GET/v1/guilds/{guild_id}/members/@meReturns your own guild member object.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | guild member object | The membership was returned |
The rate limit is 40 requests per 10 seconds, on the guild:members::guild_id bucket.
Get guild member
Section titled “Get guild member”GET/v1/guilds/{guild_id}/members/{user_id}Returns one member's guild member object.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | guild member object | The membership was returned |
The rate limit is 40 requests per 10 seconds, on the guild:members::guild_id bucket.
Modify current guild member
Section titled “Modify current guild member”PATCH/v1/guilds/{guild_id}/members/@meUpdates your own membership and returns the guild member object.
| Change | Permission |
|---|---|
| nick | CHANGE_NICKNAME, and without it Fluxer ignores nick |
| mute | MUTE_MEMBERS |
| deaf | DEAFEN_MEMBERS |
| channel_id | MOVE_MEMBERS, and VIEW_CHANNEL and CONNECT in the destination |
When interaction_tier is legacy, an unverified account can't change nick, avatar, banner, bio, pronouns, accent_color or profile_flags. avatar, banner, bio and accent_color are ignored without the feature_per_guild_profiles limit. A timed-out member can't change nick, and you can't time yourself out.
You can change each of avatar, banner, bio, pronouns and accent_color 25 times per 30 minutes in each guild. Going over returns 400 INVALID_FORM_BODY with a field code such as AVATAR_CHANGED_TOO_MANY_TIMES, and nothing is saved.
JSON body
Section titled “JSON body”The body is a guild member update object without roles, which Fluxer ignores here.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | guild member object | The membership was updated |
| 400 | error response | USER_NOT_IN_VOICE when channel_id is set and the member isn't in voice |
| 403 | error response | MISSING_PERMISSIONS for a missing voice permission or a timeout on yourself |
| 403 | error response | PROFILE_EMAIL_VERIFICATION_REQUIRED, COMMUNICATION_DISABLED, CONTENT_BLOCKED or ACCOUNT_LIMITED |
Fluxer sends Guild Member Update.
The rate limit is 20 requests per 10 seconds, on the guild:member:update::guild_id bucket.
Modify guild member
Section titled “Modify guild member”PATCH/v1/guilds/{guild_id}/members/{user_id}Updates another member and returns the guild member object. Each field needs the permission below and, except for roles, a higher role than the target. The guild owner skips the permission and role checks.
| Change | Permission |
|---|---|
| nick | MANAGE_NICKNAMES |
| roles | MANAGE_ROLES and a higher role than every role added or removed |
| timeout | MODERATE_MEMBERS, and the target can't have ADMINISTRATOR |
| mute | MUTE_MEMBERS |
| deaf | DEAFEN_MEMBERS |
| channel_id | MOVE_MEMBERS, and VIEW_CHANNEL and CONNECT in the destination |
Fluxer ignores avatar, banner, bio, pronouns, accent_color, profile_flags and mention_flags here, but a blocked bio or pronouns still returns 403 CONTENT_BLOCKED. MANAGE_ROLES and MODERATE_MEMBERS are elevated permissions.
If user_id is your own ID, profile fields follow Modify current guild member.
JSON body
Section titled “JSON body”The body is a guild member update object.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | guild member object | The membership was updated |
| 400 | error response | USER_NOT_IN_VOICE when the target isn't in voice, or TWO_FACTOR_REQUIRED in an elevated-MFA guild |
| 400 | error response | INVALID_ROLE_ID for the everyone role, or CHANNEL_DOES_NOT_EXIST or CHANNEL_MUST_BE_VOICE for channel_id |
| 403 | error response | MISSING_PERMISSIONS for a missing permission or role check, a target with ADMINISTRATOR, or a timeout on yourself |
| 403 | error response | CONTENT_BLOCKED for blocked profile text |
Fluxer sends Guild Member Update. If the member joined through an invite with temporary set, a non-empty roles makes their membership permanent.
The rate limit is 20 requests per 10 seconds, on the guild:member:update::guild_id bucket.
Remove guild member
Section titled “Remove guild member”DELETE/v1/guilds/{guild_id}/members/{user_id}Removes a member from the guild. You need KICK_MEMBERS, an elevated permission, and a higher role than the target. Removing yourself or the owner returns 404 UNKNOWN_MEMBER.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 204 | empty | The member was removed |
| 400 | error response | TWO_FACTOR_REQUIRED in an elevated-MFA guild |
Fluxer sends Guild Member Remove to the guild and Guild Delete to the removed account.
The rate limit is 20 requests per 10 seconds, on the guild:member:remove::guild_id bucket.
Transfer guild ownership
Section titled “Transfer guild ownership”POST/v1/guilds/{guild_id}/transfer-ownershipMakes another member the owner and returns the guild object. Only the current owner can call it, with the sudo verification fields unless the owner is a bot. The previous owner keeps their roles.
Request headers
Section titled “Request headers”| Field | Type | Description |
|---|---|---|
| X-Fluxer-Sudo-Mode-JWT? | string | The existing sudo mode proof |
JSON body
Section titled “JSON body”| Field | Type | Description |
|---|---|---|
| new_owner_id | snowflake | The ID of the member to make the new owner |
| password? | string | The current owner's password |
| mfa_method? | string | The second factor to verify, one of totp, webauthn or email_code |
| mfa_code? | string | The authenticator code, required when the method is totp (1-32 characters) |
| webauthn_response? | WebAuthn assertion object | The assertion produced when the method is webauthn |
| webauthn_challenge? | string | The challenge bound to the WebAuthn assertion |
| email_code_ticket? | string | The ticket from send a sudo email code (1-128 characters) |
| email_code? | string | The 6-digit code from that email |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | guild object | Ownership was transferred |
| 400 | error response | The password or code is wrong, or CANNOT_TRANSFER_OWNERSHIP_TO_BOT when the target is a bot |
| 403 | error response | SUDO_MODE_REQUIRED with the available proofs in methods, or MISSING_PERMISSIONS when you aren't the owner |
| 403 | error response | ACCOUNT_VERIFICATION_REQUIRED when interaction_tier is enforced and the new owner isn't verified |
Fluxer sends Guild Update.
The rate limit is 20 requests per 10 seconds, on the guild:update::guild_id bucket.
Add guild member role
Section titled “Add guild member role”PUT/v1/guilds/{guild_id}/members/{user_id}/roles/{role_id}Adds one role to a member. You need MANAGE_ROLES, an elevated permission, and a higher role than the role you add, unless you're the guild owner.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 204 | empty | The member has the role |
| 400 | error response | INVALID_ROLE_ID for the everyone role, or TWO_FACTOR_REQUIRED in an elevated-MFA guild |
| 403 | error response | MISSING_PERMISSIONS without MANAGE_ROLES or a higher role than the role |
| 404 | error response | UNKNOWN_ROLE when the role doesn't exist and you're the owner |
Fluxer sends Guild Member Update, and a new role makes a temporary member permanent.
The rate limit is 20 requests per 10 seconds, on the guild:member:role:add::guild_id bucket.
Remove guild member role
Section titled “Remove guild member role”DELETE/v1/guilds/{guild_id}/members/{user_id}/roles/{role_id}Removes one role from a member. The rules are the same as Add guild member role.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 204 | empty | The member doesn't have the role |
| 400 | error response | INVALID_ROLE_ID for the everyone role, or TWO_FACTOR_REQUIRED in an elevated-MFA guild |
| 403 | error response | MISSING_PERMISSIONS without MANAGE_ROLES or a higher role than the role |
| 404 | error response | UNKNOWN_ROLE when the role doesn't exist and you're the owner |
Fluxer sends Guild Member Update.
The rate limit is 20 requests per 10 seconds, on the guild:member:role:remove::guild_id bucket.