Skip to content
Fluxer API

Admin guilds

Admin guild operations read and change the guilds the public Guilds resource exposes. Most of them need no membership in the guild and no guild permission, and Remove guild member and Ban guild member are the two exceptions.

Archives owns the archive lifecycle and the downloads.

Reads use the admin:lookup bucket, which permits 200 requests per minute for each authenticated user. Writes use the admin:guild:modify bucket, which permits 100 requests per minute for each authenticated user. Create guild archive is the one write served from the read bucket.

The compact guild representation returned by List guilds and by List user guilds. It has no channel or role state.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild
featuresarray[string]The complete guild feature set (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, or null when unset
banner?stringThe banner hash, or null when unset
member_count2integerThe recorded member count
nsfw_level?integerThe NSFW level
nsfw?3booleanWhether the guild is flagged as adult content
content_warning_level?3integerThe guild content warning level
content_warning_text?3?stringThe custom content warning text
approximate_member_count?4integerThe member count the main Gateway reports
approximate_presence_count?4integerThe connected member count the main Gateway reports

1 All three are null whenever the owner account is not resolved. List guilds never resolves it, so all three are always null there

2 A member connecting or disconnecting does not change it

3 No operation populates these three, so they are absent from every current response

4 Present only on List user guilds when that operation is asked for counts

{
"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
}

The full guild representation returned by Get guild. It embeds every channel and every role of the guild.

FieldTypeDescription
idsnowflakeThe ID of the guild
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
namestringThe name of the guild (1-100 characters)
vanity_url_code?stringThe custom invite code, or null when the guild owns none
icon?stringThe icon hash, or null when unset
banner?stringThe banner hash, or null when unset
splash?stringThe invite splash hash, or null when unset
embed_splash?stringThe embedded invite splash hash, or null when unset
featuresarray[string]The complete guild feature set (at most 100)
verification_levelintegerThe verification level
mfa_levelintegerThe MFA level required of moderators
nsfw_levelintegerThe NSFW level
nsfw?2booleanWhether the guild is flagged as adult content
content_warning_level?2integerThe guild content warning level
content_warning_text?2?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, or null when unset
afk_timeoutintegerThe idle time before a member is moved, in seconds
system_channel_id?snowflakeThe channel system messages are sent to, or null when they are disabled
system_channel_flagsintegerThe system channel flags
rules_channel_id?snowflakeThe channel holding the guild rules, or null when unset
disabled_operationsintegerThe disabled guild operations bitfield
member_countintegerThe recorded member count
channelsarray[Admin guild channel object]Every channel in the guild
rolesarray[Admin guild role object]Every role in the guild

1 All three are null when the owner account cannot be resolved

2 The operation does not populate these three, so they are absent from every current response

FieldTypeDescription
idsnowflakeThe ID of the channel
name?stringThe channel name (1-100 characters)
typeintegerThe channel type
positionintegerThe sort position within the guild
parent_id?snowflakeThe parent category ID, or null when the channel is top-level
nsfw?booleanWhether the channel is marked age restricted
nsfw_override?3?booleanThe age restriction set on the channel itself
content_warning_level?3integerThe content warning level set on the channel
content_warning_text?3?stringThe content warning text set on the channel
url4?stringThe external channel URL (1-2048 characters)

3 The operation does not populate these three, so they are absent from every current response

4 Null for every channel type that is not an external link channel

FieldTypeDescription
idsnowflakeThe ID of the role
namestringThe role name (1-100 characters)
colorintegerThe packed RGB colour
positionintegerThe sort position within the guild
permissionsstringThe permission bitfield as an unsigned 64-bit decimal string
hoistbooleanWhether the role is displayed separately in the member list
mentionablebooleanWhether the role can be mentioned by anyone

The guild state Update guild reads back after applying the request. It has no channel, role, or owner identity state.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild (1-100 characters)
featuresarray[string]The complete guild feature set after the update (at most 100)
owner_idsnowflakeThe ID of the owner after the update
icon?stringThe icon hash, or null when unset or cleared
banner?stringThe banner hash, or null when unset or cleared
member_countintegerThe recorded member count
nsfw_levelintegerThe NSFW level

One custom emoji or one sticker of a guild, together with a resolvable media URL. The two listings return the same shape.

FieldTypeDescription
idsnowflakeThe ID of the emoji or sticker
namestringThe expression name (1-100 characters)
animatedbooleanWhether the stored image is animated
creator_idsnowflakeThe account that uploaded the expression
media_url1stringThe Media Proxy URL the expression is served from (1-2048 characters)

1 Always the WebP representation, at size 160 for an emoji and size 320 for a sticker, and it has the animated=true selector only when animated is true

{
"id": "1496613881730531328",
"name": "party_parrot",
"animated": true,
"creator_id": "1483920011884392448",
"media_url": "https://media.example.com/emojis/1496613881730531328.webp?size=160&animated=true"
}

One entry of the processed array returned by Purge guild assets.

FieldTypeDescription
idsnowflakeThe asset that was purged
asset_typestringThe asset type the ID resolved to
found_in_db1booleanWhether the ID matched an emoji or sticker record
guild_id2?snowflakeThe guild the purged record belonged to
guild_nsfw_level2?integerThe NSFW level of that guild

1 False exactly when asset_type is unknown, in which case only the stored media was queued for removal

2 Both null when asset_type is unknown, and guild_nsfw_level is also null when the owning guild can no longer be resolved

One entry of the errors array returned by Purge guild assets.

FieldTypeDescription
idstringThe asset that could not be purged, as supplied
error1stringThe reason the asset could not be purged (1-4000 characters)

1 The operation produces Invalid numeric ID, Asset belongs to another guild, and Failed to purge asset. Any other value is the message of the underlying failure

ValueDescription
emojiThe ID resolved to a custom emoji owned by the requested guild
stickerThe ID resolved to a sticker owned by the requested guild
unknownThe ID matched no emoji and no sticker record, and only associated media was queued for removal

An ID owned by a different guild appears in errors with no asset type.

GET/v1/admin/guilds

Searches guilds through the guild search index and returns Admin guild objects. Requires guild:lookup.

The index matches q against the guild name, the discovery tags, the custom invite code, and the discovery description, in that order of weight. Hits are ordered by guild creation time ascending, so the oldest matching guild is first. An empty or omitted q matches every indexed guild.

FieldTypeDescription
q?1stringFree-text query (1-1024 characters)
limit?integerMaximum guilds to return (1-200, default 50)
offset?integerGuilds to skip before returning results (0-10000, default 0)

1 A q of all decimal digits also resolves that value as an exact guild ID, but only while offset is 0. A guild the index did not return is prepended to guilds and adds one to total

FieldTypeDescription
guildsarray[Admin guild object]Guilds in this page
total2integerThe number of guilds the index reported for the query

2 The value can exceed the number of entries in guilds. Pagination advances with offset, and the operation returns no cursor

StatusBodyCondition
200response bodyGuild page was returned
403error responseFEATURE_TEMPORARILY_DISABLED, because the instance has no search backend configured

200 requests per minute for each authenticated user, on the admin:lookup bucket.

GET/v1/admin/guilds/{guild_id}

Returns one guild with its channels and roles. Requires guild:lookup.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
guild1?Admin guild detail objectThe guild, or null when the ID resolves to nothing

1 A guild that does not exist answers 200 with a null guild

StatusBodyCondition
200response bodyA lookup was performed, whether or not it resolved

200 requests per minute for each authenticated user, on the admin:lookup bucket.

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

Applies one or more field groups to a guild and returns the Admin guild update object read back afterwards. Omitted fields are left unchanged.

This is the only way to change the owner of a guild without acting as its current owner. The public Transfer guild ownership operation requires the caller to be the owner.

Fluxer evaluates authorisation in two stages and reads the body between them. The account first needs at least one of guild:update:name, guild:update:settings, guild:update:features, guild:update:vanity, and guild:transfer_ownership. The validated body then selects a set of ACLs and every one of them is required, so a body with name and nsfw needs both guild:update:name and guild:update:settings. The wildcard satisfies both stages.

  • guild:update:name is selected by name.
  • guild:update:settings is selected by fields, verification_level, mfa_level, nsfw_level, nsfw, content_warning_level, content_warning_text, explicit_content_filter, default_message_notifications, and disabled_operations.
  • guild:update:features is selected by add_features and remove_features.
  • guild:update:vanity is selected by vanity_url_code.
  • guild:transfer_ownership is selected by new_owner_id.

A body with no field at all selects nothing, so an empty patch applies no change.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
name?stringThe replacement name (1-100 characters)
vanity_url_code?1?stringThe replacement custom invite code, or null to release the current one
new_owner_id?2snowflakeThe replacement owner
add_features?3array[string]Guild features to add (at most 100)
remove_features?3array[string]Guild features to remove (at most 100)
fields?4array[string]Image fields to clear, each icon, banner, splash, or embed_splash (at most 10)
verification_level?integerThe replacement verification level
mfa_level?integerThe replacement MFA level
nsfw_level?integerThe replacement NSFW level
nsfw?5booleanAccepted and ignored
content_warning_level?5integerAccepted and ignored
content_warning_text?5?stringAccepted and ignored (at most 200 characters)
explicit_content_filter?integerThe replacement explicit content filter level
default_message_notifications?integerThe replacement default message notification level
disabled_operations?6integerThe replacement disabled guild operations bitfield

1 Normalised to lowercase with whitespace folded to hyphens and consecutive hyphens collapsed. The normalised result is 2 to 32 characters, and a shorter or longer one is rejected with 400

2 The operation does not confirm that the replacement account exists, and an unresolvable owner makes every owner_ field null on later reads

3 Additions are applied before removals, so a feature named in both is removed. Any string is accepted

4 The array only clears an image, and no Admin operation uploads one

5 Validated, selects guild:update:settings, and records an update_settings audit entry. The guild record is left unchanged

6 Any integer from 0 to 2147483647, stored as supplied, including bits outside the documented registry

A code already claimed by any invite is rejected with 400 INVALID_FORM_BODY and the validation code THIS_VANITY_URL_IS_ALREADY_TAKEN against vanity_url_code.

The channel references, idle timeout, and message history cutoff of a guild are not Admin-writable. They change through the public Modify guild operation.

FieldTypeDescription
guildAdmin guild update objectThe guild state read back after the request was applied
StatusBodyCondition
200response bodyEvery selected field group was applied
400error responseThe custom invite code is malformed or already claimed
403error responseMISSING_ACL, because the account holds none of the five update ACLs, or lacks an ACL a supplied field selects
404error responseUNKNOWN_GUILD, because the guild does not exist

Clearing an image field queues the previous stored object for deletion. Replacing the custom invite code deletes the invite record holding the previous code and creates one for the new code, while sending null deletes the previous record without creating another.

Supplying add_features or remove_features reconciles an existing discovery application. The application is approved when DISCOVERABLE becomes present and it is not already approved, and it is marked removed when DISCOVERABLE becomes absent and it was approved. A guild that has never applied for discovery gains no application.

Every applied group refreshes the guild’s entry in the guild search index and fires one Guild Update Dispatch to every session that can see the guild, including when the write changes no value.

Each applied group records one Admin audit entry with the target type guild and the guild ID as the target. The actions are clear_fields with the cleared field names, update_settings with each applied setting, and update_features with the added, removed, and resulting feature sets. The remaining actions are update_name with the old and new names, update_vanity with the old and new codes, and transfer_ownership with the old and new owner IDs.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

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

Permanently deletes a guild and every record it owns. Requires guild:delete.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyGuild was deleted
404error responseUNKNOWN_GUILD, because the guild does not exist

Fluxer emits one Guild Delete Dispatch first, then detaches every member from the guild on the main Gateway. It deletes each member’s guild settings entry for the guild, and drops each human member’s guild folder references to the guild.

Every invite, every webhook, every message of every channel, and every channel attachment are deleted. Any discovery application is deleted. The guild record is then deleted, the guild is stopped on the main Gateway, and it is removed from the guild search index.

One Admin audit entry is recorded with the action delete_guild, the target type guild, and the guild ID in both the target and the metadata.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/members

Returns one page of guild member objects read from the main Gateway, without requiring membership. Requires guild:list:members.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
limit?integerMaximum members to return (1-200, default 50)
offset?integerMembers to skip before returning results (0-2147483647, default 0)
FieldTypeDescription
membersarray[guild member object]Members in this page
totalintegerThe total member count the main Gateway reported
limit1integerThe limit the operation applied
offset1integerThe offset the operation applied

1 Both are echoed from the resolved query, so a request that omitted them reads back the defaults. A client advances the page by adding limit to offset

StatusBodyCondition
200response bodyMember page was returned
500error responseThe API loses its connection to the main Gateway during the call

A member query the main Gateway reports as failed returns 502 BAD_GATEWAY, an unanswered call returns 504 GATEWAY_TIMEOUT, and an overloaded cluster returns 503 SERVICE_UNAVAILABLE.

200 requests per minute for each authenticated user, 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. Requires guild:force_add_member. The operation takes no request body.

Only the Admin ACL is evaluated.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
user_idsnowflakeThe user to add
FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyMember was added, or the user was already a member
400error responseMAX_GUILDS because the user is at their guild limit, or MAX_GUILD_MEMBERS because the guild is at its member limit
404error responseUNKNOWN_USER because the user does not exist, or UNKNOWN_GUILD because the guild does not exist

Fluxer creates the membership with the Admin force-add join source and restores a communication timeout still in force from a previous membership. The guild ban list is not consulted, so a banned user can be admitted. The suspicious activity phone gate does not run. The per-user guild limit and the guild member limit are still enforced.

Guild Member Add fires to the guild, the user’s sessions are joined to the guild on the main Gateway, and the member enters guild member search when the guild has an indexed member set. The ordinary join system message is created, and with it a Message Create Dispatch, unless the guild sets SUPPRESS_JOIN_NOTIFICATIONS or has no usable system channel. A bot target additionally records a BOT_ADD entry in the guild’s own audit log.

A user who is already a member keeps their existing membership. No membership is created, no counter moves, and no Dispatch is emitted. The Admin audit entry is still written.

One Admin audit entry is recorded with the action force_add_to_guild, the target type user, the added user as the target, and the guild ID in the metadata.

100 requests per minute for each authenticated user, 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 and returns 204 with an empty body. Requires guild:kick_member.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
user_idsnowflakeThe member to remove
StatusBodyCondition
204emptyMember was removed
400error responseTWO_FACTOR_REQUIRED in an MFA level 1 guild
4031error responseMISSING_ACCESS when the acting account cannot see the guild, or MISSING_PERMISSIONS when KICK_MEMBERS is absent
404error responseUNKNOWN_MEMBER, because the target is not a member, is the guild owner, or is the acting account

1 MISSING_PERMISSIONS also covers a target who outranks the acting account

Fluxer snapshots the membership metadata, including any communication timeout, so that a later rejoin restores it. It then deletes the membership, decreases the recorded member count by one, and detaches the user from the guild on the main Gateway. The member is removed from guild member search when the guild has an indexed member set.

Guild Member Remove fires to the guild. A MEMBER_KICK entry is written to the guild’s own audit log. The entry names the acting Admin account and has the audit reason, and the write fires Guild Audit Log Entry Create to sessions holding VIEW_AUDIT_LOG.

The removal creates no ban record, so the user can rejoin.

One Admin audit entry is recorded with the action kick_member, the target type guild_member, the removed user as the target, and the guild and user IDs in the metadata.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

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

Bans a user from a guild, optionally removes their recent messages, and returns 204 with an empty body. The target need not be a member. Requires guild:ban_member.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
user_idsnowflakeThe user to ban
FieldTypeDescription
delete_message_seconds?1integerThe window of recent messages to delete, in seconds (0-604800)
delete_message_days?1integerThe window of recent messages to delete, in days (0-7, default 0)
reason??stringThe guild ban reason stored on the ban record (at most 512 characters)
ban_duration_seconds?2integerThe ban duration in seconds, either exactly 0 or between 60 and 63072000

1 delete_message_seconds wins when both are supplied, and delete_message_days is otherwise multiplied by 86400. A resolved window of 0 deletes no message

2 Omitting the field and sending 0 both produce a permanent ban. There is no field that sets an absolute expiry timestamp

StatusBodyCondition
204emptyUser was banned
400error responseDuration, reason, or message window validation fails, or TWO_FACTOR_REQUIRED in an MFA level 1 guild
403error responseMISSING_PERMISSIONS because BAN_MEMBERS is absent in the guild or the target member outranks the acting account
404error responseUNKNOWN_MEMBER because the target is the acting account, or UNKNOWN_USER because the user does not exist

The ban record names the acting Admin account as moderator and has the expiry, the reason, the target’s last known IP address unless that address is on the ban exemption list, and the target’s lowercased email address. While the ban exists the guild also blocks that address and that email, as described by Guild moderation, and removing the ban releases both.

A positive deletion window queues a background job that deletes the target’s matching messages after the response, which fires Message Delete Bulk as deletion progresses.

Guild Ban Add fires to the guild. A target who was a member is then removed, which decreases the recorded member count, detaches the user from the guild on the main Gateway, removes the member from guild member search, and fires Guild Member Remove. The ban path snapshots no membership metadata, so a communication timeout in force at the moment of the ban is not restored on a later rejoin. This operation writes no entry to the guild’s own audit log, and it emits no Guild Audit Log Entry Create.

One Admin audit entry is recorded with the action ban_member, the target type guild_member, the banned user as the target, and the guild ID, user ID, delete_message_days value, and any supplied reason and duration in the metadata.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/emojis

Returns every custom emoji of a guild as Admin guild expression objects. Requires asset:purge.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
guild_idsnowflakeThe guild the listing covers, echoed from the path
emojis1array[Admin guild expression object]Every custom emoji of the guild

1 The listing is not paginated and takes no query parameters

StatusBodyCondition
200response bodyEmojis were returned, or the guild owns none

The operation does not verify that the guild exists, so an unknown guild ID returns an empty listing.

200 requests per minute for each authenticated user, on the admin:lookup bucket.

GET/v1/admin/guilds/{guild_id}/stickers

Returns every sticker of a guild as Admin guild expression objects. Requires asset:purge.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
guild_idsnowflakeThe guild the listing covers, echoed from the path
stickers1array[Admin guild expression object]Every sticker of the guild

1 The listing is not paginated and takes no query parameters

StatusBodyCondition
200response bodyStickers were returned, or the guild owns none

The operation does not verify that the guild exists, so an unknown guild ID returns an empty listing.

200 requests per minute for each authenticated user, on the admin:lookup bucket.

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

Deletes emoji and sticker records owned by a guild and queues their stored media for removal, reporting the outcome of every ID separately. Requires asset:purge.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
ids1array[string]Emoji and sticker IDs to delete with their media, each 1 to 64 characters (at most 100)

1 Each entry is trimmed, and Fluxer skips one that is then empty and any repeat of an entry already seen, so neither appears in processed or errors. An empty array is accepted and purges nothing

FieldTypeDescription
processedarray[Admin guild asset purge result object]Assets that were purged
errorsarray[Admin guild asset purge error object]Assets that could not be purged
StatusBodyCondition
200response bodyThe purge attempt completed, whether or not every ID succeeded

The operation does not verify that the guild exists. Under an unknown guild ID, an ID that matches another guild’s record lands in errors and every other ID is reported as unknown.

A record owned by the guild in the path is deleted, and its stored media is queued for removal. The guild then receives one Guild Emojis Update or Guild Stickers Update Dispatch with its complete remaining expression set. A request that purges several records emits one such Dispatch per record.

A record owned by a different guild is left untouched and reported in errors. An ID with no record queues emoji and sticker media removal for that ID and is reported with the unknown asset type, so the operation also clears orphaned media.

Every entry in processed records its own Admin audit entry, with the numeric ID as the target. A purged emoji records purge_guild_emoji_asset with the target type guild_emoji, a purged sticker records purge_guild_sticker_asset with guild_sticker, and an unknown ID records purge_asset with asset. Entries in errors record nothing.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

GET/v1/admin/guilds/{guild_id}/audit-logs

Returns one page of the guild’s own in-app audit log, without requiring guild membership or VIEW_AUDIT_LOG. Requires guild:audit_log:view.

The page has the same shape and the same semantics as the public List guild audit logs operation, including the message deletion consolidation that operation performs.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
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?2snowflakeReturn only entries recorded for this actor
action_type?2integerReturn only entries with this audit action value

1 The two cursors are mutually exclusive. Supplying both fails with 400 INVALID_FORM_BODY and the validation code CANNOT_SPECIFY_BOTH_BEFORE_AND_AFTER against before

2 Supplying either filter disables the consolidation of consecutive message deletion entries

FieldTypeDescription
audit_log_entriesarray[guild audit log entry object]The returned page of audit entries
usersarray[partial user object]Users referenced by the returned entries
webhooksarray[audit log webhook object]Webhooks referenced by the returned entries
StatusBodyCondition
200response bodyAudit page was returned, or the guild has no matching entry
400error responsebefore and after were supplied together

The operation does not verify that the guild exists, so an unknown guild ID returns an empty page.

The read records no Admin audit entry and appends no ordinary entry to the guild’s own audit log. It still changes that log. Runs of consecutive message deletion entries are replaced with one bulk entry, and that replacement emits Guild Audit Log Entry Create, exactly as the public operation does.

200 requests per minute for each authenticated user, on the admin:lookup bucket.

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

Reloads a guild’s state on the main Gateway. Requires guild:reload. The operation takes no request body.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyReload command completed
404error responseUNKNOWN_GUILD, because the guild does not exist
500error responseThe API loses its connection to the main Gateway during the call

A reload the main Gateway reports as failed returns 502 BAD_GATEWAY, an unanswered call returns 504 GATEWAY_TIMEOUT, and an overloaded cluster returns 503 SERVICE_UNAVAILABLE.

The main Gateway reloads the guild’s current state from storage and fires one Guild Update Dispatch to every session subscribed to the guild. The operation changes no guild data.

One Admin audit entry is recorded with the action reload_guild, the target type guild, and the guild ID in both the target and the metadata.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

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

Unloads a guild from the main Gateway without deleting stored data. Requires guild:shutdown. The operation takes no request body.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyShutdown command completed
404error responseUNKNOWN_GUILD, because the guild does not exist
500error responseThe API loses its connection to the main Gateway during the call

A shutdown the main Gateway reports as failed returns 502 BAD_GATEWAY, an unanswered call returns 504 GATEWAY_TIMEOUT, and an overloaded cluster returns 503 SERVICE_UNAVAILABLE.

The main Gateway stops the guild process. Every session subscribed to the guild receives a Guild Delete Dispatch with unavailable true and reconnects after one second, which starts the guild again from stored data. Stored guild data is untouched, and Reload guild also starts a stopped guild.

One Admin audit entry is recorded with the action shutdown_guild, the target type guild, and the guild ID in both the target and the metadata.

100 requests per minute for each authenticated user, on the admin:guild:modify bucket.

POST/v1/admin/guilds/{guild_id}/archives

Queues an asynchronous archive of the guild’s channels, messages, members, roles, and settings, and returns the created archive object. Requires archive:trigger:guild.

Archive status and downloads are read through Archives.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
FieldTypeDescription
include_attachments?booleanWhether uploaded files are included in the archive (default false)
StatusBodyCondition
200archive objectArchive was created and queued
404error responseUNKNOWN_GUILD, because the guild does not exist
500error responseArchive creation or queueing fails

The archive record is created with the acting Admin account as requested_by, a progress_percent of 0, a progress_step of Queued, and an expires_at that is never extended. The archive is built after the response is returned. A client reads progress through Get archive.

The operation emits no Gateway Dispatch and records no Admin audit entry.

200 requests per minute for each authenticated user, on the admin:lookup bucket.