Skip to content
Fluxer API

Users

A user is a Fluxer account, which other accounts see as a partial user object and its owner sees as a user object. You change your own account through Current user.

The routes on this page accept a user session token or a bot token, and an OAuth2 bearer token gets 403 ACCESS_DENIED.

The public account object inside messages, relationships, guild members and applications.

FieldTypeDescription
idsnowflakeThe ID of the account
usernamestringThe username (1-32 ASCII letters, digits or underscores)
discriminatorstringThe discriminator, four digits with leading zeroes
global_name?stringThe display name, or null
avatar1?stringThe avatar hash, or null
avatar_color?integerThe 24-bit RGB color taken from the avatar, or null
bot?booleanWhether the account is a bot, omitted when false
system?booleanWhether the account is a Fluxer system account, omitted when false
flagsintegerPublic user flags
mention_flags?integerReply mention preference, omitted when there is none

1 An animated avatar hash starts with a_

{
"id": "1501314428688998182",
"username": "aria",
"discriminator": "0042",
"global_name": "Aria",
"avatar": "a_2f1c9d7be4a350c8",
"avatar_color": 5793266,
"flags": 8
}

While an account's profile_restricted is true, other accounts get null global_name and avatar for it. A deleted account has the username DeletedUser, the discriminator 0000, the global name Deleted User, flags of 0 and a null avatar and avatar_color.

On an instance whose tag_style feature is none, usernames are unique on their own and every account that isn't a bot has the discriminator 0000.

These are the values in the flags field, and STAFF is left out while the account hides its staff flag.

ValueNameDescription
1 << 0STAFFAccount is a staff member
1 << 2PARTNERAccount is a partner
1 << 3BUG_HUNTERAccount is a bug hunter
1 << 4FRIENDLY_BOTBot accepts friend requests
1 << 5FRIENDLY_BOT_MANUAL_APPROVALBot approves friend requests by hand
1 << 6SPAMMERAccount is flagged as a spammer
1 << 7PROFILE_HIDDENProfile details are hidden from other users

The mention_flags value says whether replies to the account's messages mention it by default. A guild member has the same values in its own mention_flags, where NO_PREFERENCE falls back to the account value.

ValueNameDescription
0NO_PREFERENCEThe sender chooses, with no warning
1PREFER_MENTIONReplies mention the account, and the sender is warned when they turn the mention off
2PREFER_NO_MENTIONReplies don't mention the account, and the sender is warned when they turn the mention on

The current account as its owner sees it, returned by Get current user and by every route that changes the account. It extends the partial user object.

FieldTypeDescription
is_staff1booleanWhether the account has the staff flag, even when it is hidden from flags
acls1array[string]The Admin API access entries, empty for most accounts
traits1array[string]The account traits, sorted
email2?stringThe email address, or null
email_bounced?1booleanWhether mail to the email address bounced
has_verified_phonebooleanDeprecated. Always false
bio?stringThe profile biography, or null
pronouns?stringThe profile pronouns, or null
accent_color?integerThe profile accent color as 24-bit RGB, or null
timezone?1?stringThe IANA timezone, or null
timezone_privacy_flags?1integerProfile field privacy flags for the timezone
banner?stringThe profile banner hash, or null
banner_color?integerThe 24-bit RGB color taken from the banner, or null
mfa_enabled1booleanWhether any authenticator is set up
authenticator_types?1array[integer]Authenticator types set up for the account
verified2booleanWhether the email address is confirmed
account_limited?1booleanWhether the account is limited
premium_type1?integerPremium type, 0 while premium is not active
premium_since1?ISO8601 timestampWhen premium started, or null while premium is not active
premium_until1?ISO8601 timestampWhen the current premium period ends, or null
premium_will_cancel1booleanWhether the premium subscription cancels at the end of the period
premium_billing_cycle1?stringThe premium billing cycle, or null
premium_lifetime_sequence1?integerThe lifetime premium sequence number, or null
premium_grace_ends_at1?ISO8601 timestampWhen premium access ends after premium_until passes, or null
premium_discriminator1 4booleanWhether the discriminator was picked with premium
hidden_profile_badges1array[string]The badge keys hidden from other people, sorted
premium_badge_hidden1booleanDeprecated. Whether the premium badge the account holds is in the hidden list
premium_badge_masked1booleanWhether a lifetime badge shows as a subscription badge
premium_badge_timestamp_hidden1booleanWhether the premium start date is hidden from the profile
premium_badge_sequence_hidden1booleanDeprecated. Whether the Visionary ID is in the hidden list
premium_purchase_disabled1booleanWhether buying premium is turned off for the account
premium_enabled_override1booleanWhether an admin override grants premium
premium_perks_disabled1booleanWhether premium is suspended for the account
password_last_changed_at1?ISO8601 timestampWhen the password last changed, or null
last_voice_activity_sharing_change_at1?ISO8601 timestampWhen voice activity sharing last changed for all friends (24-hour cooldown), or null
required_actions1array[string]Deprecated. Always empty
nsfw_allowed1booleanWhether the account can see age-restricted content
has_dismissed_premium_onboarding1booleanWhether premium onboarding was dismissed, false while premium is not active
has_ever_purchased1booleanWhether the account has bought anything
has_unread_gift_inventory1booleanWhether the gift inventory has unread items
unread_gift_inventory_count1integerThe number of unread gift inventory items
pending_bulk_message_deletion1?pending bulk message deletion objectThe scheduled deletion of all the account's messages, or null
age_verified_adult?1booleanWhether adult age verification is done, omitted when false
terms_agreed_at1?ISO8601 timestampWhen the account last accepted the terms, or null
privacy_agreed_at1?ISO8601 timestampWhen the account was last shown the current privacy policy, or null
claimed?1booleanWhether the account can sign in on another device with an email, a password or a passkey
account_tier?1stringThe account tier, unclaimed, unverified or verified
verification_need?1?stringadd_email, confirm_email or password until the account is verified, then null
has_password?1booleanWhether the account has a password
date_of_birth_required?1 3booleanWhether the account has to set its date of birth first
profile_restricted?1booleanWhether other accounts see only the username and discriminator

1 With an OAuth2 bearer token on Get current user, arrays are empty, optional fields are left out, booleans are false, nullable fields are null and unread_gift_inventory_count is 0

2 With an OAuth2 bearer token that lacks the email scope, email is null and verified is false

3 When the accounts configuration enforces it, most routes return 403 DATE_OF_BIRTH_REQUIRED until the date is set

4 After premium ends, a random tag-style instance gives the account a new discriminator at its next Gateway session

A deletion you scheduled through Request bulk message deletion that hasn't run yet.

FieldTypeDescription
scheduled_atISO8601 timestampWhen the deletion runs
channel_countintegerThe number of channels with messages to delete, counted when it was scheduled
message_countintegerThe number of messages to delete, counted when it was scheduled

These are the values in authenticator_types. WEBAUTHN appears only after Set WebAuthn two-factor authentication turns on passkeys as a second factor, and registering a passkey alone doesn't add it.

ValueNameDescription
0TOTPTime-based one-time password authenticator
2WEBAUTHNWebAuthn authenticator
ValueNameDescription
0NONENo premium
1SUBSCRIPTIONPremium subscription
2LIFETIMELifetime premium

An account is limited while account_limited is true. It can still read, join voice, change its own settings and manage its sessions, but these routes return 403 ACCOUNT_LIMITED.

An account is unclaimed while it has no email address, unverified while its email address isn't confirmed and verified otherwise. When the account_identity feature is username, an account with a password or a passkey is verified and one without is unclaimed. On an instance that sends no email, or whose verification_basis is local_credential, an account with an email address follows the same rule. Bots, system accounts and single sign-on accounts are always verified.

interaction_tier in the accounts configuration sets how strict the tiers are. When it is enforced, an account that isn't verified can read, edit its own profile and settings, write personal notes and join communities, but can't do most things that involve other people.

A denial that has its own code returns it, such as UNCLAIMED_ACCOUNT_CANNOT_SEND_MESSAGES or EMAIL_VERIFICATION_REQUIRED. Every other denial returns 403 ACCOUNT_VERIFICATION_REQUIRED, and so does every denial for an account whose verification_need is password. That error response has action, tier and need, and action is one of the values below.

ActionOperations
messageCreate, modify or crosspost a message, or start a thread
typingTrigger the typing indicator
reactionAdd a reaction
direct_messageSend a DM
direct_message_openOpen a DM
group_dmCreate or join a group DM
friend_requestSend a friend request
friend_acceptAccept a friend request
invite_createCreate an invite
guild_joinAccept an invite or join a discovery guild
guild_createCreate a guild
voiceJoin a voice channel
callStart or ring a call in a DM
group_callStart or join a call in a group DM
thread_joinJoin a thread
channel_followFollow an announcement channel
ownership_transferReceive guild ownership
application_createCreate an application
gift_redeemRedeem a gift, for unclaimed accounts only
profile_customizeChange a profile field
reportSubmit a report
mfaTurn on two-factor authentication or regenerate backup codes
guild_verificationTalk in a guild that requires a verified email

guild_join applies only to accounts assigned guild visits, and never while the instance sets guild_join_gate to off. With visits_capable, it applies only to clients that send the X-Fluxer-Capabilities: guild_visits header.

These are the values in timezone_privacy_flags, and a field with flags 0 is hidden from everyone, including the owner.

ValueNameDescription
1 << 0EVERYONEAnyone who can see the full profile can see the field
1 << 1FRIENDSFriends can see the field
1 << 2MUTUAL_GUILDSMembers of a mutual guild can see the field

The account-wide settings, returned by Get current user settings and Modify current user settings and sent in the Ready and User Settings Update events. Every field is always present.

FieldTypeDescription
statusstringPresence status
status_resets_at?ISO8601 timestampWhen the status resets, or null
status_resets_to?stringThe presence status to reset to, or null
themestringTheme value
localestringThe interface locale
restricted_guildsarray[snowflake]The guilds where DMs from members are restricted
bot_restricted_guildsarray[snowflake]The guilds where DMs from bots are restricted
default_guilds_restrictedbooleanWhether newly joined guilds restrict DMs from members
bot_default_guilds_restrictedbooleanWhether newly joined guilds restrict DMs from bots
inline_attachment_mediabooleanWhether attachment media shows inline
inline_embed_mediabooleanWhether embed media shows inline
gif_auto_playbooleanWhether GIFs play automatically
render_embedsbooleanWhether embeds show
render_reactionsbooleanWhether reactions show
animate_emojibooleanWhether custom emoji animate
animate_stickersintegerSticker animation setting
render_spoilersintegerSpoiler rendering setting
message_display_compactbooleanWhether messages use compact display
friend_source_flagsintegerFriend source flags
incoming_call_flagsintegerIncoming call flags
group_dm_add_permission_flagsintegerGroup DM add permission flags
guild_foldersarray[guild folder object]The guild sidebar layout
custom_status?custom status objectThe custom status, or null
afk_timeoutintegerIdle seconds before the account shows as away
time_formatintegerTime format setting
developer_modebooleanWhether developer mode is on
trusted_domainsarray[string]The trusted link domains, or * alone to trust all
default_hide_muted_channelsbooleanWhether newly joined guilds hide muted channels
sensitive_content_friend_dm_filterintegerSensitive media filter for DMs from friends
sensitive_content_non_friend_dm_filterintegerSensitive media filter for DMs from others
sensitive_content_guild_filterintegerGuild sensitive media filter
suppress_unprivileged_self_mentions1booleanWhether direct and reply mentions from unprivileged users are suppressed
suppress_unprivileged_self_mentions_bypass_user_ids1array[snowflake]The users exempt from mention suppression
staff_dm_access_user_ids1array[snowflake]The users granted staff DM access
synced_preferencesstringBase64 synced preferences for clients (512 KiB decoded), empty if never synced
profile_privacyintegerProfile privacy level
default_share_voice_activitybooleanWhether new friends start with voice activity sharing on, set through Modify voice activity sharing
privacy_setup_versionintegerThe latest privacy setup version the account reviewed, or 0
privacy_setup_completed_at?ISO8601 timestampWhen the account last finished the privacy setup, or null

1 Only staff accounts can set it. A settings update from any other account sets it to false or empty

The text and emoji set as the account's status.

FieldTypeDescription
text?stringThe status text (1-128 characters), or null
expires_at?ISO8601 timestampWhen the status expires, omitted when it doesn't
emoji_id?snowflakeThe ID of the custom emoji, omitted for none
emoji_name?stringThe custom emoji name, a Unicode emoji, or null
emoji_animatedbooleanWhether the custom emoji is animated
{
"text": "shipping",
"expires_at": "2026-03-04T18:00:00.000Z",
"emoji_id": "1501314428688998182",
"emoji_name": "party_parrot",
"emoji_animated": true
}

A folder in the guild sidebar. When you join a guild, Fluxer adds it to the start of the uncategorized folder, and when you leave one, Fluxer removes it and deletes any other folder it leaves empty.

FieldTypeDescription
id?integerThe ID of the folder, -1 for the uncategorized folder
name?stringThe folder name, or null
color?integerThe folder color as 24-bit RGB, or null
flagsintegerGuild folder flags
iconstringGuild folder icon
guild_idsarray[snowflake]The guild IDs in sidebar order. A guild can appear in only one folder
{
"id": -1,
"name": null,
"color": null,
"flags": 0,
"icon": "folder",
"guild_ids": ["1501314428688998182", "1501314428688998183"]
}
ValueNameDescription
1 << 0SHOW_ICON_WHEN_COLLAPSEDShow the icon instead of guild previews while collapsed
ValueDescription
folderFolder icon, the default
starStar icon
heartHeart icon
bookmarkBookmark icon
game_controllerGame controller icon
shieldShield icon
music_noteMusic note icon
ValueNameDescription
0ALWAYS_ANIMATEAlways animate stickers
1ANIMATE_ON_INTERACTIONAnimate stickers on interaction
2NEVER_ANIMATENever animate stickers
ValueNameDescription
0ALWAYSAlways show spoilers
1ON_CLICKShow spoilers on click
2IF_MODERATORShow spoilers to moderators
ValueNameDescription
0AUTOUse the locale's time format
1TWELVE_HOURUse a 12-hour clock
2TWENTY_FOUR_HOURUse a 24-hour clock
ValueNameDescription
0SHOWShow sensitive media
1BLURBlur sensitive media until revealed
2BLOCKHide sensitive media
ValueNameDescription
0SHOWShow sensitive media
1BLURBlur sensitive media until revealed

Profile privacy never applies to bots or to your own profile.

ValueNameDescription
0ALL_GUILDSFriends and members of any mutual guild can see the full profile
1SMALL_GUILDS_ONLYFriends and members of a mutual guild with at most 200 members can see the full profile
2FRIENDS_ONLYOnly friends can see the full profile
ValueNameDescription
1 << 0MUTUAL_FRIENDSAccept requests from users with mutual friends
1 << 1MUTUAL_GUILDSAccept requests from users in mutual guilds
1 << 2NO_RELATIONAccept requests from anyone

When both FRIENDS_ONLY and NOBODY are set, FRIENDS_ONLY applies.

ValueNameDescription
1 << 0FRIENDS_OF_FRIENDSAllow calls from friends of friends
1 << 1GUILD_MEMBERSAllow calls from guild members
1 << 2EVERYONEAllow calls from everyone
1 << 3FRIENDS_ONLYAllow calls only from friends
1 << 4NOBODYReject all incoming calls
1 << 5SILENT_EVERYONEReceive allowed calls silently

When FRIENDS_ONLY is set it applies over NOBODY, and NOBODY applies over EVERYONE.

ValueNameDescription
1 << 0FRIENDS_OF_FRIENDSFriends of friends can add the user
1 << 1GUILD_MEMBERSGuild members can add the user
1 << 2EVERYONEEveryone can add the user
1 << 3FRIENDS_ONLYOnly friends can add the user
1 << 4NOBODYNobody can add the user

The account-wide profile inside a full user profile object. Every field is null when the target's profile is hidden, or when its profile_restricted is true and you aren't the target.

FieldTypeDescription
bio?stringThe biography, or null
pronouns?stringThe pronouns, or null
banner?stringThe profile banner hash, or null
banner_color?integerThe 24-bit RGB color taken from the banner, or null
accent_color?integerThe accent color as 24-bit RGB, or null

The target's profile in the guild from the guild_id query parameter.

FieldTypeDescription
bio?stringThe guild biography, or null
pronouns?stringThe guild pronouns, or null
banner?stringThe guild banner hash, or null
accent_color?integerThe guild accent color as 24-bit RGB, or null

A guild that both you and the target are in.

FieldTypeDescription
idsnowflakeThe ID of the guild
nick?stringThe target's nickname in the guild, or null

Returned by Get user profile. When profile privacy restricts you, profile_limited is true and bio and pronouns are null in both profile objects.

FieldTypeDescription
userpartial user objectThe target account
user_profileuser profile objectThe account-wide profile
guild_member?1guild member objectThe target's membership in the requested guild
guild_member_profile?1guild member profile objectThe target's profile in the requested guild
premium_type?2integerThe target's premium type
premium_since?2ISO8601 timestampWhen the target's premium started
premium_lifetime_sequence?2integerThe target's lifetime premium sequence number
profile_badgesarray[profile badge object]The badges to show, in order
hidden_profile_badge_count?5integerHow many badges you hold that are hidden
mutual_friends?3array[partial user object]Your mutual friends with the target
mutual_guilds?3array[mutual guild object]The guilds you and the target share
connected_accounts4array[connection object]The target's verified connections you can see
timezone_offset4?integerThe target's timezone offset from UTC in minutes, or null
profile_limited?booleanPresent and true when profile privacy restricts you

1 Only with guild_id when both you and the target are members of that guild

2 Left out when the profile is restricted or the target hides the badge, date or sequence. Use profile_badges to show badges

3 Only when the matching with_ query parameter is true, and never for your own profile

4 Empty or null when the profile is restricted or the target's profile field privacy flags don't include you

5 Only on your own profile

One badge on a full user profile. The API picks the badges, their order and their text, and clients show the list as it comes.

FieldTypeDescription
keystringThe badge's identity, equal to kind for built-in badges and custom:{id} for a custom badge. Use it as the list key
kind1stringThe badge type
labelstringThe badge description in your locale, for the tooltip and alt text. A custom badge uses its name
asset2?stringThe hex hash of the badge image, or null for a text badge, a custom badge or a replaced built-in image
asset_url3?stringThe image URL of a custom badge or a built-in badge with a replaced image, or null for other badges
aspect_ratio?numberImage width divided by height, or null for a square badge
caption?stringShort text the badge stands for, shown in place of the image when asset is null
href?stringThe URL a click opens, or null
small_asset?stringThe image hash to use at 20 pixels and smaller
count??integerA number shown with the badge, or null
accessible_label??stringThe label for screen readers, used in place of label
details?4?badge details objectA richer tooltip with the badge art, title and lines. Without it, label is the tooltip

1 Known values are staff, premium and custom. Render any other kind from its other fields

2 The image is at {static_cdn}/badges/{asset}.webp, with static_cdn from instance discovery, and square badges also have a .png. Hashed files never change

3 A WebP image from the media proxy. Add a size query parameter to get it at the size you draw it

4 A custom badge with a description has one, with the name as title and the description as its only line

FieldTypeDescription
titlestringThe first line under the badge art
linesarray[string]The other lines, in order

Your own profile follows the same rules and shows what other people see. label uses your stored locale, then Accept-Language, then en-US.

ConditionEffect
The target is hidden or under enforcementThe list is empty
The profile is restricted for youOnly staff and custom badges remain
The target hides a badgeThat badge is dropped
The target hides the premium start dateThe premium label has no date

Every badge an account holds can be hidden from other people. The account's hidden_profile_badges lists the keys of the hidden badges, using the same values as key, and Modify current user replaces it. A built-in badge's key is its kind, and a custom badge's key is custom:{id}.

KeyBadge
staffStaff
partnerPartner
bug_hunterBug Hunter
operator_passOperator Pass
visionaryVisionary
visionary_numberVisionary ID, which also needs visionary shown
plutoniumPlutonium subscription
premiumPremium on a self-hosted instance
custom:{id}A custom badge

A hidden badge is dropped from profile_badges. Hiding staff, partner or bug_hunter also clears that bit from the account's flags in every user object other people get. Hiding the key of the premium badge the account holds drops that badge even when a Visionary badge is masked as a subscription, and leaves the premium fields out of the full profile.

Staff in the Admin API still see every badge, with hidden ones marked.

GET/v1/users/{user_id}Bot

Returns a partial user object for any account, with no relationship needed. A deleted account comes back in its deleted form.

StatusBodyCondition
200partial user objectThe user was returned
404error responseUNKNOWN_USER when the ID was never used

The rate limit is 100 requests per 10 seconds, on the user:read::user_id bucket.

GET/v1/users/{target_id}/profileBot

Returns a full user profile object. To get the profile of another account that isn't a bot, you need a friendship, a pending friend request, a shared guild or a shared group DM with it. Profile privacy can still restrict the fields you get.

FieldTypeDescription
guild_id?snowflakeThe guild to include member and guild profile objects for
with_mutual_friends?booleanWhether to include mutual friends (default false)
with_mutual_guilds?booleanWhether to include mutual guilds (default false)
StatusBodyCondition
200full user profile objectThe profile was returned
403error responseMISSING_ACCESS when you share no relationship with the target
404error responseUNKNOWN_USER when the target doesn't exist

The rate limit is 100 requests per 10 seconds, on the user:profile::target_id bucket.

GET/v1/users/check-tagBot

Returns whether another account already uses a username and discriminator. Usernames compare without case and discriminators compare as numbers, with 7 matching 0007, and your own tag returns false. When the tag_style feature is none, the discriminator is ignored unless you are a bot.

FieldTypeDescription
usernamestringThe username (1-32 ASCII letters, digits or underscores)
discriminatorstringThe discriminator (1-4 digits)
FieldTypeDescription
takenbooleanWhether the tag is taken
StatusBodyCondition
200response bodyThe result was returned
400error responseINVALID_FORM_BODY when username is reserved (USERNAME_RESERVED_VALUE or USERNAME_CANNOT_CONTAIN_RESERVED_TERMS)

The rate limit is 60 requests per 10 seconds, on the user:check_tag bucket.