Admin discovery
Admins review the guild applications that guild managers submit through the public Discovery resource. Every endpoint here needs discovery:review except Remove discovery listing, which needs discovery:remove. Each one records an Admin audit entry.
Admin pending application object
Section titled “Admin pending application object”A pending application and details about its guild.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| guild_id | snowflake | The ID of the guild that applied |
| guild_name | string | The name of the guild |
| guild_icon | ?string | The icon hash of the guild |
| guild_owner_id | snowflake | The ID of the guild owner |
| guild_owner_username | ?string | The username of the owner |
| guild_owner_global_name | ?string | The display name of the owner |
| guild_owner_discriminator | ?string | The discriminator of the owner |
| guild_member_count | integer | The approximate member count |
| guild_nsfw_level | ?integer | The NSFW level of the guild |
| guild_features | array[string] | The guild features |
| description | string | The listing description (10-300 characters) |
| category_type | integer | The discovery category of the listing |
| primary_language | ?string | The primary language code |
| custom_tags | array[string] | The custom tags of the listing |
| applied_at | ISO8601 timestamp | When the guild applied |
Example
Section titled “Example”{ "guild_id": "1478812292088791040", "guild_name": "Example Guild", "guild_icon": "a1b2c3d4e5f60718293a4b5c6d7e8f90", "guild_owner_id": "1478812292088791041", "guild_owner_username": "example", "guild_owner_global_name": "Example", "guild_owner_discriminator": "0042", "guild_member_count": 1204, "guild_nsfw_level": 0, "guild_features": ["COMMUNITY"], "description": "A place to talk about building things.", "category_type": 3, "primary_language": "en-US", "custom_tags": ["makers", "diy"], "applied_at": "2026-08-19T14:03:55.000Z"}Admin discovery listing object
Section titled “Admin discovery listing object”An approved listing has every field of the Admin pending application object plus approved_at.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| approved_at | ?ISO8601 timestamp | When the application was approved |
List discovery applications
Section titled “List discovery applications”GET/v1/admin/discovery/applicationsReturns every pending application as an array of Admin pending application objects.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | array[Admin pending application object] | Pending applications were returned |
The rate limit is 30 requests per 10 seconds, on the discovery:admin:list bucket.
Review discovery application
Section titled “Review discovery application”PATCH/v1/admin/discovery/applications/{guild_id}Approves or rejects a pending application and returns the discovery application. An approval adds the DISCOVERABLE and VISITS_ENABLED guild features and sends Guild Update.
JSON body
Section titled “JSON body”| Field | Type | Description |
|---|---|---|
| status | approved | rejected | The decision |
| reason? | string | The review reason, at most 500 characters. Required for rejected, where it must be at least 1 character |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | discovery application object | The decision was applied |
| 404 | error response | DISCOVERY_APPLICATION_NOT_FOUND when the guild has no application |
| 409 | error response | DISCOVERY_APPLICATION_ALREADY_REVIEWED when the application is not pending |
The rate limit is 20 requests per 10 seconds, on the discovery:admin:action bucket.
List discovery categories
Section titled “List discovery categories”GET/v1/admin/discovery/categoriesReturns the discovery categories as an array of discovery category objects.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | array[discovery category object] | Categories were returned |
The rate limit is 30 requests per 10 seconds, on the discovery:admin:list bucket.
List guilds in a discovery category
Section titled “List guilds in a discovery category”GET/v1/admin/discovery/categories/{category_id}/listingsReturns approved listings in a category as an array of Admin discovery listing objects, most members first. category_id is an integer from 0 to 8.
Query parameters
Section titled “Query parameters”| Field | Type | Description |
|---|---|---|
| limit? | integer | The number of listings to return (1-100, default 50) |
| offset? | integer | The number of listings to skip (0-10000, default 0) |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | array[Admin discovery listing object] | The page was returned |
The rate limit is 30 requests per 10 seconds, on the discovery:admin:list bucket.
List discovery listings
Section titled “List discovery listings”GET/v1/admin/discovery/listingsReturns every approved listing as an array of Admin discovery listing objects.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | array[Admin discovery listing object] | Approved listings were returned |
The rate limit is 30 requests per 10 seconds, on the discovery:admin:list bucket.
Move discovery listings to a category
Section titled “Move discovery listings to a category”PATCH/v1/admin/discovery/listingsMoves the guilds in guild_ids to one discovery category. The request returns 200 even when some guilds don't move, and failed_guild_ids lists them.
JSON body
Section titled “JSON body”| Field | Type | Description |
|---|---|---|
| guild_ids | array[snowflake] | The guilds to move (1-100) |
| category_type | integer | The category to move them to (0-8) |
Response body
Section titled “Response body”| Field | Type | Description |
|---|---|---|
| updated | integer | The number of guilds that moved |
| failed_guild_ids | array[snowflake] | The guilds that did not move |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | response body | The batch ran |
The rate limit is 20 requests per 10 seconds, on the discovery:admin:action bucket.
Update discovery listing
Section titled “Update discovery listing”PATCH/v1/admin/discovery/listings/{guild_id}Updates the listing of an approved or pending application and returns the discovery application. An approved listing stays approved.
JSON body
Section titled “JSON body”| Field | Type | Description |
|---|---|---|
| description? | string | The listing description (10-300 characters) |
| category_type? | integer | The category (0-8) |
| primary_language? | string | A primary language code |
| custom_tags? | array[string] | Up to 10 custom tags that replace the current ones |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | discovery application object | The listing was updated |
| 403 | error response | CONTENT_BLOCKED when the description matches a content blocklist |
| 404 | error response | DISCOVERY_APPLICATION_NOT_FOUND when the guild has no application |
| 409 | error response | DISCOVERY_APPLICATION_ALREADY_REVIEWED when the application is rejected or removed |
The rate limit is 20 requests per 10 seconds, on the discovery:admin:action bucket.
Remove discovery listing
Section titled “Remove discovery listing”DELETE/v1/admin/discovery/listings/{guild_id}Removes an approved listing and returns the discovery application. Fluxer removes the DISCOVERABLE feature from the guild, keeps VISITS_ENABLED and sends Guild Update. The guild has to apply again to be listed.
JSON body
Section titled “JSON body”| Field | Type | Description |
|---|---|---|
| reason | string | The removal reason (1-500 characters) |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | discovery application object | The listing was removed |
| 400 | error response | DISCOVERY_NOT_DISCOVERABLE when the application is not approved |
| 404 | error response | DISCOVERY_APPLICATION_NOT_FOUND when the guild has no application |
The rate limit is 20 requests per 10 seconds, on the discovery:admin:action bucket.