Skip to content
Fluxer API

Discovery

Discovery is the public directory of guilds that any account can browse and join, shown as "Explore" in the Fluxer apps. Someone with MANAGE_GUILD applies to list a guild, and an instance admin reviews the application through the Admin Discovery API.

When discovery is turned off for the instance, every route except List discovery categories and Get discovery status returns 400 DISCOVERY_DISABLED.

An approved guild listing as search returns it.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild
icon?stringThe icon hash of the guild
banner?stringThe banner hash of the guild
description?stringThe description from the application
category_typeintegerThe discovery category of the listing
primary_language?stringThe primary language of the listing
custom_tagsarray[string]The custom tags of the listing
member_countintegerThe approximate member count of the guild
online_countintegerThe approximate online member count of the guild
featuresarray[string]The guild features of the guild
badge_idsarray[snowflake]The custom badges of the guild. Look them up with List guild badges
verification_levelintegerThe verification level of the guild (at least 1)
visits_enabled?booleanWhether you can visit the guild before joining
{
"id": "1489002177550843904",
"name": "Example guild",
"icon": "a_9f1c2d3e4b5a60718293a4b5c6d7e8f9",
"banner": null,
"description": "A place to talk about the example project.",
"category_type": 4,
"primary_language": "en-US",
"custom_tags": ["open source", "rust"],
"member_count": 4120,
"online_count": 318,
"features": ["DISCOVERABLE"],
"badge_ids": [],
"verification_level": 1
}

The search results for one page.

FieldTypeDescription
guildsarray[discovery guild object]The matching guilds on this page
totalintegerThe number of matching guilds across all pages
category_countsarray[discovery category count object]The match count for each category, ignoring the category filter

The number of matches in one category.

FieldTypeDescription
category_typeintegerThe discovery category
countintegerThe number of matching guilds in the category

The discovery listing of one guild and its review state. A guild has at most one application.

FieldTypeDescription
guild_idsnowflakeThe ID of the guild
guild_nsfw_level??integerThe NSFW level of the guild, set only in Admin Discovery API responses
statusstringThe application status
descriptionstringThe description shown on the listing
category_typeintegerThe discovery category of the listing
primary_language?stringThe primary language of the listing
custom_tagsarray[string]The custom tags of the listing
applied_atISO8601 timestampWhen the application was submitted
reviewed_at?ISO8601 timestampWhen the application was approved or rejected
review_reason?stringThe reason given with the approval or rejection
removed_at?ISO8601 timestampWhen an instance admin removed the approved listing
removal_reason?stringThe reason given with the removal
{
"guild_id": "1489002177550843904",
"status": "pending",
"description": "A place to talk about the example project.",
"category_type": 4,
"primary_language": "en-US",
"custom_tags": ["open source", "rust"],
"applied_at": "2026-08-04T11:22:19.000Z",
"reviewed_at": null,
"review_reason": null,
"removed_at": null,
"removal_reason": null
}

The discovery state of a guild and whether it can apply.

FieldTypeDescription
application?discovery application objectThe current application of the guild
eligiblebooleanWhether the guild has enough members to apply, always false while discovery is off
min_member_countintegerThe minimum number of members a guild needs to apply

A category a listing can use.

FieldTypeDescription
idintegerThe discovery category value
namestringThe display name of the category

A channel in a listed guild that you can view before joining.

FieldTypeDescription
guilddiscovery preview guild objectThe guild the channel is in
channeldiscovery preview channel objectThe channel

The guild in a channel preview.

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild
icon?stringThe icon hash of the guild

The channel in a channel preview.

FieldTypeDescription
idsnowflakeThe ID of the channel
name?stringThe name of the channel
typeintegerThe channel type
ValueNameDisplay name
0GAMINGGaming
1MUSICMusic
2ENTERTAINMENTEntertainment
3EDUCATIONEducation
4SCIENCE_AND_TECHNOLOGYScience & Technology
5CONTENT_CREATORContent Creator
6ANIME_AND_MANGAAnime & Manga
7MOVIES_AND_TVMovies & TV
8OTHEROther
ValueDescription
pendingWaiting for an instance admin to review it
approvedListed, and the guild has the DISCOVERABLE feature
rejectedRefused, and the guild can apply again
removedTaken down by an instance admin, and the guild can apply again

Discovery has its own set of languages, separate from the client locales. A listing with no language gets en-US.

ValueNameNative name
arArabicالعربية
bgBulgarianБългарски
csCzechČeština
daDanishDansk
deGermanDeutsch
elGreekΕλληνικά
en-USEnglishEnglish
es-ESSpanish (Spain)Español (España)
es-419Spanish (Latin America)Español (Latinoamérica)
fiFinnishSuomi
frFrenchFrançais
heHebrewעברית
hiHindiहिन्दी
hrCroatianHrvatski
huHungarianMagyar
idIndonesianBahasa Indonesia
itItalianItaliano
jaJapanese日本語
koKorean한국어
ltLithuanianLietuvių
nlDutchNederlands
noNorwegianNorsk
plPolishPolski
pt-BRPortuguese (Brazil)Português (Brasil)
roRomanianRomână
ruRussianРусский
sv-SESwedishSvenska
thThaiไทย
trTurkishTürkçe
ukUkrainianУкраїнська
viVietnameseTiếng Việt
zh-CNChinese (Simplified)中文 (简体)
zh-TWChinese (Traditional)中文 (繁體)

A listing can have up to 10 custom tags of 2-30 characters each. A tag must start with a letter or digit and can only have letters, digits, spaces, hyphens, underscores, plus signs and ampersands. Fluxer lowercases and trims each tag and drops duplicates.

GET/v1/discovery/guildsBot

Searches the approved listings and returns a discovery search result object. Leave out query to browse every listing.

FieldTypeDescription
query?stringThe search text (at most 100 characters)
category?integerThe discovery category to filter by
language?stringThe primary language to filter by
tag?stringThe custom tag to filter by (at most 30 characters)
sort_by?stringrelevance sorts by match quality, and member_count and online_count sort by member count (default member_count)
limit?integerThe number of results per page (1-48, default 24)
offset?integerThe number of results to skip (default 0)
StatusBodyCondition
200discovery search result objectThe results were returned, even when nothing matched
403error responseFEATURE_TEMPORARILY_DISABLED when the instance has no search backend

The rate limit is 30 requests per 10 seconds, on the discovery:search bucket.

GET/v1/discovery/categoriesBot

Returns every discovery category object in display order.

StatusBodyCondition
200array[discovery category object]The categories were returned

The rate limit is 60 requests per 10 seconds, on the discovery:categories bucket.

GET/v1/discovery/guilds/{guild_id}/channels/{channel_id}

Returns a discovery channel preview object for a channel in a listed guild, which a client can show before you join. The guild needs an approved listing and invites turned on, and @everyone needs VIEW_CHANNEL and READ_MESSAGE_HISTORY in the channel. Threads can't be previewed, and forum and media channels need the channel_threads client capability.

StatusBodyCondition
200discovery channel preview objectThe channel can be previewed
400error responseDISCOVERY_NOT_DISCOVERABLE for any failed check, including a guild or channel that doesn't exist

The rate limit is 60 requests per 10 seconds, on the discovery:channel_preview bucket.

POST/v1/discovery/guilds/{guild_id}/visit

Starts a visit to a listed guild without an invite and returns a guild visit start object, like Visit invite guild. You need the guild_visits experiment assignment.

StatusBodyCondition
200guild visit start objectThe visit started, was already open or you're a member (member: true)
403error responseGUILD_VISITS_DISABLED when the guild doesn't accept visitors
403error responseGUILD_VISIT_AGE_RESTRICTED when the guild is for adults and you can't see adult content
403error responseINVITES_DISABLED when the guild has invites turned off
403error responseUSER_BANNED_FROM_GUILD or USER_IP_BANNED_FROM_GUILD when you're banned
404error responseUNKNOWN_GUILD when the guild isn't listed or you don't have the assignment

The rate limit is 10 requests per 60 seconds, on the guild:visit:start bucket.

POST/v1/discovery/guilds/{guild_id}/join

Adds you to a guild with an approved listing, without an invite, and returns 204. Fluxer sends Guild Create to your sessions and Guild Member Add to the guild.

StatusBodyCondition
204emptyYou joined, or were already a member
400error responseDISCOVERY_NOT_DISCOVERABLE when the guild has no approved listing
400error responseMAX_GUILDS when you're in the maximum number of guilds
400error responseMAX_GUILD_MEMBERS when the guild is full
403error responseACCOUNT_LIMITED when your account is limited
403error responseINVITES_DISABLED when the guild has invites turned off
403error responseUSER_BANNED_FROM_GUILD or USER_IP_BANNED_FROM_GUILD when you're banned

The rate limit is 10 requests per minute, on the discovery:join bucket.

POST/v1/guilds/{guild_id}/discoveryBot

Submits a discovery application and returns the discovery application object. You need MANAGE_GUILD. Applications stay pending until an instance admin reviews them, but a verified or partnered guild is approved right away and Fluxer sends Guild Update.

FieldTypeDescription
descriptionstringThe listing description (10-300 characters)
category_typeintegerThe discovery category
primary_language?stringThe primary language (default en-US)
custom_tags?array[string]The custom tags (at most 10)
StatusBodyCondition
200discovery application objectThe application is pending or was approved
400error responseDISCOVERY_INSUFFICIENT_MEMBERS when the guild has fewer members than the instance needs
403error responseCONTENT_BLOCKED when the description is blocked by content policy
409error responseDISCOVERY_ALREADY_APPLIED when the guild has an approved application, or a pending one and isn't verified or partnered

The rate limit is 5 requests per minute, on the discovery:apply::guild_id bucket, which it shares with editing and withdrawing.

PATCH/v1/guilds/{guild_id}/discoveryBot

Updates a pending or approved application without changing its status and returns the discovery application object. You need MANAGE_GUILD.

FieldTypeDescription
description?stringThe listing description (10-300 characters)
category_type?integerThe discovery category
primary_language?stringThe primary language
custom_tags?array[string]The full list of custom tags (at most 10)
StatusBodyCondition
200discovery application objectThe application was updated
403error responseCONTENT_BLOCKED when the description is blocked by content policy
404error responseDISCOVERY_APPLICATION_NOT_FOUND when the guild has no application
409error responseDISCOVERY_APPLICATION_ALREADY_REVIEWED when the application was rejected or removed

The rate limit is 5 requests per minute, on the discovery:apply::guild_id bucket.

DELETE/v1/guilds/{guild_id}/discoveryBot

Deletes the application with its review history and returns 204. You need MANAGE_GUILD. Withdrawing an approved listing removes the guild from search and sends Guild Update.

StatusBodyCondition
204emptyThe application was deleted
404error responseDISCOVERY_APPLICATION_NOT_FOUND when the guild has no application

The rate limit is 5 requests per minute, on the discovery:apply::guild_id bucket.

GET/v1/guilds/{guild_id}/discoveryBot

Returns the discovery status object of a guild, including one that has never applied. You need MANAGE_GUILD.

StatusBodyCondition
200discovery status objectThe status was returned

The rate limit is 30 requests per 10 seconds, on the discovery:status::guild_id bucket.