Skip to content
Fluxer API

Admin guilds

These routes look up and change any guild without membership or guild permissions. Routes that call the Gateway return 502, 503 or 504 when the Gateway fails, is overloaded or doesn't answer.

The short form of a guild, returned by List guilds and List user guilds.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild
featuresarray[string]The guild features (at most 100)
owner_idsnowflakeThe ID of the owner
owner_username1?stringThe username of the owner
owner_global_name1?stringThe display name of the owner
owner_discriminator1?stringThe owner discriminator, zero-padded to four digits
icon?stringThe icon hash
banner?stringThe banner hash
member_countintegerThe number of members
nsfw_level?integerThe NSFW level
nsfwbooleanWhether the guild is age restricted
content_warning_levelintegerThe guild content warning level
content_warning_text?stringThe custom content warning text
approximate_member_count?2integerThe member count the Gateway reports
approximate_presence_count?2integerThe number of connected members the Gateway reports

1 Always null on List guilds, and null elsewhere when the owner account is missing

2 Only on List user guilds when with_counts is true

{
"id": "1471002884199612416",
"name": "Tidepool",
"features": ["DISCOVERABLE", "VANITY_URL"],
"owner_id": "1483920011884392448",
"owner_username": null,
"owner_global_name": null,
"owner_discriminator": null,
"icon": "b7f1c2d3e4a5968778695a4b3c2d1e0f",
"banner": null,
"member_count": 4182,
"nsfw_level": 0,
"nsfw": false,
"content_warning_level": 0,
"content_warning_text": null
}

The full guild with every channel and role, returned by Get guild. Use List guild threads for threads.

The owner fields are null when the owner account doesn't exist.

FieldTypeDescription
idsnowflakeThe ID of the guild
owner_idsnowflakeThe ID of the owner
owner_username?stringThe username of the owner
owner_global_name?stringThe display name of the owner
owner_discriminator?stringThe owner discriminator, zero-padded to four digits
namestringThe name of the guild (1-100 characters)
vanity_url_code?stringThe custom invite code
icon?stringThe icon hash
banner?stringThe banner hash
splash?stringThe invite splash hash
embed_splash?stringThe embedded invite splash hash
featuresarray[string]The guild features (at most 100)
badge_idsarray[snowflake]The custom badges of the guild (at most 200)
verification_levelintegerThe verification level
mfa_levelintegerThe MFA level moderators need
nsfw_levelintegerThe NSFW level
nsfwbooleanWhether the guild is age restricted
content_warning_levelintegerThe guild content warning level
content_warning_text?stringThe custom content warning text
explicit_content_filterintegerThe explicit content filter level
default_message_notificationsintegerThe default message notification level
afk_channel_id?snowflakeThe voice channel idle members are moved to
afk_timeoutintegerThe idle time before a member is moved, in seconds
system_channel_id?snowflakeThe channel system messages are sent to
system_channel_flagsintegerThe system channel flags
rules_channel_id?snowflakeThe rules channel
disabled_operationsintegerThe disabled guild operations bitfield
member_countintegerThe number of members
channelsarray[Admin guild channel object]Every channel in the guild except threads
rolesarray[Admin guild role object]Every role in the guild
FieldTypeDescription
idsnowflakeThe ID of the channel
name?stringThe channel name (1-100 characters)
typeintegerThe channel type
positionintegerThe sort position in the guild
parent_id?snowflakeThe parent category ID
nsfw?booleanWhether the channel itself is age restricted, false when it inherits
nsfw_override?booleanThe channel's own age restriction, or null when it inherits from its category or guild
content_warning_levelintegerThe content warning level set on the channel
content_warning_text?stringThe content warning text set on the channel
url?stringThe URL of a link channel (1-2048 characters), or null for other types
FieldTypeDescription
idsnowflakeThe ID of the role
namestringThe role name (1-100 characters)
colorintegerThe RGB color
positionintegerThe sort position in the guild
permissionsstringThe permission bitfield as a decimal string
hoistbooleanWhether the role shows separately in the member list
mentionablebooleanWhether anyone can mention the role
icon?stringThe hash of the role icon image
unicode_emoji?stringThe Unicode emoji used as the role icon

The guild after Update guild applies a change.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild (1-100 characters)
featuresarray[string]The guild features (at most 100)
owner_idsnowflakeThe ID of the owner
icon?stringThe icon hash
banner?stringThe banner hash
member_countintegerThe number of members
nsfw_levelintegerThe NSFW level

A custom emoji or sticker of a guild.

FieldTypeDescription
idsnowflakeThe ID of the emoji or sticker
namestringThe name (1-100 characters)
animatedbooleanWhether the image is animated
creator_idsnowflakeThe user who uploaded it
media_urlstringThe WebP Media Proxy URL of the image
{
"id": "1496613881730531328",
"name": "party_parrot",
"animated": true,
"creator_id": "1483920011884392448",
"media_url": "https://media.example.com/emojis/1496613881730531328.webp?size=160&animated=true"
}

An entry in the processed array of Purge guild assets.

FieldTypeDescription
idsnowflakeThe ID that was purged
asset_typestringThe asset type
found_in_dbbooleanWhether the ID matched an emoji or sticker, which is false for unknown
guild_id?snowflakeThe guild the emoji or sticker belonged to, or null for unknown
guild_nsfw_level?integerThe NSFW level of that guild, or null for unknown

An entry in the errors array of Purge guild assets.

FieldTypeDescription
idstringThe ID as you sent it
errorstringWhy it failed, such as Asset belongs to another guild
ValueDescription
emojiA custom emoji of the guild
stickerA sticker of the guild
unknownNo emoji or sticker has the ID, and Fluxer still deletes any stored image with that ID
GET/v1/admin/guildsAudit reason

Searches guilds by name, discovery tags, custom invite code and discovery description, oldest first. You need guild:lookup.

FieldTypeDescription
q?1stringThe search text (1-1024 characters). Leave it out to match every guild
limit?integerMaximum guilds to return (1-200, default 50)
offset?integerGuilds to skip (0-10000, default 0)

1 When q is all digits and offset is 0, the guild with that ID is also returned

FieldTypeDescription
guildsarray[Admin guild object]Guilds in this page
totalintegerThe number of matching guilds
StatusBodyCondition
200response bodyThe page was returned
403error responseFEATURE_TEMPORARILY_DISABLED when the instance has no search backend

The rate limit is 200 requests per minute, on the admin:lookup bucket.

GET/v1/admin/guilds/{guild_id}Audit reason

Returns a guild with its channels and roles. You need guild:lookup.

FieldTypeDescription
guild?Admin guild detail objectThe guild, or null when it doesn't exist
StatusBodyCondition
200response bodyAlways, with guild null when the guild doesn't exist

The rate limit is 200 requests per minute, on the admin:lookup bucket.

PATCH/v1/admin/guilds/{guild_id}Audit reason

Changes a guild, including its owner, and returns the Admin guild update object. You need the ACL for every group of fields you send.

ACLNeeded for
guild:update:nameRenaming the guild (name)
guild:update:settingsClearing images and changing settings (fields and every field from verification_level to disabled_operations)
guild:update:featuresAdding and removing features (add_features, remove_features)
guild:update:badgesReplacing the custom badges (badge_ids)
guild:update:vanityChanging the custom invite code (vanity_url_code)
guild:transfer_ownershipTransferring ownership (new_owner_id)

To change afk_channel_id, system_channel_id or afk_timeout, use Modify guild.

FieldTypeDescription
name?stringThe new name (1-100 characters)
vanity_url_code?1?stringThe new custom invite code, or null to remove it
new_owner_id?2snowflakeThe new owner
add_features?3array[string]Guild features to add (at most 100)
remove_features?3array[string]Guild features to remove (at most 100)
badge_ids?4array[snowflake]The guild badges to give, replacing the current ones
fields?array[string]Images to clear, each icon, banner, splash or embed_splash (at most 10)
verification_level?integerThe new verification level
mfa_level?integerThe new MFA level
nsfw_level?integerThe new NSFW level
nsfw?booleanWhether the guild is age restricted
content_warning_level?integerThe new guild content warning level
content_warning_text??stringThe new content warning text (at most 200 characters), or null to clear it
explicit_content_filter?integerThe new explicit content filter level
default_message_notifications?integerThe new default message notification level
disabled_operations?integerThe new disabled guild operations bitfield

1 Fluxer lowercases the code and turns spaces into hyphens. The result must be 2-32 lowercase letters, digits and hyphens, and it can't start or end with a hyphen

2 Fluxer doesn't check that the user exists

3 A feature in both lists ends up removed. Adding DISCOVERABLE approves the guild's discovery application, and removing it takes the guild out of discovery

4 A list that adds a badge can hold up to max_per_guild of the badge settings, which is at most 200. A list that only removes badges always works

FieldTypeDescription
guildAdmin guild update objectThe guild after the change
StatusBodyCondition
200response bodyThe changes were applied
400error responseINVALID_FORM_BODY when the custom invite code is invalid or THIS_VANITY_URL_IS_ALREADY_TAKEN
400error responseMAX_BADGES when badge_ids adds a badge and holds more than max_per_guild of the badge settings
403error responseMISSING_ACL when you lack an ACL a field needs
404error responseUNKNOWN_GUILD when the guild doesn't exist, or UNKNOWN_BADGE when an ID in badge_ids isn't a guild badge

Fluxer saves image clears, settings, features, badges, name, custom invite code and owner one at a time in that order, and each sends a Guild Update event. If one fails, the ones before it stay saved.

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

DELETE/v1/admin/guilds/{guild_id}Audit reason

Deletes a guild with its channels, messages, attachments, invites and webhooks. You need guild:delete. Members get Guild Delete.

FieldTypeDescription
basis1basis objectenforcement when a rule was broken, or holder_request when the owner asked

1 enforcement records a removal decision and sends the owner a notice

FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyThe guild was deleted
400error responseINVALID_FORM_BODY when the basis or the decision isn't valid
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/membersAudit reason

Returns a page of guild member objects from the Gateway. You need guild:list:members.

FieldTypeDescription
limit?integerMaximum members to return (1-200, default 50)
offset?integerMembers to skip (0-2147483647, default 0)
FieldTypeDescription
membersarray[guild member object]Members in this page
totalintegerThe number of members
limitintegerThe limit that was used
offsetintegerThe offset that was used
StatusBodyCondition
200response bodyThe page was returned
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 200 requests per minute, on the admin:lookup bucket.

PUT/v1/admin/guilds/{guild_id}/members/{user_id}Audit reason

Adds a user to a guild without an invite, even when they're banned from it. You need guild:force_add_member. Adding a user who is already a member does nothing.

FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyThe user is a member
400error responseMAX_GUILDS or MAX_GUILD_MEMBERS when the user or the guild is at its limit
404error responseUNKNOWN_USER or UNKNOWN_GUILD when the user or the guild doesn't exist

The guild gets Guild Member Add, and the guild's system channel shows a join message.

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

DELETE/v1/admin/guilds/{guild_id}/members/{user_id}Audit reason

Removes a member from a guild without banning them. You need guild:kick_member. The guild's audit log shows the Fluxer system user (ID 0) as the moderator.

StatusBodyCondition
204emptyThe member was removed
403error responseMISSING_PERMISSIONS when the user owns the guild
404error responseUNKNOWN_GUILD when the guild doesn't exist, or UNKNOWN_MEMBER when the user isn't a member

The guild gets Guild Member Remove.

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

PUT/v1/admin/guilds/{guild_id}/bans/{user_id}Audit reason

Bans a user from a guild, whether or not they're a member, and can delete their recent messages. You need guild:ban_member. The guild's audit log shows the Fluxer system user (ID 0) as the moderator.

FieldTypeDescription
delete_message_seconds?1integerHow far back to delete messages, in seconds (0-604800)
delete_message_days?1integerHow far back to delete messages, in days (0-7, default 0)
reason??stringThe ban reason (at most 512 characters)
ban_duration_seconds?integerHow long the ban lasts, in seconds (60-63072000, or 0 for permanent, default 0)

1 delete_message_seconds wins when you send both

StatusBodyCondition
204emptyThe user was banned
403error responseMISSING_PERMISSIONS when the user owns the guild
404error responseUNKNOWN_GUILD or UNKNOWN_USER when the guild or the user doesn't exist, or UNKNOWN_MEMBER for the system user

Like any guild ban, it also blocks the user's email address and last IP address. The guild gets Guild Ban Add. If the user is a member, they're removed and the guild gets Guild Member Remove.

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

DELETE/v1/admin/guilds/{guild_id}/bans/{user_id}Audit reason

Removes a guild ban and sends Guild Ban Remove to the guild. You need guild:ban_member.

StatusBodyCondition
204emptyThe ban was removed
400error responseINVALID_FORM_BODY with USER_IS_NOT_BANNED when the user isn't banned
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

DELETE/v1/admin/guilds/{guild_id}/roles/{role_id}/iconAudit reason

Clears the image and Unicode emoji of a role icon, deletes the old image later and sends Guild Role Update to the guild. You need guild:update:settings.

StatusBodyCondition
204emptyThe role icon was cleared
404error responseUNKNOWN_ROLE when the role doesn't exist in the guild

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/emojisAudit reason

Returns every custom emoji of a guild. You need asset:purge.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
emojisarray[Admin guild expression object]Every custom emoji of the guild
StatusBodyCondition
200response bodyThe emojis were returned, and the list is empty for an unknown guild

The rate limit is 200 requests per minute, on the admin:lookup bucket.

GET/v1/admin/guilds/{guild_id}/stickersAudit reason

Returns every sticker of a guild. You need asset:purge.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
stickersarray[Admin guild expression object]Every sticker of the guild
StatusBodyCondition
200response bodyThe stickers were returned, and the list is empty for an unknown guild

The rate limit is 200 requests per minute, on the admin:lookup bucket.

DELETE/v1/admin/guilds/{guild_id}/assetsAudit reason

Deletes emojis and stickers of a guild with their images and returns a result for each ID. You need asset:purge. This can't be undone, and the guild gets Guild Emojis Update or Guild Stickers Update for each deletion.

FieldTypeDescription
idsarray[string]Emoji and sticker IDs, each 1-64 characters (at most 100)
FieldTypeDescription
processedarray[Admin guild asset purge result object]IDs that were purged
errorsarray[Admin guild asset purge error object]IDs that failed
StatusBodyCondition
200response bodyThe purge finished, even when some IDs failed

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/audit-logsAudit reason

Returns a page of the guild's own audit log, the same as the public List guild audit logs. You need guild:audit_log:view.

FieldTypeDescription
limit?integerMaximum entries to return (1-100, default 50)
before?1snowflakeReturn entries older than this entry ID
after?1snowflakeReturn entries newer than this entry ID
user_id?snowflakeReturn only entries by this user
action_type?2integerReturn only entries with this audit action

1 Sending both fails with INVALID_FORM_BODY and CANNOT_SPECIFY_BOTH_BEFORE_AND_AFTER

2 The thread actions 110, 111 and 112 fail with INVALID_FORM_BODY

FieldTypeDescription
audit_log_entriesarray[guild audit log entry object]The entries in this page
usersarray[partial user object]Users the entries mention
webhooksarray[audit log webhook object]Webhooks the entries mention

The schema also declares threads, which this route never returns.

StatusBodyCondition
200response bodyThe page was returned, and it's empty for an unknown guild

The rate limit is 200 requests per minute, on the admin:lookup bucket.

POST/v1/admin/guilds/{guild_id}/reloadsAudit reason

Loads a guild again from storage on the Gateway, which also starts a stopped guild. You need guild:reload. Connected sessions get Guild Update.

FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyThe guild was reloaded
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

POST/v1/admin/guilds/{guild_id}/shutdownsAudit reason

Stops a guild on the Gateway without touching stored data. You need guild:shutdown. Connected sessions get Guild Delete with unavailable true, and the Gateway reconnects them to the guild on its own, which starts it again.

FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyThe guild was stopped
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 100 requests per minute, on the admin:guild:modify bucket.

POST/v1/admin/guilds/{guild_id}/archivesAudit reason

Starts building an archive of a guild's channels, messages, members, roles and settings. You need archive:trigger:guild. Check progress and download it through Archives.

FieldTypeDescription
include_attachments?booleanWhether to include uploaded files (default false)
StatusBodyCondition
200archive objectThe archive was queued
404error responseUNKNOWN_GUILD when the guild doesn't exist

The rate limit is 200 requests per minute, on the admin:lookup bucket.