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.
Partial user object
Section titled “Partial user object”The public account object inside messages, relationships, guild members and applications.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id | snowflake | The ID of the account |
| username | string | The username (1-32 ASCII letters, digits or underscores) |
| discriminator | string | The discriminator, four digits with leading zeroes |
| global_name | ?string | The display name, or null |
| avatar1 | ?string | The avatar hash, or null |
| avatar_color | ?integer | The 24-bit RGB color taken from the avatar, or null |
| bot? | boolean | Whether the account is a bot, omitted when false |
| system? | boolean | Whether the account is a Fluxer system account, omitted when false |
| flags | integer | Public user flags |
| mention_flags? | integer | Reply mention preference, omitted when there is none |
1 An animated avatar hash starts with a_
Example
Section titled “Example”{ "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.
Public user flags
Section titled “Public user flags”These are the values in the flags field, and STAFF is left out while the account hides its staff flag.
| Value | Name | Description |
|---|---|---|
| 1 << 0 | STAFF | Account is a staff member |
| 1 << 2 | PARTNER | Account is a partner |
| 1 << 3 | BUG_HUNTER | Account is a bug hunter |
| 1 << 4 | FRIENDLY_BOT | Bot accepts friend requests |
| 1 << 5 | FRIENDLY_BOT_MANUAL_APPROVAL | Bot approves friend requests by hand |
| 1 << 6 | SPAMMER | Account is flagged as a spammer |
| 1 << 7 | PROFILE_HIDDEN | Profile details are hidden from other users |
Reply mention preferences
Section titled “Reply mention preferences”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.
| Value | Name | Description |
|---|---|---|
| 0 | NO_PREFERENCE | The sender chooses, with no warning |
| 1 | PREFER_MENTION | Replies mention the account, and the sender is warned when they turn the mention off |
| 2 | PREFER_NO_MENTION | Replies don't mention the account, and the sender is warned when they turn the mention on |
User object
Section titled “User object”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.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| is_staff1 | boolean | Whether the account has the staff flag, even when it is hidden from flags |
| acls1 | array[string] | The Admin API access entries, empty for most accounts |
| traits1 | array[string] | The account traits, sorted |
| email2 | ?string | The email address, or null |
| email_bounced?1 | boolean | Whether mail to the email address bounced |
| has_verified_phone | boolean | Deprecated. Always false |
| bio | ?string | The profile biography, or null |
| pronouns | ?string | The profile pronouns, or null |
| accent_color | ?integer | The profile accent color as 24-bit RGB, or null |
| timezone?1 | ?string | The IANA timezone, or null |
| timezone_privacy_flags?1 | integer | Profile field privacy flags for the timezone |
| banner | ?string | The profile banner hash, or null |
| banner_color | ?integer | The 24-bit RGB color taken from the banner, or null |
| mfa_enabled1 | boolean | Whether any authenticator is set up |
| authenticator_types?1 | array[integer] | Authenticator types set up for the account |
| verified2 | boolean | Whether the email address is confirmed |
| account_limited?1 | boolean | Whether the account is limited |
| premium_type1 | ?integer | Premium type, 0 while premium is not active |
| premium_since1 | ?ISO8601 timestamp | When premium started, or null while premium is not active |
| premium_until1 | ?ISO8601 timestamp | When the current premium period ends, or null |
| premium_will_cancel1 | boolean | Whether the premium subscription cancels at the end of the period |
| premium_billing_cycle1 | ?string | The premium billing cycle, or null |
| premium_lifetime_sequence1 | ?integer | The lifetime premium sequence number, or null |
| premium_grace_ends_at1 | ?ISO8601 timestamp | When premium access ends after premium_until passes, or null |
| premium_discriminator1 4 | boolean | Whether the discriminator was picked with premium |
| hidden_profile_badges1 | array[string] | The badge keys hidden from other people, sorted |
| premium_badge_hidden1 | boolean | Deprecated. Whether the premium badge the account holds is in the hidden list |
| premium_badge_masked1 | boolean | Whether a lifetime badge shows as a subscription badge |
| premium_badge_timestamp_hidden1 | boolean | Whether the premium start date is hidden from the profile |
| premium_badge_sequence_hidden1 | boolean | Deprecated. Whether the Visionary ID is in the hidden list |
| premium_purchase_disabled1 | boolean | Whether buying premium is turned off for the account |
| premium_enabled_override1 | boolean | Whether an admin override grants premium |
| premium_perks_disabled1 | boolean | Whether premium is suspended for the account |
| password_last_changed_at1 | ?ISO8601 timestamp | When the password last changed, or null |
| last_voice_activity_sharing_change_at1 | ?ISO8601 timestamp | When voice activity sharing last changed for all friends (24-hour cooldown), or null |
| required_actions1 | array[string] | Deprecated. Always empty |
| nsfw_allowed1 | boolean | Whether the account can see age-restricted content |
| has_dismissed_premium_onboarding1 | boolean | Whether premium onboarding was dismissed, false while premium is not active |
| has_ever_purchased1 | boolean | Whether the account has bought anything |
| has_unread_gift_inventory1 | boolean | Whether the gift inventory has unread items |
| unread_gift_inventory_count1 | integer | The number of unread gift inventory items |
| pending_bulk_message_deletion1 | ?pending bulk message deletion object | The scheduled deletion of all the account's messages, or null |
| age_verified_adult?1 | boolean | Whether adult age verification is done, omitted when false |
| terms_agreed_at1 | ?ISO8601 timestamp | When the account last accepted the terms, or null |
| privacy_agreed_at1 | ?ISO8601 timestamp | When the account was last shown the current privacy policy, or null |
| claimed?1 | boolean | Whether the account can sign in on another device with an email, a password or a passkey |
| account_tier?1 | string | The account tier, unclaimed, unverified or verified |
| verification_need?1 | ?string | add_email, confirm_email or password until the account is verified, then null |
| has_password?1 | boolean | Whether the account has a password |
| date_of_birth_required?1 3 | boolean | Whether the account has to set its date of birth first |
| profile_restricted?1 | boolean | Whether 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
Pending bulk message deletion object
Section titled “Pending bulk message deletion object”A deletion you scheduled through Request bulk message deletion that hasn't run yet.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| scheduled_at | ISO8601 timestamp | When the deletion runs |
| channel_count | integer | The number of channels with messages to delete, counted when it was scheduled |
| message_count | integer | The number of messages to delete, counted when it was scheduled |
Authenticator types
Section titled “Authenticator types”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.
| Value | Name | Description |
|---|---|---|
| 0 | TOTP | Time-based one-time password authenticator |
| 2 | WEBAUTHN | WebAuthn authenticator |
Premium types
Section titled “Premium types”| Value | Name | Description |
|---|---|---|
| 0 | NONE | No premium |
| 1 | SUBSCRIPTION | Premium subscription |
| 2 | LIFETIME | Lifetime premium |
Account limitation
Section titled “Account limitation”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.
- Create message and Modify message, except in personal notes
- Start thread from message and Start thread
- Crosspost message
- Add own reaction
- Create webhook
- Accept invite and Join discovery guild, unless the account is already a member
- Create guild
- Creating a group DM with Create private channel, and Add group direct message recipient
- Changing a profile field with Modify current user or Modify current guild member
- Setting a custom status with Modify current user settings or a presence update
- Initiate connection, Verify and create connection and Start Bluesky authorization
- Upload entrance sound and Set entrance sound selection
Account tiers
Section titled “Account tiers”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.
| Action | Operations |
|---|---|
message | Create, modify or crosspost a message, or start a thread |
typing | Trigger the typing indicator |
reaction | Add a reaction |
direct_message | Send a DM |
direct_message_open | Open a DM |
group_dm | Create or join a group DM |
friend_request | Send a friend request |
friend_accept | Accept a friend request |
invite_create | Create an invite |
guild_join | Accept an invite or join a discovery guild |
guild_create | Create a guild |
voice | Join a voice channel |
call | Start or ring a call in a DM |
group_call | Start or join a call in a group DM |
thread_join | Join a thread |
channel_follow | Follow an announcement channel |
ownership_transfer | Receive guild ownership |
application_create | Create an application |
gift_redeem | Redeem a gift, for unclaimed accounts only |
profile_customize | Change a profile field |
report | Submit a report |
mfa | Turn on two-factor authentication or regenerate backup codes |
guild_verification | Talk 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.
Profile field privacy flags
Section titled “Profile field privacy flags”These are the values in timezone_privacy_flags, and a field with flags 0 is hidden from everyone, including the owner.
| Value | Name | Description |
|---|---|---|
| 1 << 0 | EVERYONE | Anyone who can see the full profile can see the field |
| 1 << 1 | FRIENDS | Friends can see the field |
| 1 << 2 | MUTUAL_GUILDS | Members of a mutual guild can see the field |
User settings object
Section titled “User settings object”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.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| status | string | Presence status |
| status_resets_at | ?ISO8601 timestamp | When the status resets, or null |
| status_resets_to | ?string | The presence status to reset to, or null |
| theme | string | Theme value |
| locale | string | The interface locale |
| restricted_guilds | array[snowflake] | The guilds where DMs from members are restricted |
| bot_restricted_guilds | array[snowflake] | The guilds where DMs from bots are restricted |
| default_guilds_restricted | boolean | Whether newly joined guilds restrict DMs from members |
| bot_default_guilds_restricted | boolean | Whether newly joined guilds restrict DMs from bots |
| inline_attachment_media | boolean | Whether attachment media shows inline |
| inline_embed_media | boolean | Whether embed media shows inline |
| gif_auto_play | boolean | Whether GIFs play automatically |
| render_embeds | boolean | Whether embeds show |
| render_reactions | boolean | Whether reactions show |
| animate_emoji | boolean | Whether custom emoji animate |
| animate_stickers | integer | Sticker animation setting |
| render_spoilers | integer | Spoiler rendering setting |
| message_display_compact | boolean | Whether messages use compact display |
| friend_source_flags | integer | Friend source flags |
| incoming_call_flags | integer | Incoming call flags |
| group_dm_add_permission_flags | integer | Group DM add permission flags |
| guild_folders | array[guild folder object] | The guild sidebar layout |
| custom_status | ?custom status object | The custom status, or null |
| afk_timeout | integer | Idle seconds before the account shows as away |
| time_format | integer | Time format setting |
| developer_mode | boolean | Whether developer mode is on |
| trusted_domains | array[string] | The trusted link domains, or * alone to trust all |
| default_hide_muted_channels | boolean | Whether newly joined guilds hide muted channels |
| sensitive_content_friend_dm_filter | integer | Sensitive media filter for DMs from friends |
| sensitive_content_non_friend_dm_filter | integer | Sensitive media filter for DMs from others |
| sensitive_content_guild_filter | integer | Guild sensitive media filter |
| suppress_unprivileged_self_mentions1 | boolean | Whether direct and reply mentions from unprivileged users are suppressed |
| suppress_unprivileged_self_mentions_bypass_user_ids1 | array[snowflake] | The users exempt from mention suppression |
| staff_dm_access_user_ids1 | array[snowflake] | The users granted staff DM access |
| synced_preferences | string | Base64 synced preferences for clients (512 KiB decoded), empty if never synced |
| profile_privacy | integer | Profile privacy level |
| default_share_voice_activity | boolean | Whether new friends start with voice activity sharing on, set through Modify voice activity sharing |
| privacy_setup_version | integer | The latest privacy setup version the account reviewed, or 0 |
| privacy_setup_completed_at | ?ISO8601 timestamp | When 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
Custom status object
Section titled “Custom status object”The text and emoji set as the account's status.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| text | ?string | The status text (1-128 characters), or null |
| expires_at? | ISO8601 timestamp | When the status expires, omitted when it doesn't |
| emoji_id? | snowflake | The ID of the custom emoji, omitted for none |
| emoji_name | ?string | The custom emoji name, a Unicode emoji, or null |
| emoji_animated | boolean | Whether the custom emoji is animated |
Example
Section titled “Example”{ "text": "shipping", "expires_at": "2026-03-04T18:00:00.000Z", "emoji_id": "1501314428688998182", "emoji_name": "party_parrot", "emoji_animated": true}Guild folder object
Section titled “Guild folder object”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.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id | ?integer | The ID of the folder, -1 for the uncategorized folder |
| name | ?string | The folder name, or null |
| color | ?integer | The folder color as 24-bit RGB, or null |
| flags | integer | Guild folder flags |
| icon | string | Guild folder icon |
| guild_ids | array[snowflake] | The guild IDs in sidebar order. A guild can appear in only one folder |
Example
Section titled “Example”{ "id": -1, "name": null, "color": null, "flags": 0, "icon": "folder", "guild_ids": ["1501314428688998182", "1501314428688998183"]}Guild folder flags
Section titled “Guild folder flags”| Value | Name | Description |
|---|---|---|
| 1 << 0 | SHOW_ICON_WHEN_COLLAPSED | Show the icon instead of guild previews while collapsed |
Guild folder icons
Section titled “Guild folder icons”| Value | Description |
|---|---|
| folder | Folder icon, the default |
| star | Star icon |
| heart | Heart icon |
| bookmark | Bookmark icon |
| game_controller | Game controller icon |
| shield | Shield icon |
| music_note | Music note icon |
Sticker animation settings
Section titled “Sticker animation settings”| Value | Name | Description |
|---|---|---|
| 0 | ALWAYS_ANIMATE | Always animate stickers |
| 1 | ANIMATE_ON_INTERACTION | Animate stickers on interaction |
| 2 | NEVER_ANIMATE | Never animate stickers |
Spoiler rendering settings
Section titled “Spoiler rendering settings”| Value | Name | Description |
|---|---|---|
| 0 | ALWAYS | Always show spoilers |
| 1 | ON_CLICK | Show spoilers on click |
| 2 | IF_MODERATOR | Show spoilers to moderators |
Time format settings
Section titled “Time format settings”| Value | Name | Description |
|---|---|---|
| 0 | AUTO | Use the locale's time format |
| 1 | TWELVE_HOUR | Use a 12-hour clock |
| 2 | TWENTY_FOUR_HOUR | Use a 24-hour clock |
Sensitive media filters
Section titled “Sensitive media filters”| Value | Name | Description |
|---|---|---|
| 0 | SHOW | Show sensitive media |
| 1 | BLUR | Blur sensitive media until revealed |
| 2 | BLOCK | Hide sensitive media |
Guild sensitive media filters
Section titled “Guild sensitive media filters”| Value | Name | Description |
|---|---|---|
| 0 | SHOW | Show sensitive media |
| 1 | BLUR | Blur sensitive media until revealed |
Profile privacy levels
Section titled “Profile privacy levels”Profile privacy never applies to bots or to your own profile.
| Value | Name | Description |
|---|---|---|
| 0 | ALL_GUILDS | Friends and members of any mutual guild can see the full profile |
| 1 | SMALL_GUILDS_ONLY | Friends and members of a mutual guild with at most 200 members can see the full profile |
| 2 | FRIENDS_ONLY | Only friends can see the full profile |
Friend source flags
Section titled “Friend source flags”| Value | Name | Description |
|---|---|---|
| 1 << 0 | MUTUAL_FRIENDS | Accept requests from users with mutual friends |
| 1 << 1 | MUTUAL_GUILDS | Accept requests from users in mutual guilds |
| 1 << 2 | NO_RELATION | Accept requests from anyone |
Incoming call flags
Section titled “Incoming call flags”When both FRIENDS_ONLY and NOBODY are set, FRIENDS_ONLY applies.
| Value | Name | Description |
|---|---|---|
| 1 << 0 | FRIENDS_OF_FRIENDS | Allow calls from friends of friends |
| 1 << 1 | GUILD_MEMBERS | Allow calls from guild members |
| 1 << 2 | EVERYONE | Allow calls from everyone |
| 1 << 3 | FRIENDS_ONLY | Allow calls only from friends |
| 1 << 4 | NOBODY | Reject all incoming calls |
| 1 << 5 | SILENT_EVERYONE | Receive allowed calls silently |
Group DM add permission flags
Section titled “Group DM add permission flags”When FRIENDS_ONLY is set it applies over NOBODY, and NOBODY applies over EVERYONE.
| Value | Name | Description |
|---|---|---|
| 1 << 0 | FRIENDS_OF_FRIENDS | Friends of friends can add the user |
| 1 << 1 | GUILD_MEMBERS | Guild members can add the user |
| 1 << 2 | EVERYONE | Everyone can add the user |
| 1 << 3 | FRIENDS_ONLY | Only friends can add the user |
| 1 << 4 | NOBODY | Nobody can add the user |
User profile object
Section titled “User profile object”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.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| bio | ?string | The biography, or null |
| pronouns | ?string | The pronouns, or null |
| banner | ?string | The profile banner hash, or null |
| banner_color | ?integer | The 24-bit RGB color taken from the banner, or null |
| accent_color | ?integer | The accent color as 24-bit RGB, or null |
Guild member profile object
Section titled “Guild member profile object”The target's profile in the guild from the guild_id query parameter.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| bio | ?string | The guild biography, or null |
| pronouns | ?string | The guild pronouns, or null |
| banner | ?string | The guild banner hash, or null |
| accent_color | ?integer | The guild accent color as 24-bit RGB, or null |
Mutual guild object
Section titled “Mutual guild object”A guild that both you and the target are in.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id | snowflake | The ID of the guild |
| nick | ?string | The target's nickname in the guild, or null |
Full user profile object
Section titled “Full user profile object”Returned by Get user profile. When profile privacy restricts you, profile_limited is true and bio and pronouns are null in both profile objects.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| user | partial user object | The target account |
| user_profile | user profile object | The account-wide profile |
| guild_member?1 | guild member object | The target's membership in the requested guild |
| guild_member_profile?1 | guild member profile object | The target's profile in the requested guild |
| premium_type?2 | integer | The target's premium type |
| premium_since?2 | ISO8601 timestamp | When the target's premium started |
| premium_lifetime_sequence?2 | integer | The target's lifetime premium sequence number |
| profile_badges | array[profile badge object] | The badges to show, in order |
| hidden_profile_badge_count?5 | integer | How many badges you hold that are hidden |
| mutual_friends?3 | array[partial user object] | Your mutual friends with the target |
| mutual_guilds?3 | array[mutual guild object] | The guilds you and the target share |
| connected_accounts4 | array[connection object] | The target's verified connections you can see |
| timezone_offset4 | ?integer | The target's timezone offset from UTC in minutes, or null |
| profile_limited? | boolean | Present 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
Profile badge object
Section titled “Profile badge object”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.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| key | string | The badge's identity, equal to kind for built-in badges and custom:{id} for a custom badge. Use it as the list key |
| kind1 | string | The badge type |
| label | string | The badge description in your locale, for the tooltip and alt text. A custom badge uses its name |
| asset2 | ?string | The hex hash of the badge image, or null for a text badge, a custom badge or a replaced built-in image |
| asset_url3 | ?string | The image URL of a custom badge or a built-in badge with a replaced image, or null for other badges |
| aspect_ratio | ?number | Image width divided by height, or null for a square badge |
| caption | ?string | Short text the badge stands for, shown in place of the image when asset is null |
| href | ?string | The URL a click opens, or null |
| small_asset? | string | The image hash to use at 20 pixels and smaller |
| count? | ?integer | A number shown with the badge, or null |
| accessible_label? | ?string | The label for screen readers, used in place of label |
| details?4 | ?badge details object | A 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
Badge details object
Section titled “Badge details object”| Field | Type | Description |
|---|---|---|
| title | string | The first line under the badge art |
| lines | array[string] | The other lines, in order |
Visibility
Section titled “Visibility”Your own profile follows the same rules and shows what other people see. label uses your stored locale, then Accept-Language, then en-US.
| Condition | Effect |
|---|---|
| The target is hidden or under enforcement | The list is empty |
| The profile is restricted for you | Only staff and custom badges remain |
| The target hides a badge | That badge is dropped |
| The target hides the premium start date | The premium label has no date |
Hiding badges
Section titled “Hiding badges”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}.
| Key | Badge |
|---|---|
staff | Staff |
partner | Partner |
bug_hunter | Bug Hunter |
operator_pass | Operator Pass |
visionary | Visionary |
visionary_number | Visionary ID, which also needs visionary shown |
plutonium | Plutonium subscription |
premium | Premium 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 user
Section titled “Get user”GET/v1/users/{user_id}Returns a partial user object for any account, with no relationship needed. A deleted account comes back in its deleted form.
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | partial user object | The user was returned |
| 404 | error response | UNKNOWN_USER when the ID was never used |
The rate limit is 100 requests per 10 seconds, on the user:read::user_id bucket.
Get user profile
Section titled “Get user profile”GET/v1/users/{target_id}/profileReturns 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.
Query parameters
Section titled “Query parameters”| Field | Type | Description |
|---|---|---|
| guild_id? | snowflake | The guild to include member and guild profile objects for |
| with_mutual_friends? | boolean | Whether to include mutual friends (default false) |
| with_mutual_guilds? | boolean | Whether to include mutual guilds (default false) |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | full user profile object | The profile was returned |
| 403 | error response | MISSING_ACCESS when you share no relationship with the target |
| 404 | error response | UNKNOWN_USER when the target doesn't exist |
The rate limit is 100 requests per 10 seconds, on the user:profile::target_id bucket.
Check user tag
Section titled “Check user tag”GET/v1/users/check-tagReturns 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.
Query parameters
Section titled “Query parameters”| Field | Type | Description |
|---|---|---|
| username | string | The username (1-32 ASCII letters, digits or underscores) |
| discriminator | string | The discriminator (1-4 digits) |
Response body
Section titled “Response body”| Field | Type | Description |
|---|---|---|
| taken | boolean | Whether the tag is taken |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | response body | The result was returned |
| 400 | error response | INVALID_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.