Users

Users in Discord are generally considered the base entity. Users can spawn across the entire platform, be members of guilds, participate in text and voice chat, and much more. Users are separated by a distinction of "bot" vs "normal". Although they are similar, bot users are automated users that are attached to an application, "owned" by another user. Unlike normal users, bot users do not have a limitation on the number of guilds they can be a part of.

Usernames and Nicknames

Discord enforces the following restrictions for usernames, display names, and nicknames:

  1. Names can contain most valid unicode characters. We limit some zero-width and non-rendering characters.
  2. Usernames must be between 2 and 32 characters long.
  3. Display names and nicknames must be between 1 and 32 characters long.
  4. Webhook names must be between 1 and 80 characters long.
  5. Names are sanitized and trimmed of leading, trailing, and excessive internal whitespace.

The following restrictions are additionally enforced for usernames and display names:

  1. Usernames cannot contain the following substrings: '@', '#', ':', '```'.
  2. Usernames and display names cannot be: 'everyone', 'here', 'system message', or contain 'discord'.

The following restrictions are additionally enforced for webhook names:

  1. Webhook names cannot contain the following substrings: 'clyde'.

Migrated usernames are subject to a new set of restrictions in addition to the above:

  1. Migrated usernames can only contain lowercase alphanumeric characters, underscores (_), and periods (.). Uppercase characters, spaces, dashes (-), and other special characters are not allowed.
  2. Migrated usernames cannot have two or more consecutive periods (..).
  3. Migrated usernames are unique to each user, and no two users can share the same username.

There are other rules and restrictions not shared here for the sake of spam and abuse mitigation, but the majority of users won't encounter them. It's important to properly handle all error messages returned by Discord when editing or updating names.

Unique Usernames

Discord's username system is changing. Discriminators are being removed and new, unique usernames (@name) and display names are being introduced. Internally, this migration is referred to as "pomelo". You can read more details about how the changes to the username system affect user accounts in the general Help Center article. To learn how it impacts bots specifically, you can read the Developer Help Center article.

A user's legacy username#discriminator tag will still be usable to send friend requests, and will be available as a profile badge for migrated users.

Identifying Migrated Users

The value of a single zero (0) in the discriminator field on the user object indicates that the user has been pommeled migrated to the new username system. Note that the discriminator for migrated users will not be 4-digits like a standard discriminator (it is 0, not 0000). The value of the username field will become the migrated user's unique username.

Migrating

Users can only migrate their account to pomelo if they are in the rollout. A user is in the rollout if they have pomelo in the disclose field on the Ready Supplemental event and are in the 2023-03_pomelo user experiment. Migration is now complete and all non-migrated users have been automatically assigned a unique username.

To migrate, users should first check if the username they want is available, and then migrate their account to that username. If the username they want is not available, they can get a list of suggested usernames to choose from.

Display Names

As part of unique usernames, user accounts can define a non-unique display name. This value is a new nullable global_name field with a max length of 32 characters.

Default Avatars

For users with migrated accounts, default avatar URLs will be based on the user ID instead of the discriminator. The URL can be calculated using (user_id >> 22) % 6. For non-migrated accounts, the URL can be calculated using discriminator % 5.

User Object

User Structure
FieldTypeDescription
idsnowflakeThe ID of the user
username 6stringThe user's username, may be unique across the platform (2-32 characters)
discriminator 6stringThe user's stringified 4-digit Discord tag
global_name 6?stringThe user's display name (1-32 characters)
avatar?stringThe user's avatar hash
avatar_decoration_data?avatar decoration data objectThe user's avatar decoration
collectibles??collectibles objectThe user's equipped collectibles
display_name_styles??display name style objectThe user's display name style
primary_guild??primary guild objectThe primary guild of the user
linked_users 1 3array[linked user object]The linked users connected to the account via Family Center
bot?booleanWhether the user is a bot account
system?booleanWhether the user is an official Discord System user (part of the urgent message system)
mfa_enabledbooleanWhether the user has multi-factor authentication enabled on their account
nsfw_allowed? 1?booleanWhether the user is allowed to see NSFW content, null if not yet known
age_verification_status 1integerThe age verification status of the user
pronouns? 1 4stringThe user's pronouns (max 40 characters)
bio 1stringThe user's bio (max 190 characters)
banner?stringThe user's banner hash
accent_color?integerThe user's banner color encoded as an integer representation of a hexadecimal color code
locale? 3stringThe language option chosen by the user
verified 2booleanWhether the email on this account has been verified
email 2?stringThe user's email address
phone? 1?stringThe user's E.164-formatted phone number
premium (deprecated) 4booleanWhether the user is subscribed to Nitro
premium_typeintegerThe type of premium (Nitro) subscription on a user's account
premium_state? 4premium state objectThe user's premium state
personal_connection_id?snowflakeThe ID of the user's personal, non-employee user account
flags 1integerThe flags on a user's account
public_flagsintegerThe public flags on a user's account
purchased_flags? 1integerThe purchased flags on a user's account
premium_usage_flags? 1integerThe premium usage flags on a user's account
desktop? 1 4booleanWhether the user has used the desktop client before
mobile? 1 4booleanWhether the user has used the mobile client before
has_bounced_email? 1booleanWhether the user's email has failed to deliver and is no longer valid
authenticator_types? 3array[integer]The types of multi-factor authenticators the user has enabled
analytics_token 1 5stringThe token used for analytical tracking requests

1 Not included when fetching a user via OAuth2.

2 Not included when fetching a user via OAuth2 without the email scope.

3 Not included in the user object returned in the Ready event.

4 Only included in the user object returned in the Ready event.

5 Only included when when fetched from the Get Current User endpoint with with_analytics_token set to true.

6 See the section on Discord's new username system for more information.

Partial User Structure
FieldTypeDescription
idsnowflakeThe ID of the user
username 1stringThe user's username, may be unique across the platform (2-32 characters)
discriminator 1stringThe user's stringified 4-digit Discord tag
global_name? 1?stringThe user's display name (1-32 characters)
avatar?stringThe user's avatar hash
avatar_decoration_data??avatar decoration data objectThe user's avatar decoration
collectibles??collectibles objectThe user's equipped collectibles
display_name_styles??display name style objectThe user's display name style
primary_guild??primary guild objectThe primary guild of the user
bot?booleanWhether the user is a bot account
system?booleanWhether the user is an official Discord System user (part of the urgent message system)
banner? 2?stringThe user's banner hash
accent_color? 2?integerThe user's banner color encoded as an integer representation of a hexadecimal color code
public_flags?integerThe public flags on a user's account

1 See the section on Discord's new username system for more information.

2 Only guaranteed to be included when fetched through the Get User and Get User Profile endpoints. May be included in data received through other API endpoints.

3 Only guaranteed to be included when fetched through the Get User endpoint or the author field on the message object. May be included in data received through other API endpoints.

Primary Guild Structure
FieldTypeDescription
identity_enabled 1?booleanWhether the user is displaying their guild tag
identity_guild_id 2?snowflakeThe ID of the guild
tag 1?stringThe user's guild tag (max 4 characters)
badge 1?stringThe guild tag badge hash

1 This field is null when a user has not reaffirmed their identity after a tag change.

2 Only populated for users with identity_enabled not set to false.

Premium State Structure
FieldTypeDescription
premium_sourceintegerThe source of the premium subscription
premium_subscription_typeintegerThe type of premium subscription
premium_subscription_group_role?integerThe role in the premium subscription group
Premium Source
ValueNameDescription
1SUBSCRIPTIONUser has an active premium subscription
2FRACTIONAL_PREMIUMUser has a fractional premium subscription
3REVERSE_TRIALUser is on a reverse trial for premium
4SUBSCRIPTION_GROUPUser is part of a premium subscription group
Premium Subscription Type
ValueNameDescription
1BOOST_ONLYUser only has premium guild subscriptions
2TIER_0User has Nitro basic
3TIER_1User has Nitro classic
4TIER_2User has Nitro
Premium Subscription Group Role
ValueNameDescription
1PRIMARYUser is the primary account in the group
2MEMBERUser is a member of the group
User Flags
ValueNameDescriptionPublic
1 << 0STAFFDiscord StaffYes
1 << 1PARTNERPartnered Server OwnerYes
1 << 2HYPESQUADHypeSquad EventsYes
1 << 3BUG_HUNTER_LEVEL_1Level 1 Discord Bug HunterYes
1 << 4MFA_SMSSMS enabled as a multi-factor authentication backupNo
1 << 5PREMIUM_PROMO_DISMISSEDUser has dismissed the current premium (Nitro) promotionNo
1 << 6HYPESQUAD_ONLINE_HOUSE_1HypeSquad BraveryYes
1 << 7HYPESQUAD_ONLINE_HOUSE_2HypeSquad BrillianceYes
1 << 8HYPESQUAD_ONLINE_HOUSE_3HypeSquad BalanceYes
1 << 9PREMIUM_EARLY_SUPPORTEREarly Premium (Nitro) SupporterYes
1 << 10TEAM_PSEUDO_USERUser is a TeamYes
1 << 11IS_HUBSPOT_CONTACTUser is registered on Discord's HubSpot customer platform, used for official Discord programs (e.g. partner)No 1
1 << 12SYSTEMUser is a system user (i.e. official Discord account)Yes
1 << 13HAS_UNREAD_URGENT_MESSAGESUser has unread urgent system messages; an urgent message is one sent from Trust and SafetyNo
1 << 14BUG_HUNTER_LEVEL_2Level 2 Discord Bug HunterYes
1 << 15UNDERAGE_DELETEDUser is scheduled for deletion for being under the minimum required ageNo 1
1 << 16VERIFIED_BOTVerified BotYes
1 << 17VERIFIED_DEVELOPEREarly Verified Bot DeveloperYes
1 << 18CERTIFIED_MODERATORModerator Programs AlumniYes
1 << 19BOT_HTTP_INTERACTIONSBot uses only HTTP interactions and is shown in the online member listYes
1 << 20SPAMMERUser is marked as a spammer and has their messages collapsed in the UIYes
1 << 21DISABLE_PREMIUMUser has manually disabled premium (Nitro) featuresNo
1 << 22ACTIVE_DEVELOPERActive DeveloperYes
1 << 23PROVISIONAL_ACCOUNTUser is a provisional account used with the social layer integrationYes
1 << 33HIGH_GLOBAL_RATE_LIMITUser has their global ratelimit raised to 1,200 requests per secondNo 1
1 << 34DELETEDUser's account is deletedNo 1
1 << 35DISABLED_SUSPICIOUS_ACTIVITYUser's account is disabled for suspicious activity and must reset their password to regain accessNo 1
1 << 36SELF_DELETEDUser deleted their own accountNo 1
1 << 37PREMIUM_DISCRIMINATORUser has a premium (Nitro) custom discriminatorNo 1
1 << 38USED_DESKTOP_CLIENTUser has used the desktop clientNo 1
1 << 39USED_WEB_CLIENTUser has used the web clientNo 1
1 << 40USED_MOBILE_CLIENTUser has used the mobile clientNo 1
1 << 41DISABLEDUser's account is disabledNo 1
1 << 43HAS_SESSION_STARTEDUser has started at least one Gateway session and is now eligible to send messagesNo 1
1 << 44QUARANTINEDUser is quarantined and cannot create DMs or accept invitesNo
1 << 47PREMIUM_ELIGIBLE_FOR_UNIQUE_USERNAMEUser is eligible for early access to unique usernamesNo 1
1 << 50COLLABORATORUser is a collaborator and is considered staffNo
1 << 51RESTRICTED_COLLABORATORUser is a restricted collaborator and is considered staffNo

1 Not exposed to the API, can only be found in user data harvests.

Purchased Flags

Purchased flags denote what premium items a user has ever purchased. Visit the Nitro page to learn more about the premium plans currently offered.

ValueNameDescription
1 << 0NITRO_CLASSICUser has purchased Nitro classic
1 << 1NITROUser has purchased regular Nitro
1 << 2GUILD_BOOSTUser has purchased a guild boost
1 << 3NITRO_BASICUser has purchased Nitro basic
1 << 4ON_REVERSE_TRIALUser has a reverse trial active
Premium Usage Flags

Premium usage flags denote what premium (Nitro) features a user has utilized.

ValueNameDescription
1 << 0PREMIUM_DISCRIMINATORUser has utilized premium discriminators
1 << 1ANIMATED_AVATARUser has utilized animated avatars
1 << 2PROFILE_BANNERUser has utilized profile banners
Premium Type

Premium types denote the level of premium a user has. Visit the Nitro page to learn more about the premium plans currently offered.

ValueNameDescription
0NONE (deprecated)No Nitro
1TIER_1Nitro Classic
2TIER_2Nitro
3TIER_3Nitro Basic
Age Verification Status
ValueNameDescription
1UNVERIFIEDUser has not verified their age
2VERIFIED_TEENUser is a verified teenager
3VERIFIED_ADULTUser is a verified adult
Required Action Type

Denotes an action Discord requires the user to take before they can continue using the platform. In some cases, multiple actions may be required, and the user must complete all of them before they can continue using Discord.

ValueDescriptionAction
AGREEMENTSThe user must re-indicate their agreement of Discord's terms of service and privacy policy; this does not limit the user from using DiscordReaffirm agreements
REQUIRE_CAPTCHAThe user must complete a reCAPTCHA challengeComplete a reCAPTCHA challenge
REQUIRE_VERIFIED_EMAILThe user must add and verify an email address to their accountAdd an email address
REQUIRE_REVERIFIED_EMAILThe user must reverify their existing email addressReverify your email address
REQUIRE_VERIFIED_PHONEThe user must add a phone number to their accountAdd a phone number
REQUIRE_REVERIFIED_PHONEThe user must reverify their existing phone numberReverify your phone number
REQUIRE_VERIFIED_PHONE_THEN_EMAILThe user must add a phone number to their account and then add and verify an email address to their accountAdd a phone number and add an email address
REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONEThe user must add and verify an email address to their account or add a phone number to their accountAdd an email address or add a phone number
REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONEThe user must reverify their existing email address or add a phone number to their accountReverify your email address or add a phone number
REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONEThe user must add and verify an email address to their account or reverify their existing phone numberAdd an email address or reverify your phone number
REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONEThe user must reverify their existing email address or reverify their existing phone numberReverify your email address or reverify your phone number
Example User
{
"id": "80351110224678912",
"username": "nelly",
"global_name": "Nelly",
"avatar": "8342729096ea3675442027381ff50dfe",
"discriminator": "0",
"public_flags": 64,
"flags": 96,
"purchased_flags": 10,
"premium_usage_flags": 4,
"banner": "06c16474723fe537c283b8efa61a30c8",
"accent_color": null,
"bio": "I'm not a bot!",
"locale": "en-US",
"nsfw_allowed": true,
"mfa_enabled": true,
"premium_type": 2,
"avatar_decoration_data": {
"sku_id": "1144058844004233369",
"asset": "a_fed43ab12698df65902ba06727e20c0e",
"expires_at": null
},
"email": "nelly@discord.com",
"verified": true,
"phone": "+18885940085",
"authenticator_types": [1, 2, 3],
"primary_guild": {
"identity_guild_id": "80351110224678913",
"identity_enabled": true,
"tag": "MEOW",
"badge": "7d1734ae5a615e82bc7a4033b98fade8"
}
}
Example Partial User
{
"id": "80351110224678912",
"username": "nelly",
"avatar": "8342729096ea3675442027381ff50dfe",
"discriminator": "0",
"public_flags": 64,
"banner": "06c16474723fe537c283b8efa61a30c8",
"accent_color": 16711680,
"global_name": "Nelly",
"avatar_decoration_data": {
"sku_id": "1144058844004233369",
"asset": "a_fed43ab12698df65902ba06727e20c0e",
"expires_at": null
},
"primary_guild": {
"identity_guild_id": "80351110224678913",
"identity_enabled": true,
"tag": "MEOW",
"badge": "7d1734ae5a615e82bc7a4033b98fade8"
}
}

Avatar Decoration Data Object

A user's active avatar decoration.

Avatar Decoration Data Structure
FieldTypeDescription
assetstringThe avatar decoration hash
sku_idsnowflakeThe ID of the avatar decoration's SKU
expires_at?integerUnix timestamp of when the current avatar decoration expires
Example Avatar Decoration Data
{
"sku_id": "1144058844004233369",
"asset": "a_fed43ab12698df65902ba06727e20c0e",
"expires_at": 1740124800
}

Collectibles Object

A user's equipped collectibles, excluding avatar decorations and profile effects.

Collectibles Structure
FieldTypeDescription
nameplate?nameplate data objectThe user's nameplate
Nameplate Data Structure
FieldTypeDescription
assetstringThe nameplate asset path
sku_idsnowflakeThe ID of the nameplate's SKU
labelstringThe nameplate's accessibility description
palettestringThe nameplate's color palette
expires_at?integerUnix timestamp of when the current nameplate expires
Example Collectibles Object
{
"nameplate": {
"asset": "nameplates/nameplatetest/angel/",
"palette": "bubble_gum",
"label": "COLLECTIBLES_NAMEPLATETEST_ANGEL_A11Y",
"sku_id": "1344802364934062152",
"expires_at": null
}
}

Display Name Style Object

How a user's name gets displayed, such as font, colors, gradient, glow.

Display Name Style Structure
FieldTypeDescription
font_idintegerThe font to use
effect_idintegerThe effect to use
colorsarray[integer]The colors to use encoded as an array of integers representing hexadecimal color codes (max 2)
Display Name Font
ValueNameDescription
11DEFAULTDefault font
1BANGERSBangers
2BIO_RHYMEBioRhyme
3CHERRY_BOMBCherry Bomb One
4CHICLEChicle
5COMPAGNONCompagnon
6MUSEO_MODERNOMuseoModerno
7NEO_CASTELNéo-Castel
8PIXELIFYPixelify Sans
9RIBESRibes
10SINISTRESinistre
12ZILLA_SLABZilla Slab
Display Name Effect
ValueNameDescription
1SOLIDDisplays the first color provided
2GRADIENTTwo color gradient
3NEONGlow around the name
4TOONSubtle vertical gradient and stroke
5POPColored dropshadow
6GLOWAlternate gradient style

Game Widget Object

A tile on a user's profile showcasing their gaming interests.

FieldTypeDescription
datagame widget data objectThe data of the widget
idsnowflakeThe ID of the widget
updated_atISO8601 timestampWhen the widget was last updated
Game Widget Data Structure
FieldTypeDescription
typestringThe type of the game widget
games?array[game widget game object]The widget's games (not applicable for application widgets)
application_id?snowflakeThe application ID (only applicable for application widgets)
Game Widget Type
ValueDescription
favorite_games 1Favourite game (max 1)
played_gamesGames I Like (max 20)
current_games 1Games in rotation (max 5)
want_to_play_gamesWant to play (max 20)
applicationSpecific game details

1 Rendered as a detailed game widget in the user profile.

Game Widget Game Structure
FieldTypeDescription
game_idsnowflakeThe application ID of the game
comment??stringOptional comment to be displayed below the game in detailed game widgets
tags?array[string]Tags to be displayed below the game in detailed game widgets
Game Widget Tag
ValueDescription
noob 1Noob
learning_the_ropes 1Learning The Ropes
casual 1Casual
getting_good 1Getting Good
intermediate 1Intermediate
expert 1Expert
better_than_you 1Better Than You
obsessedObsessed
love_itLove It
kind_of_love_itKind of Love it
kind_of_hate_itKind of Hate it
rage_quittingRage Quitting
like_itLike It
frustratedFrustrated
too_easyToo Easy
looking_for_groupLooking For Group
open_to_playOpen To Play
looking_for_tipsLooking For Tips
open_to_teachOpen To Teach
looking_to_discussLooking To Discuss

1 Only one of these tags can be present in a game widget at a time.

Example Game Widget
{
"id": "1455894303866880153",
"updated_at": "2025-12-31T12:04:11.252336+00:00",
"data": {
"type": "favorite_games",
"games": [
{
"game_id": "505134938354352128",
"comment": "Best game ever!",
"tags": ["expert", "open_to_teach"]
}
]
}
}

Profile Metadata Object

A user's profile metadata.

Profile Metadata Structure
FieldTypeDescription
guild_id?snowflakeThe guild ID this profile applies to, if it is a guild profile
pronounsstringThe user's pronouns (max 40 characters)
bio?stringThe user's bio (max 190 characters)
banner??stringThe user's banner hash
accent_color? 1?integerThe user's banner color encoded as an integer representation of a hexadecimal color code
theme_colors??array[integer, integer]The user's two theme colors encoded as an array of integers representing hexadecimal color codes
popout_animation_particle_type??snowflakeThe user's profile popout animation particle type
emoji??emoji objectThe user's profile emoji
profile_effect??profile effect objectThe user's profile effect

1 Not respected on guild profiles.

Profile Effect Structure
FieldTypeDescription
idsnowflakeThe ID of the profile effect
expires_at?integerUnix timestamp of when the current profile effect expires
Example Profile Metadata
{
"guild_id": "80351110224678913",
"pronouns": "gnarp/gnap",
"bio": "👽 Professional alien",
"banner": null,
"accent_color": null,
"theme_colors": [1, 1],
"popout_animation_particle_type": null,
"emoji": {
"name": "meowlien",
"roles": [],
"id": "1090395834966880336",
"require_colons": true,
"managed": false,
"animated": false,
"available": true
},
"profile_effect": {
"id": "1139323097930027068",
"expires_at": 1740124800
}
}

Authenticator Object

Authenticator Structure
FieldTypeDescription
idstringThe ID of the authenticator
typestringThe type of authenticator
namestringThe name of the authenticator
Authenticator Type

Authenticator types represent enabled multi-factor authentication methods. See the MFA verification documentation for more information.

ValueNameDescription
1WEBAUTHNWebAuthn credentials
2TOTPTime-based One-Time Password code
3SMSSMS code
Example Authenticator
{
"id": "1219430671865610261",
"type": 1,
"name": "AlienKey"
}

Backup Code Object

A multi-factor authentication backup code.

Backup Code Structure
FieldTypeDescription
user_idsnowflakeThe ID of the user
codestringThe backup code
consumedbooleanWhether the backup code has been used
Example Backup Code
{
"user_id": "852892297661906993",
"code": "zqs8oqxk",
"consumed": false
}

Harvest Object

A user's data harvest.

Harvest Structure
FieldTypeDescription
harvest_idsnowflakeThe ID of the harvest
user_idsnowflakeThe ID of the user being harvested
emailstringThe email the harvest will be sent to
statestringThe state of the harvest
statusintegerThe status of the harvest
created_atISO8601 timestampWhen the harvest was created
completed_at?ISO8601 timestampWhen the harvest was completed
polled_at?ISO8601 timestampWhen the harvest was last polled
backendsmap[string, string]The state of each backend being harvested
updated_atISO8601 timestampWhen the harvest was last updated
shadow_runbooleanWhether the harvest is a shadow run
harvest_metadataharvest metadata objectAdditional metadata about the harvest
Example Harvest
{
"harvest_id": "1319498748052639754",
"user_id": "852892297661906993",
"email": "alien@dolfi.es",
"state": "DELIVERED",
"status": 3,
"created_at": "2024-12-20T02:56:56.639579+00:00",
"completed_at": "2024-12-21T11:05:41.462828+00:00",
"polled_at": "2024-12-21T11:05:41.462828+00:00",
"backends": {
"zendesk": "EXTRACTED",
"ads": "EXTRACTED",
"users": "EXTRACTED",
"guilds": "EXTRACTED",
"hubspot": "EXTRACTED",
"messages": "EXTRACTED",
"analytics": "EXTRACTED",
"activities_e": "EXTRACTED",
"activities_w": "EXTRACTED"
},
"updated_at": "2024-12-21T11:05:41.462828+00:00",
"shadow_run": false,
"harvest_metadata": {
"user_is_staff": false,
"sla_email_sent": false,
"bypass_cooldown": false,
"is_provisional": false
}
}
Harvest Metadata Structure
FieldTypeDescription
user_is_staffbooleanWhether the user being harvested is a Discord employee
sla_email_sentbooleanWhether an email has been sent informing the user that the archive is taking longer than expected
bypass_cooldownbooleanWhether the harvest bypasses the cooldown period for requesting harvests
is_provisional?booleanWhether the user being harvested is a provisional account
backend_attempts?map[string, integer]The number of attempts made for each backend being harvested
Harvest State
ValueDescription
INCOMPLETEThe harvest is not yet complete
DELIVEREDThe harvest has been delivered to the user
CANCELLEDThe harvest has been cancelled
Harvest Status
ValueNameDescription
0QUEUEDThe harvest is queued and has not been started
1RUNNINGThe harvest is currently running
2FAILEDThe harvest has failed
3COMPLETEDThe harvest has completed successfully
4CANCELLEDThe harvest has been cancelled
Harvest Backend Internal Type
ValueDescription
usersAll account information
analyticsActions the user has taken in Discord
activities_eFirst-party embedded activity information
activities_wFirst-party embedded activity information
messagesAll user messages
hubspotDiscord's HubSpot contact data, used for official Discord programs (e.g. partner)
guildsAll guilds the user is currently a member of
adsQuest data
zendeskZendesk support tickets
Harvest Backend State
ValueDescription
INITIALThe backend has not been processed
RUNNINGThe backend is currently processing
EXTRACTEDThe backend has been processed

User Survey Object

A user survey.

User Survey Structure
FieldTypeDescription
idsnowflakeThe ID of the survey
keysnowflakeThe ID of the survey
promptstringThe title of the survey
ctastringThe call-to-action text
urlstringThe URL to the survey
guild_requirementsarray[string]User requirements for the survey to be shown
guild_sizearray[?integer, ?integer]The guild member count requirements (min, max)
guild_permissionsarray[string]The guild permissions bitwise value requirements
Survey Requirement Type
ValueDescriptionField
IS_OWNERThe user must be the owner of a guild-
IS_ADMINThe user must have the ADMINISTRATOR permission in any guild-
IS_COMMUNITYThe user must be in a guild with the COMMUNITY feature-
GUILD_SIZEThe user must be in a guild with a member count in a given rangeguild_size
GUILD_SIZE_ALLAll guilds the user is in must have a member count in a given rangeguild_size
IS_HUBThe user must be in a guild with the HUB feature-
IS_VIEWINGThe user must be currently viewing a guild-
GUILD_PERMISSIONSThe user must have the given permissions in any guildguild_permissions
Example User Survey
{
"id": "1301267751645483122",
"key": "1301267751645483122",
"prompt": "Share your experience with Discord",
"cta": "Take the survey!",
"url": "https://discord.sjc1.qualtrics.com/jfe/form/SV_123456",
"guild_requirements": [],
"guild_size": [null, null],
"guild_permissions": []
}

User Identity Verification Object

An Identity Verification used for application verification.

User Identity Verification Structure
FieldTypeDescription
idsnowflakeThe ID for the team verification
statusnumberThe current status of the identity verification
last_error?numberThe error code of the last verification attempt
redirect_url 1stringThe Stripe identity verification URL to redirect the user to

1 Only returned on newly-created identity verification attempts.

User Identity Verification Status
ValueNameDescription
1REQUIRES_ACTIONUser action is required to complete verification
2PROCESSINGThe verification is currently in progress
3CANCELEDThe verification was cancelled before completion
4SUCCEEDEDThe verification succeeded
5MANUALLY_SUCCEEDEDThe verification was manually approved by staff
6DELETEDThe verification was deleted
7SUCCEEDED_GRACE_PERIODThe verification is currently in a grace period before finalization
User Identity Verification Error
ValueNameDescription
1CONSENT_DECLINEDUser declined consent at the beginning of verification
2UNVERIFIEDVerification was aborted or Stripe failed to verify the user's identity
3DEVICE_UNSUPPORTEDThe device used for verification is unsupported
4VERIFICATION_DOCUMENT_EXPIREDThe submitted document has expired
5VERIFICATION_DOCUMENT_INVALIDThe submitted document is invalid
6VERIFICATION_UNEXPECTED_DOCUMENT_COUNTRYThe submitted document has an unexpected issuing country
7VERIFICATION_UNEXPECTED_DOCUMENT_TYPEThe submitted document has an unexpected document type
8VERIFICATION_SCAN_NOT_READABLEThe scan is not readable by the verification system
9VERIFICATION_SCAN_MISSING_BACKThe scan is missing the back side of the document
10VERIFICATION_SCAN_ID_TYPE_NOT_SUPPORTEDThe scan contains a document type that is not supported by the verification system
11VERIFICATION_SCAN_CORRUPTThe scan is incomplete or corrupted
12VERIFICATION_SCAN_FAILED_COPYThe verification system determined the scan is a copy of the original document
13VERIFICATION_SCAN_MANIPULATED_DOCUMENTThe verification system determined the document was manipulated or damaged with
14VERIFICATION_SCAN_FAILED_GRAYSCALEThe scan failed due to the uploaded document having been uploaded in grayscale
15VERIFICATION_UNDER_SUPPORTED_AGEThe user is under the minimum supported age for verification

Endpoints

Get Current User

GET/users/@me

Returns the user object of the requester's account.

Query String Params
FieldTypeDescription
with_analytics_token?booleanWhether to include the analytics token in the response (default false)

Modify Current User

PATCH/users/@me

Modifies the requester's user account settings. Returns a user object with an extra token field representing the user's new authorization token on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
username? 5stringThe user's username (2-32 characters)
discriminator? 5stringThe user's stringified 4-digit Discord tag; can only be changed for users with an applicable premium plan, which triggers a reroll after the subscription expires
global_name? 5?stringThe user's display name (1-32 characters)
avatar??image dataThe user's avatar; can be animated when the user has an applicable premium plan
avatar_description??stringThe description of the new user avatar, usually in the format "{filename}, added {date}" (max 1024 characters)
avatar_id?stringThe ID of the recent avatar to use
avatar_decoration_id??snowflakeThe ID of the user's avatar decoration
avatar_decoration_sku_id??snowflakeThe SKU ID of the user's avatar decoration
nameplate_id??snowflakeThe ID of the user's nameplate
nameplate_sku_id??snowflakeThe SKU ID of the user's nameplate
display_name_font_id??integerThe display name font to use; can only be changed for premium users
display_name_effect_id??integerThe display name effect to use; can only be changed for premium users
display_name_colors??array[integer]The display name colors to use encoded as an array of integers representing hexadecimal color codes (max 2); can only be changed for premium users
email?stringThe user's email address; if changing from a verified email, email_token must be provided
email_token? 4stringThe user's email token from their previous email
pronouns??stringThe user's pronouns (max 40 characters)
bio??stringThe user's bio (max 190 characters)
banner??image dataThe user's banner; can only be changed for premium users
accent_color??integerThe user's banner color encoded as an integer representation of a hexadecimal color code
flags?integerThe user's flags (only PREMIUM_PROMO_DISMISSED and HAS_UNREAD_URGENT_MESSAGES can be set)
date_of_birth? 2ISO8601 timestampThe user's date of birth; can only be set once
password? 1stringThe user's current password; if the account does not have a password, this sets it
new_password? 3stringThe user's new password (8-72 characters)
push_providerstringThe push notification provider of the device
push_tokenstringThe push notification token to register
push_voip_provider? 6stringThe VOIP push notification provider of the device
push_voip_token? 6stringThe VOIP push notification token to register

1 Required for changing username, discriminator, email, date_of_birth, or new_password.

2 Setting this defines the nsfw_allowed field of the user based on whether they are over 18.

3 Changing the account password invalidates all active tokens. Don't fret though, as the token key in the response will be valid.

4 This value can be obtained by requesting a verification code as outlined in the email verification documentation.

5 If using unique usernames, the username field must be unique across Discord, and discriminator cannot be changed. Else, the username and discriminator fields must be unique across Discord, and changing the username may cause the discriminator to be randomized. See the section on Discord's new username system for more information. See the Usernames and Nicknames section for information on username restrictions.

6 VOIP-specific push notification tokens are only used with PushKit on iOS.

Modify Current User Account

PATCH/users/@me/account

Modifies the requester's user account settings. Returns a partial user object on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
global_name??stringThe user's display name (1-32 characters)

Get Recent Avatars

GET/users/@me/avatars

Returns the user's 6 most recent avatars.

Response Body
FieldTypeDescription
avatarsarray[avatar object]The recent avatars for the user
Avatar Structure
FieldTypeDescription
idstringThe avatar ID
storage_hashstringThe avatar hash
description?stringThe description specified when the avatar was uploaded
Example Response
{
"avatars": [
{
"id": "1357011390585507910",
"storage_hash": "212aed0ac14cf7804051218f99624a9f",
"description": "alien, added April 2, 2025 at 5:09 PM"
}
]
}

Delete Recent Avatar

DELETE/users/@me/avatars/{avatar.id}

Deletes a recent avatar for the user. Returns a 204 empty response on success.

Get User

GET/users/{user.id}

Returns a partial user object for a given user ID.

Get User Profile

GET/users/{user.id}/profile

Returns a user profile object for a given user ID.

Query String Params
FieldTypeDescription
with_mutual_guilds?booleanWhether to include the mutual guilds of the user with the current user (default true)
with_mutual_friends?booleanWhether to include mutual friends the user has with the current user (default false)
with_mutual_friends_count?booleanWhether to include the number of mutual friends the user has with the current user (default false)
guild_id?snowflakeThe guild ID to get the user's member profile in
connections_role_id?snowflakeThe role ID to get the user's application role connection metadata in
join_request_id?snowflakeThe join request ID to use for the request
Response Body
FieldTypeDescription
application?profile application objectThe bot's application profile
userpartial user objectThe user object, with an extra bio key denoting the user's bio
user_profile 1profile metadata objectThe user's profile metadata
badges 1array[profile badge object]The user's profile badges
guild_member? 1private guild member objectThe guild member in the guild specified
guild_member_profile? 1profile metadata objectThe guild member's profile in the guild specified
guild_badges 1array[profile badge objcet]The guild member's guild-specific profile badges
widgets 1array[game widget object]The user's game widgets
legacy_username? 1 2?stringThe user's pre-migration username#discriminator, if applicable and shown
mutual_guilds? 1array[mutual guild object]The mutual guilds of the user with the current user
mutual_friends? 1 3array[partial user object]The mutual friends the user has with the current user
mutual_friends_count? 1 3integerThe number of mutual friends the user has with the current user
connected_accountsarray[partial connection object]The user's public connected accounts
application_role_connections?array[application role connection object]The user's application role connections for the role specified
premium_type 1?integerThe type of premium (Nitro) subscription on a user's account
premium_since 1?ISO8601 timestampThe date the user's premium subscription started
premium_guild_since 1?ISO8601 timestampThe date the user's premium guild (boosting) subscription started

1 These fields are unexpectedly missing or null if the user has blocked the current user.

2 See the section on Discord's new username system for more information.

3 This will always be empty for bots, even if the user has mutual friends with it.

Profile Application Structure
FieldTypeDescription
idsnowflakeThe ID of the application
flagsintegerThe application's flags
verifiedbooleanWhether the application is verified
storefront_availablebooleanWhether the application has monetization enabled (i.e. subscriptions or products available for purchase)
primary_sku_id?snowflakeThe ID of the application's primary SKU (game, application subscription, etc.)
install_params?application install params objectThe default in-app authorization link for the integration
integration_types_config?map[integer, ?application integration type configuration object]The configuration for each integration type supported by the application
popular_application_command_ids?array[snowflake]The IDs of the application's most popular application commands (max 5)
custom_install_url?stringThe default custom authorization link for the integration
Profile Badge Structure

For a list of known profile badges, refer to this Gist.

FieldTypeDescription
idstringThe reference ID of the badge
descriptionstringA description of the badge
iconstringThe badge's icon hash
link?stringA link representing the badge
Mutual Guild Structure
FieldTypeDescription
idsnowflakeThe guild ID
nick?stringThe user's nickname in the guild
Example Response
{
"user": {
"id": "852892297661906993",
"username": "alien",
"global_name": "Alien",
"avatar": "9d52298a3ad006da31ac66a86230d9f2",
"avatar_decoration_data": null,
"discriminator": "0",
"public_flags": 64,
"flags": 64,
"banner": "a_17a0757cf6121ccc07546de9bff3edb2",
"accent_color": null,
"bio": "👽 Professional smoothbrain",
"avatar_decoration_data": null,
"primary_guild": null
},
"connected_accounts": [
{
"type": "twitter",
"id": "123456",
"name": "discord",
"verified": true,
"metadata": {
"verified": "1",
"followers_count": "100000",
"statuses_count": "100000",
"created_at": "2016-01-01T00:00:00"
}
}
],
"premium_since": "2016-01-01T00:00:00.00+00:00",
"premium_type": 2,
"premium_guild_since": "2016-01-01T00:00:00.00+00:00",
"mutual_friends_count": 100,
"mutual_guilds": [
{
"id": "80351110224678913",
"nick": "Liena"
}
],
"guild_member": {
"avatar": null,
"communication_disabled_until": null,
"unusual_dm_activity_until": null,
"flags": 0,
"joined_at": "2016-01-01T00:00:00.00+00:00",
"nick": null,
"pending": false,
"premium_since": "2016-01-01T00:00:00.00+00:00",
"roles": [],
"user": {
"id": "852892297661906993",
"username": "alien",
"global_name": "Alien",
"avatar": "9d52298a3ad006da31ac66a86230d9f2",
"discriminator": "0",
"public_flags": 4194368,
"avatar_decoration_data": null,
"primary_guild": null
},
"bio": "👽 Professional alien",
"banner": null,
"mute": false,
"deaf": false
},
"application_role_connections": [
{
"platform_name": "Aliens United",
"platform_username": "Alien",
"metadata": {
"real": "1",
"certified": "1"
},
"application": {
"id": "891436233903964161",
"name": "Lightbulb",
"icon": "4d47160ec8c45f22e2bdbe75ac3e1bbd",
"description": "<:support_icon:853084466016288828> Imagine a bot.",
"summary": "",
"type": null,
"bot": {
"id": "891436233903964161",
"username": "lightbulb",
"global_name": "Lightbulb",
"avatar": "59fb354bf144ed784aa8bdef88d135bb",
"avatar_decoration_data": null,
"discriminator": "0",
"public_flags": 0,
"bot": true
}
},
"application_metadata": {
"real": {
"type": 7,
"key": "real",
"name": "Real",
"description": "Are you real alier?"
},
"certified": {
"type": 7,
"key": "certified",
"name": "Certified",
"description": "Are you certified alier?"
}
}
}
],
"user_profile": {
"bio": "👽 Professional smoothbrain",
"accent_color": null,
"pronouns": "gnarp/gnap",
"banner": "a_17a0757cf6121ccc07546de9bff3edb2",
"theme_colors": [1, 1],
"popout_animation_particle_type": 100000,
"emoji": null,
"profile_effect": {
"id": "1139323097930027068",
"expires_at": null
}
},
"guild_member_profile": {
"guild_id": "80351110224678913",
"pronouns": "",
"bio": "👽 Professional alien",
"banner": null,
"accent_color": null,
"theme_colors": [1, 1],
"popout_animation_particle_type": null,
"emoji": null,
"profile_effect": {
"id": "1139323097930027068",
"expires_at": null
}
}
}

Modify User Profile

PATCH/users/@me/profile

Modifies the current user's profile. Returns the updated profile metadata object on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
pronouns??stringThe user's pronouns (max 40 characters)
bio??stringThe user's bio (max 190 characters)
banner??image dataThe user's banner; can only be changed for premium users
accent_color??integerThe user's banner color encoded as an integer representation of a hexadecimal color code
theme_colors??array[integer, integer]The user's two theme colors encoded as an array of integers representing hexadecimal color codes; can only be changed for premium users
popout_animation_particle_type??snowflakeThe user's profile popout animation particle type; can only be changed for premium users
emoji_id??snowflakeThe user's profile emoji ID; can only be changed for premium users
profile_effect_id??snowflakeThe user's profile effect ID; can only be changed for premium users

Get Mutual Relationships

GET/users/{user.id}/relationships

Returns a list of partial user objects that are friends with the user and current user.

Modify Profile Widgets

PUT/users/@me/widgets

Replaces the user's profile widgets, and returns a list of game widget which has been put on the user's profile.

JSON Params
FieldTypeDescription
widgetsarray[partial game widget object]The user's game widgets (max 1 of each game widget type) 1

1 The id field is optional and updated_at is ignored.

Get Profile Widgets Suggested Games

GET/users/@me/widgets/suggested-games

Returns suggested applications for the current user's profile game widgets.

Response Body
FieldTypeDescription
suggested_gamesarray[snowflake]The suggested game application IDs
suggested_wishlist_gamesarray[snowflake]The suggested wishlist game application IDs

Enable TOTP MFA

POST/users/@me/mfa/totp/enable

Enables TOTP multi-factor authentication for the current user. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
passwordstringThe user's password
secret?stringThe generated TOTP secret (32 characters)
code?stringThe TOTP code to verify the secret (6 characters)
Response Body
FieldTypeDescription
tokenstringThe new authorization token for the session
backup_codesarray[backup code object]MFA backup codes

Disable TOTP MFA

POST/users/@me/mfa/totp/disable

Disables TOTP multi-factor authentication for the current user. Fires a User Update Gateway event.

Response Body
FieldTypeDescription
tokenstringThe new authorization token for the session

Enable SMS MFA

POST/users/@me/mfa/sms/enable

Enables SMS multi-factor authentication for the current user. Requires that TOTP-based MFA is already enabled and the user has a verified phone number. Returns a 204 empty response on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
passwordstringThe user's password

Disable SMS MFA

POST/users/@me/mfa/sms/disable

Disables SMS multi-factor authentication for the current user. Returns a 204 empty response on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
passwordstringThe user's password

Get WebAuthn Authenticators

GET/users/@me/mfa/webauthn/credentials

Returns a list of WebAuthn authenticator objects for the current user.

Create WebAuthn Authenticator

POST/users/@me/mfa/webauthn/credentials

Creates a WebAuthn authenticator for the current user. Fires User Update and Authenticator Create Gateway events once the authenticator is created.

JSON Params
FieldTypeDescription
name?stringThe name of the authenticator (1-32 characters)
ticket?stringThe MFA ticket returned from the same endpoint
credential?stringA stringified JSON object of the public key credential response
Response Body
FieldTypeDescription
ticket 1stringThe MFA ticket
challenge 1stringThe stringified JSON public key credential request options challenge
id 2stringThe ID of the authenticator
type 2stringThe type of authenticator (always WEBAUTHN)
name 2stringThe name of the authenticator
backup_codes 2array[backup code object]MFA backup codes

1 Only returned when no parameters are provided.

2 Only returned when parameters are provided.

Example Response (Ticket)
{
"ticket": "ODUyODkyMjk3NjYxOTA2OTkz.H2Rpq0.WrhGhYEhM3lHUPN61xF6JcQKwVutk8fBvcoHjo",
"challenge": "{\"publicKey\":{\"challenge\":\"a8a1cHP7_zYheggFG68zKUkl8DwnEqfKvPE-GOMvhss\",\"timeout\":60000,\"rpId\":\"discord.com\",\"allowCredentials\":[{\"type\":\"public-key\",\"id\":\"izrvF80ogrfg9dC3RmWWwW1VxBVBG0TzJVXKOJl__6FvMa555dH4Trt2Ub8AdHxNLkQsc0unAGcn4-hrJHDKSO\"}],\"userVerification\":\"preferred\"}}"
}
Example Response (Authenticator)
{
"id": "1219430671865610261",
"type": 1,
"name": "AlienKey",
"backup_codes": [
{
"user_id": "852892297661906993",
"code": "zqs8oqxk",
"consumed": false
}
]
}

Modify WebAuthn Authenticator

PATCH/users/@me/mfa/webauthn/credentials/{authenticator.id}

Modifies the given WebAuthn authenticator. Returns the updated authenticator object on success. Fires an Authenticator Update Gateway event.

JSON Params
FieldTypeDescription
name?stringThe name of the authenticator (1-32 characters)

Delete WebAuthn Authenticator

DELETE/users/@me/mfa/webauthn/credentials/{authenticator.id}

Deletes the given WebAuthn authenticator. Returns a 204 empty response on success. Fires User Update and Authenticator Delete Gateway events.

Send Backup Codes Challenge

POST/auth/verify/view-backup-codes-challenge

Sends an email to the current user with a verification code that allows them to view their backup codes. Returns a 204 empty response on success.

JSON Params
FieldTypeDescription
passwordstringThe user's password
Response Body
FieldTypeDescription
noncestringThe one-time verification nonce used to view the backup codes
regenerate_noncestringThe one-time verification nonce used to regenerate the backup codes

Get Backup Codes

POST/users/@me/mfa/codes-verification

Returns the user's MFA backup codes.

JSON Params
FieldTypeDescription
key 1stringThe backup code verification key received in the email
nonce 1 2stringThe one-time verification nonce used to view/regenerate the backup codes
regenerate 2booleanWhether to regenerate the backup codes

1 This value can be obtained by requesting a verification code with the Send Backup Codes Challenge endpoint.

2 The nonce used must correspond to the action being performed. Each action can only be performed once.

Response Body
FieldTypeDescription
backup_codesarray[backup code object]MFA backup codes
Example Response
{
"backup_codes": [
{
"user_id": "852892297661906993",
"code": "zqs8oqxk",
"consumed": false
}
]
}

Disable User Account

POST/users/@me/disable

Disables the current user's account. Invalidates all active tokens. Returns a 204 empty response on success.

JSON Params
FieldTypeDescription
passwordstringThe user's password

Delete User Account

POST/users/@me/delete

Marks the current user's account for deletion. Invalidates all active tokens. Returns a 204 empty response on success.

JSON Params
FieldTypeDescription
password?stringThe user's password, if any

Verify User Captcha

POST/users/@me/captcha/verify

Verifies a reCAPTCHA solution when needed by the REQUIRE_CAPTCHA required action. Returns a 204 empty response on success. Fires a User Required Action Update Gateway event.

reCAPTCHA Site Key
6Lef5iQTAAAAAKeIvIY-DeexoO3gj7ryl9rLMEnn
JSON Params
FieldTypeDescription
captcha_keystringThe reCAPTCHA solution

Modify User Agreements

patch/users/@me/agreements

Reaffirms the user's agreements to Discord's Terms of Service and Privacy Policy when needed by the AGREEMENTS required action, which is assigned when a policy change occurs. Returns a 204 empty response on success. Fires a User Required Action Update Gateway event.

JSON Params
FieldTypeDescription
terms?booleanWhether the user agrees to the Terms of Service
privacy?booleanWhether the user agrees to the Privacy Policy

Get Unique Username Suggestions

GET/users/@me/pomelo-suggestions

Returns a suggested unique username string based on the current user's username.

Response Body
FieldTypeDescription
usernamestringThe suggested username
Example Response
{ "username": "gnarp.gnap" }

Get Unique Username Eligibility

POST/users/@me/pomelo-attempt

Checks whether a unique username is available for the user to claim.

JSON Params
FieldTypeDescription
usernamestringThe username to check
Response Body
FieldTypeDescription
taken?booleanWhether the username is taken
Example Response
{ "taken": true }

Create Unique Username

POST/users/@me/pomelo

Claims a unique username for the user. Returns the updated user object on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
usernamestringThe username to claim

Set Guild Identity

PUT/users/@me/clan

Sets the current user's primary guild. Returns a user object on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
identity_enabled??booleanWhether the user has enabled the feature
identity_guild_id??snowflakeThe ID of the guild whose identity is being adopted

Get Recent Mentions

GET/users/@me/mentions

Returns a list of message objects that the current user has been mentioned in during the past 7 days.

Query String Params
FieldTypeDescription
before?snowflakeGet messages before this message ID
limit?integerMax number of messages to return (1-100, default 25)
guild_id?snowflakeThe guild to limit returned messages by
roles?booleanWhether to include role mentions (default true)
everyone?booleanWhether to include @everyone and @here mentions (default true)

Delete Recent Mention

DELETE/users/@me/mentions/{message.id}

Acknowledges a message the current user has been mentioned in. Returns a 204 empty response on success. Fires a Recent Mention Delete Gateway event.

Get User Harvest

GET/users/@me/harvest

If it exists, returns a harvest object representing the current user's most recent user data harvest request. Otherwise, returns a 204 empty response.

Create User Harvest

POST/users/@me/harvest

Creates a user data harvest request for the current user. Returns a harvest object on success.

JSON Params
FieldTypeDescription
backends? 1?array[string]The types of user data being requested
email 2stringThe email address to send the harvest to

1 Invalid options are ignored. If the array contains no valid values, all data types are requested.

2 Only applicable in OAuth2 contexts.

Harvest Backend Type

See the official support page for more information.

ValueDescription
AccountsAll account information
AdsQuest data
AnalyticsActions the user has taken in Discord
ActivitiesFirst-party embedded activity information
MessagesAll user messages
ProgramsOfficial Discord programs (e.g. partner)
ServersAll guilds the user is currently a member of
ZendeskZendesk support tickets

Get User Survey

GET/users/@me/survey

Returns the current user's active survey.

Query String Params
FieldTypeDescription
disable_auto_seen?booleanWhether to prevent automatically marking the survey as seen (default false)
survey_override? 1snowflakeThe ID of the survey to return

1 Only usable by Discord employees.

Response Body
FieldTypeDescription
survey?user survey objectThe user's active survey, if any

Acknowledge User Survey

POST/users/@me/survey/{survey.id}/seen

Marks a user survey as seen. Returns a 204 empty response on success.

Get User Notes

GET/users/@me/notes

Returns a mapping of user IDs to notes for the current user.

Example Response
{
"852892297661906993": "This is a note",
"787017887877169173": "This is another note"
}

Get User Note

GET/users/@me/notes/{user.id}

Returns the note for the given user.

Response Body
FieldTypeDescription
notestringThe note (max 256 characters)
note_user_idsnowflakeThe ID of the user the note is on
user_idsnowflakeThe ID of the user who created the note (always the current user)
Example Response
{
"note": "This is a note",
"note_user_id": "787017887877169173",
"user_id": "852892297661906993"
}

Modify User Note

PUT/users/@me/notes/{user.id}

Sets the note for the given user. Returns a 204 empty response on success. Fires a User Note Update Gateway event.

JSON Params
FieldTypeDescription
note?stringThe note (max 256 characters)

Get User Affinities

GET/users/@me/affinities/users

Returns the current user's affinity scores for other users. Affinity scores are a measure of how likely a user is to be friends with another user.

Response Body
FieldTypeDescription
user_affinitiesarray[user affinity object]The user's affinity scores for other users
User Affinity Structure
FieldTypeDescription
user_idsnowflakeThe user's ID
affinityfloatThe affinity score

Get User Affinities v2

GET/users/@me/affinities/v2/users

Returns more detailed user affinity scores for the current user.

Response Body
FieldTypeDescription
user_affinitiesarray[user affinity v2 object]The user's affinity scores for other users
User Affinity v2 Structure
FieldTypeDescription
other_user_idsnowflakeThe user's ID
user_segmentstringThe usage segment of the current user
other_user_segmentstringThe usage segment of the user
is_friendbooleanWhether the user is a friend
dm_probabilityfloatThe affinity score for direct messaging
dm_rankintegerThe rank of the direct message affinity
vc_probabilityfloatThe affinity score for voice calling
vc_rankintegerThe rank of the voice call affinity
server_message_probabilityfloatThe affinity score for guild messaging
server_message_rankintegerThe rank of the guild message affinity
communication_probabilityfloatThe overall communication affinity score
communication_rankintegerThe rank of the overall communication affinity
User Segment Type
ValueDescription
HFU_MAUHigh Frequency User, Monthly Active User
NON_HFU_MAUNon-High Frequency User, Monthly Active User
NON_MAUNon-Monthly Active User
Example User Affinities v2
{
"other_user_id": "1001086404203389018",
"user_segment": "HFU_MAU",
"other_user_segment": "HFU_MAU",
"is_friend": true,
"dm_probability": 0.869776725769043,
"dm_rank": 1,
"vc_probability": 0.004896213300526142,
"vc_rank": 4,
"server_message_probability": 0.846949577331543,
"server_message_rank": 6,
"communication_probability": 0.573874172133704,
"communication_rank": 1
}

Get Guild Affinities

GET/users/@me/affinities/guilds

Returns the current user's affinity scores for their joined guilds. Affinity scores are a measure of how likely a user is to interact with a guild.

Response Body
FieldTypeDescription
guild_affinitiesarray[guild affinity object]The user's affinity scores for their guilds
Guild Affinity Structure
FieldTypeDescription
guild_idsnowflakeThe guild's ID
affinityfloatThe affinity score

Get Channel Affinities

GET/users/@me/affinities/channels

Returns the current user's affinity scores for their participated channels. Affinity scores are a measure of how likely a user is to interact with a channel.

Response Body
FieldTypeDescription
channel_affinitiesarray[channel affinity object]The user's affinity scores for their channels
Channel Affinity Structure
FieldTypeDescription
channel_idsnowflakeThe channel's ID
affinityfloatThe affinity score

Get Tutorial

GET/tutorial

Returns the current user's tutorial object, which contains information about the user's tutorial progress. If no tutorial is available, returns a 204 empty response instead.

Confirm Tutorial Indicator

PUT/tutorial/indicators/{indicator}

Confirms the given tutorial indicator. Returns a 204 empty response on success.

Suppress Tutorial

POST/tutorial/indicators/suppress

Suppresses all tutorial indicators. Returns a 204 empty response on success.

Join HypeSquad Online

POST/hypesquad/online

Joins a HypeSquad house and applies the relevant user flag to the current user. Returns a 204 empty response on success. Fires a User Update Gateway event.

JSON Params
FieldTypeDescription
house_idintegerThe HypeSquad house to join
HypeSquad House
ValueDescription
1HypeSquad Bravery
2HypeSquad Brilliance
3HypeSquad Balance

Leave HypeSquad Online

DELETE/hypesquad/online

Leaves the current user's HypeSquad house and removes the relevant user flag. Returns a 204 empty response on success. Fires a User Update Gateway event.

Submit Developer Portal CSAT Survey

POST/dev-portal-csat-survey-response

Submits a customer satisfaction survey response for the development experience on Discord. Returns a 204 empty response on success.

JSON Params
FieldTypeDescription
user_idsnowflakeThe ID of the client user
csat_responseintegerThe rating given by the user (1-5)

Get User Premium Usage

GET/users/@me/premium-usage

Returns the current user's premium usage for various perks. Only available for users with Nitro.

Response Body
FieldTypeDescription
nitro_sticker_sendspremium usage objectThe number of Nitro sticker the user has sent
total_animated_emojispremium usage objectThe number of animated emoji the user has sent
total_global_emojispremium usage objectThe number of global emoji the user has sent
total_large_uploadspremium usage objectThe number of large uploads the user has made
total_hd_streamspremium usage objectThe number of streams the user has made in HD
hd_hours_streamedpremium usage objectThe number of hours the user has streamed in HD
Premium Usage Structure
FieldTypeDescription
valueintegerThe total number of uses for this perk
Example Response
{
"total_large_uploads": {
"value": 50
},
"total_global_emojis": {
"value": 967
},
"total_animated_emojis": {
"value": 217
},
"nitro_sticker_sends": {
"value": 303
},
"hd_hours_streamed": {
"value": 100
},
"total_hd_streams": {
"value": 50
}
}

Get Saved Messages

GET/users/@me/saved-messages

Returns message bookmarks and reminders for the current user.

Response Body
FieldTypeDescription
resultsarray[saved message object]The list of saved messages
Saved Message Structure
FieldTypeDescription
message?message objectThe saved message
save_datasave data objectThe save data for the message
Save Data Structure
FieldTypeDescription
channel_idsnowflakeThe ID of the channel
message_idsnowflakeThe ID of the message
guild_id?snowflakeThe ID of the guild
saved_atISO8601 timestampThe timestamp when the message was saved
author_summarystringUnknown
channel_summarystringUnknown
message_summarystringUnknown
notesstringUnknown
due_at?ISO8601 timestampWhen the reminder is due

Save Message

PUT/users/@me/saved-messages/{channel.id}/{message.id}

Saves a message for the current user. Returns a saved message object on success. Fires a Saved Message Create Gateway event.

JSON Params
FieldTypeDescription
due_at??ISO8601 timestampWhen the reminder is due

Unsave Message

DELETE/users/@me/saved-messages/{channel.id}/{message.id}

Unsaves a message for the current user. Returns a 204 empty response on success. Fires a Saved Message Delete Gateway event.

Verify Age

POST/age-verification/verify

Starts the age verification process using a third-party age verification provider. After the process is complete, a age verification system message is sent to the user.

Response Body
FieldTypeDescription
verification_request_idstringUUID generated by the server to track the current age verification request
verification_vendor_namestringThe third party age verification provider (currently always K_ID)
verification_webview_urlstringThe webview URL to iframe into the client

Create User Identity Verification

POST/users/@me/identity/verification

Creates a new verification attempt for the user. Returns a user identity verification object on success.

JSON Params
FieldTypeDescription
return_urlstringThe URL to redirect to after Stripe verification succeeds

Get User Identity Verification

GET/users/@me/identity/verification

Returns a user identity verification object representing the most recent verification attempt.

Get User Application Identities

GET/users/{user.id}/application-identities

Returns the user's external identities for connected applications.

Query String Params
FieldTypeDescription
with_profiles?booleanWhether to include application profile information (default false)
Response Body
FieldTypeDescription
identitiesarray[user application identity object]The identities for the user
User Application Identity Structure
FieldTypeDescription
application_idsnowflakeThe ID of the application
provider_issued_user_idstringThe ID of the user on the external identity provider
profile?partial user application profile objectThe primary user application profile of the user
profiles?array[partial user application profile object]The user application profile
Partial User Application Profile Structure
FieldTypeDescription
username?stringThe external username of the user
metadata?stringCustom metadata
data?user application profile data objectThe user application data
data_trusted?booleanWhether the data is trusted (set by application bot)
connection_visiblebooleanUnknown
User Application Profile Data Structure
FieldTypeDescription
primary?user application profile primary data objectThe primary user application data
User Application Profile Primary Data Structure
FieldTypeDescription
season?stringThe game season
rank_name?stringThe current rank the user has in-game
highest_rank?stringThe highest rank the user ever had in-game
featured_played_character?stringThe name of the featured played character
featured_played_character_image?unfurled media item objectThe image of the featured played character
playtime_hours?floatDuration (in hours) that the user has played the game for
total_wins?integerNumber of total wins
current_period_wins?integerNumber of wins in the current period
total_games?integerNumber of total matches
current_period_games?integerNumber of matches in the current period
total_kills?integerNumber of total kills
current_period_kills?integerNumber of kills in the current period
total_assists?integerNumber of total assists
current_period_assists?integerNumber of assists in the current period
total_deaths?integerNumber of total deaths
current_period_deaths?integerNumber of deaths in the current period
server_name? 1stringThe name of the game server
user_id? 1stringThe ID of the in-game account
union_level? 1stringThe union level
total_resonators? 1integerNumber of total resonators
total_achievements? 1integerNumber of total achievements
total_echoes? 1integerNumber of total echoes
login_days? 1integerNumber of login days
data_bank_level? 1stringThe data bank level

1 Only applicable for the "Wuthering Waves" application.

Example User Application Profile Primary Data
{
"season": "Season 5.0",
"rank_name": "No Season Data",
"highest_rank": "No Season Data",
"featured_played_character": "HulkBanner",
"featured_played_character_image": {
"id": "1443231705250136105",
"url": "https://x20na.gsf.easebar.com/nzgxowi1zdq3ztfmn2rhn2fiyjm2ndiznj.png",
"proxy_url": "https://images-ext-1.discordapp.net/external/kzlmI6xU3yzi4a-ipRusyF7IYGbHDgtjquG9jpGVDl0/https/x20na.gsf.easebar.com/nzgxowi1zdq3ztfmn2rhn2fiyjm2ndiznj.png",
"width": 300,
"height": 450,
"placeholder": "l+iFEwAryG8lphhnbmAS+RVnUHeRRlk=",
"placeholder_version": 1,
"content_type": "image/png",
"loading_state": 2,
"flags": 0
},
"playtime_hours": 2.29,
"total_wins": 12,
"current_period_wins": 0,
"total_games": 17,
"current_period_games": 0,
"total_kills": 245,
"current_period_kills": 0,
"total_assists": 27,
"current_period_assists": 0,
"total_deaths": 85,
"current_period_deaths": 0
}