User Settings

User settings are options that a user can configure to change the behavior of their account or client. User guild settings are used to control notifications and other customization options on a per-guild basis.

User Settings Proto Object

This object is actually a serialized protobuf message. The individual fields are not yet documented, but the .proto files are available on this repository.

User Settings Proto Type
ValueNameDescription
1PRELOADEDGeneral Discord user settings
2FRECENCYFrecency and favorites storage
3TEST_SETTINGSUnknown

Legacy User Settings Object

Contains general user settings. This is deprecated in favour of protobuf user settings.

Legacy User Settings Structure
FieldTypeDescription
activity_joining_restricted_guild_idsarray[snowflake]The IDs of guilds that will not be able to join your current activity
activity_restricted_guild_idsarray[snowflake]The IDs of guilds your activity presence will be hidden in
afk_timeoutintegerDuration (in seconds) the user needs to be inactive until clients update their AFK state
allow_accessibility_detectionbooleanWhether to allow Discord to track screen reader usage
allow_activity_party_privacy_friendsbooleanWhether to allow friends to join your activity without sending a request
allow_activity_party_privacy_voice_channel 1booleanWhether to allow people in the same voice channel as you to join your activity without sending a request
animate_emojibooleanWhether to play animated emojis in chat
animate_stickersintegerWhen to animate stickers in chat
contact_sync_enabledbooleanWhether to enable contact sync on Discord mobile
convert_emoticonsbooleanWhether to convert emoticons into emojis (:) -> 🙂)
custom_status?custom status objectThe custom status of the user, used to sync presence across clients
default_guilds_restrictedbooleanWhether to automatically disable DMs between you and members of new guilds you join
detect_platform_accountsbooleanWhether to automatically detect accounts from services like Steam and Blizzard when opening the Discord client
developer_modebooleanWhether to enable developer mode in-client
disable_games_tabbooleanWhether to disable the showing of the Games tab
enable_tts_commandbooleanWhether to allow TTS messages to be played/sent
explicit_content_filterintegerThe explicit content filter for explicit content in all messages
friend_discovery_flagsintegerThe friend discovery flags
friend_source_flags?friend source flags objectThe friend source flags (default all false)
gif_auto_playbooleanWhether GIFs are automatically played when Discord client is in focus
guild_foldersarray[guild folder object]The guild folders
inline_attachment_mediabooleanWhether to display attachments when they are uploaded in chat
inline_embed_mediabooleanWhether to display videos and images from links posted in chat
localestringThe language option chosen by the user
message_display_compactbooleanWhether to use the compact Discord display mode
native_phone_integration_enabledbooleanWhether to enable the new Discord mobile phone number friend requesting feature
passwordless (deprecated)booleanWhether to enable passwordless login
render_embedsbooleanWhether to render message embeds
render_reactionsbooleanWhether to render message reactions
restricted_guildsarray[snowflake]The IDs of guilds that you will not receive DMs from
show_current_gamebooleanWhether to display the currently active game in user presence
statusstringThe status of the user, used to sync presence across clients
stream_notifications_enabledbooleanWhether to receive stream notifications for friends
themestringThe theme
timezone_offsetintegerThe timezone offset from UTC to use (in minutes)
view_nsfw_commandsbooleanWhether NSFW application commands are shown in DMs
view_nsfw_guildsbooleanWhether NSFW guilds are shown on iOS

1 Does not apply to community guilds.

Sticker Animation Option
ValueNameDescription
0ALWAYS_ANIMATEAlways animate stickers
1ANIMATE_ON_INTERACTIONAnimate sticker on interaction
2NEVER_ANIMATENever animate stickers
Legacy Custom Status Structure
FieldTypeDescription
text?stringThe custom status text (max 128)
emoji_id 1?snowflakeThe ID of a guild's custom emoji
emoji_name 1?stringThe unicode character of the emoji
expires_at?ISO8601 timestampWhen the custom status will expire

1 At most one of emoji_id and emoji_name may be set to a non-null value.

Legacy Client Theme

The client theme denotes the theme the user has set in their client.

ValueDescription
darkDark theme
lightLight theme
Explicit Content Filter

Whose messages will be scanned for explicit content.

ValueNameDescription
0DISABLEDDon't scan any direct messages
1NON_FRIENDSScan all direct messages that aren't from friends
2ALL_MESSAGESScan all direct messages from everyone
Friend Discovery Flags

Determines how you get recommended friends.

ValueNameDescription
1 << 1FIND_BY_PHONEWhether the current user can be found by phone number
1 << 2FIND_BY_EMAILWhether the current user can be found by email
Legacy Friend Source Flags Structure

Determines who can add the user as a friend.

FieldTypeDescription
all?booleanWhether everyone can add user as friend
mutual_friends?booleanWhether mutual user friends add user as friend
mutual_guilds?booleanWhether any user from mutual guild can add user as friend
Legacy Guild Folder Structure

A collection of guilds.

FieldTypeDescription
color?integerThe color of the folder encoded as an integer representation of hexadecimal color code
guild_idsarray[snowflake]The IDs of guilds this folder contains
id?integerThe ID of the folder
name?stringThe name of the folder (default ', '.join(guild.name for guild in folder.guilds))

Consents Object

Contains the user's tracking feature consent status.

Consents Structure

This object is a map of consent types to their status.

ValueDescription
personalizationWhether the user has consented to their data being used for personalization
usage_statistics 1Whether the user has consented to their data being used for usage statistics

1 Only included when fetched from the Get User Consents endpoint.

FieldTypeDescription
consentedbooleanWhether the user has consented to the feature

Email Settings Object

Email communication preferences.

Email Settings Structure
FieldTypeDescription
initializedbooleanWhether the email settings have been initialized
categoriesmap[string, boolean]The email settings categories and their enabled status
Email Settings Category
ValueDescription
communicationReceive emails for missed calls and messages
socialReceive emails for friend requests, friend suggestions, or events
recommendations_and_eventsReceive emails for recommended guilds and events
tipsReceive emails for advice and tricks
updates_and_announcementsReceive emails for updates and new features
family_center_digestReceive weekly emails for recent family activity

Notification Settings Object

User-wide notification settings.

Notification Settings Structure
FieldTypeDescription
flagsintegerThe notification settings flags
Notification Settings Flags
ValueNameDescription
1 << 4USE_NEW_NOTIFICATIONSWhether to separate unreads from the overall message notification level
1 << 5MENTION_ON_ALL_MESSAGESWhether to increment the mention count on all messages in channels with a message notification level of ALL_MESSAGES
Example Notification Settings
{ "flags": 16 }

Notification Settings Snapshot Object

A snapshot of the user's guild settings.

Notification Settings Snapshot Structure
FieldTypeDescription
idsnowflakeThe ID of the snapshot
label?stringThe label of the snapshot
recorded_atISO8601 timestampWhen the snapshot was recorded
lengthintegerThe length of the snapshot in bytes
Example Notification Settings Snapshot
{
"id": "1189703042711425185",
"label": "Before the Great Mute",
"recorded_at": "2023-12-27T22:55:08.998082+00:00",
"length": 145750
}

User Guild Settings Object

Guild-specific settings for the current user.

User Guild Settings Structure
FieldTypeDescription
channel_overridesarray[channel override object]The overrides for channels
flagsintegerThe user guild settings flags
guild_id 1?snowflakeThe ID of the guild
hide_muted_channelsbooleanWhether to hide muted channels from the UI
message_notificationsintegerThe message notification level for the guild
mobile_pushbooleanWhether to send push notifications to mobile clients
mute_scheduled_eventsbooleanWhether new guild scheduled event notifications are muted
mutedbooleanWhether the guild is muted
mute_config?mute config objectThe mute metadata for the guild
notify_highlightsintegerThe highlight notification level for the guild
suppress_everyoneintegerWhether to suppress @everyone notifications
suppress_rolesintegerWhether to suppress role notifications
versionintegerThe version of guild settings

1 A value of null is used to indicate these settings are for the user's private channel notifications.

Partial User Guild Settings Structure

Used when modifying user guild settings.

FieldTypeDescription
channel_overrides?map[snowflake, channel override object]The channel overrides to modify
flags?integerThe user guild settings flags
hide_muted_channels?booleanWhether to hide muted channels from the UI
message_notifications?integerThe message notification level for the guild
mobile_push?booleanWhether to send push notifications to mobile clients
mute_scheduled_events?booleanWhether new guild scheduled event notifications are muted
muted?booleanWhether the guild is muted
mute_config??mute config objectThe mute metadata for the guild
notify_highlights?integerThe highlight notification level for the guild
suppress_everyone?integerWhether to suppress @everyone notifications
suppress_roles?integerWhether to suppress role notifications
Channel Override Structure
FieldTypeDescription
channel_idsnowflakeThe ID of the channel
collapsedbooleanWhether the category channel is collapsed
flags?integerThe channel override's flags
message_notificationsintegerThe message notification level for the channel
mutedbooleanWhether the channel is muted
mute_config?mute config objectThe mute metadata for the channel
Channel Override Flags
ValueNameDescription
1 << 9UNREADS_ONLY_MENTIONS 1This channel is marked unread on mentions
1 << 10UNREADS_ALL_MESSAGES 1This channel is marked unread on new messages
1 << 11FAVORITEDThis channel is favorited
1 << 12OPT_IN_ENABLEDThis channel is shown in the UI
1 << 13NEW_FORUM_THREADS_OFFThis thread-only channel is not marked unread when a thread is created
1 << 14NEW_FORUM_THREADS_ONThis thread-only channel is marked unread when a thread is created

1 When these flags are unset, unreads follow the message_notifications field.

User Guild Settings Flags
ValueNameDescription
1 << 11UNREADS_ALL_MESSAGES 1This guild is marked unread on new messages
1 << 12UNREADS_ONLY_MENTIONS 1This guild is marked unread on mentions
1 << 13OPT_IN_CHANNELS_OFFWhether to show all guild channels in the UI
1 << 14OPT_IN_CHANNELS_ONWhether to hide non-opted in channels in the UI

1 When these flags are unset, unreads follow the message_notifications field.

Highlight Level
ValueNameDescription
0DEFAULTDefault (same as ENABLED)
1DISABLEDSuppress highlights
2ENABLEDDon't suppress highlights
Example User Guild Settings
{
"guild_id": 373,
"suppress_everyone": false,
"suppress_roles": false,
"mute_scheduled_events": false,
"message_notifications": 1,
"flags": 0,
"mobile_push": true,
"muted": true,
"mute_config": {
"end_time": null,
"selected_time_window": -1
},
"hide_muted_channels": false,
"channel_overrides": [
{
"channel_id": "362165922212872202",
"message_notifications": 3,
"muted": false,
"mute_config": null,
"collapsed": true
}
],
"notify_highlights": 0,
"version": 2016
}

Mute Config Object

The duration of a mute.

Mute Config Structure
FieldTypeDescription
end_time??ISO8601 timestampTimestamp representing when the mute ends
selected_time_window?integerDuration of the mute in seconds, or -1 for indefinite

Endpoints

Get User Settings Proto

GET/users/@me/settings-proto/{type}

Returns the requester's user settings protobuf for the specified type.

Response Body
FieldTypeDescription
settingsstringThe base 64-encoded serialized user settings protobuf

Modify User Settings Proto

PATCH/users/@me/settings-proto/{type}

Modifies the requester's user settings protobuf for the specified type. Fires a User Settings Proto Update and User Settings Update Gateway event.

JSON Params
FieldTypeDescription
settingsstringThe base-64 encoded serialized user settings protobuf modifications
required_data_version? 1integerThe required data version of the proto

1 When making offline edits, the required data version of the proto should be set to the last known version. This ensures that the client doesn't overwrite newer edits made on a different client on edit.

Response Body
FieldTypeDescription
settingsstringThe base-64 encoded serialized user settings protobuf
out_of_date?booleanWhether the user settings update was discarded due to an outdated required_data_version

Get User Settings

GET/users/@me/settings

Returns the requester's user settings object.

Modify User Settings

PATCH/users/@me/settings

Modifies the requester's user settings. Returns a user settings object on success. Fires a User Settings Proto Update and User Settings Update Gateway event.

JSON Params
FieldTypeDescription
activity_joining_restricted_guild_ids?array[snowflake]The IDs of guilds that will not be able to join your current activity
activity_restricted_guild_ids?array[snowflake]The IDs of guilds your activity presence will be hidden in
afk_timeout?integerDuration (in seconds) the user needs to be inactive until clients update their AFK state
allow_accessibility_detection?booleanWhether to allow Discord to track screen reader usage
animate_emoji?booleanWhether to play animated emojis in chat
animate_stickers?integerWhen to animate stickers in chat
contact_sync_enabled?booleanWhether to enable contact sync on Discord mobile
convert_emoticons?booleanWhether to convert emoticons into emojis (:) -> 🙂)
custom_status??custom status objectThe custom status of the user, used to sync presence across clients
default_guilds_restricted?booleanWhether to automatically disable DMs between you and members of new guilds you join
detect_platform_accounts?booleanWhether to automatically detect accounts from services like Steam and Blizzard when opening the Discord client
developer_mode?booleanWhether to enable developer mode in-client
disable_games_tab?booleanWhether to disable the showing of the Games tab
enable_tts_command?booleanWhether to allow TTS messages to be played/sent
explicit_content_filter?integerThe explicit content filter for explicit content in all messages
friend_discovery_flags?integerThe friend discovery flags
friend_source_flags?friend source flags objectThe friend source flags
gif_auto_play?booleanWhether GIFs are automatically played when Discord client is in focus
guild_folders?array[guild folder object]The guild folders
inline_attachment_media?booleanWhether to display attachments when they are uploaded in chat
inline_embed_media?booleanWhether to display videos and images from links posted in chat
locale?stringThe language option chosen by the user
message_display_compact?booleanWhether to use the compact Discord display mode
native_phone_integration_enabled?booleanWhether to enable the new Discord mobile phone number friend requesting feature
passwordless? (deprecated)booleanWhether to enable passwordless login
render_embeds?booleanWhether to render message embeds
render_reactions?booleanWhether to render message reactions
restricted_guilds?array[snowflake]The IDs of guilds that you will not receive DMs from
show_current_game?booleanWhether to display the currently active game in user presence
status?stringThe status of the user, used to sync presence across clients
stream_notifications_enabled?booleanWhether to receive stream notifications for friends
theme?stringThe theme
timezone_offset?integerThe timezone offset from UTC to use (in minutes)
view_nsfw_guilds?booleanWhether NSFW guilds are shown on iOS

Get User Consents

GET/users/@me/consent

Returns a consents object representing the tracking features the requestor has consented to.

Modify User Consents

POST/users/@me/consent

Modifies the requestor's tracking consent status. Returns a consents object on success.

JSON Params
FieldTypeDescription
grantarray[string]The consent types to grant
revokearray[string]The consent types to revoke

Get Email Settings

GET/users/@me/email-settings

Returns the requester's email settings object.

Modify Email Settings

PATCH/users/@me/email-settings

Modifies the requester's email settings. Returns an email settings object on success.

JSON Params
FieldTypeDescription
settingspartial email settings objectThe email settings to modify

Modify Notification Settings

PATCH/users/@me/notification-settings

Replaces the notification settings for the user. Returns a notification settings object on success. Fires a Notification Settings Update Gateway event.

JSON Params
FieldTypeDescription
flags??integerThe notification settings flags to set

Get Notification Settings Snapshots

GET/users/@me/notification-settings/snapshots

Returns a list of notification settings snapshot objects for the user.

Create Notification Settings Snapshot

POST/users/@me/notification-settings/snapshots

Creates a new notification settings snapshot for the user. Returns a list of notification settings snapshot objects on success.

JSON Params
FieldTypeDescription
label??stringThe label of the snapshot (max 100 characters)

Restore Notification Settings Snapshot

POST/users/@me/notification-settings/snapshots/{snapshot.id}/restore-guilds

Restores a notification settings snapshot. Returns a mapping of guild IDs to user guild settings objects on success. Fires multiple User Guild Settings Update Gateway events.

Delete Notification Settings Snapshot

GET/users/@me/notification-settings/snapshots/{snapshot.id}

Deletes a notification settings snapshot. Returns a list of notification settings snapshot objects on success.

Modify User Guild Settings

PATCH/users/@me/guilds/{guild.id}/settings

Modifies a guild's settings. Accepts a partial user guild settings object. Returns a user guild settings object on success. Fires a User Guild Settings Update Gateway event.

Bulk Modify User Guild Settings

PATCH/users/@me/guilds/settings

Modifies multiple guilds' settings. Returns a list of user guild settings objects on success. Fires multiple User Guild Settings Update Gateway events.

JSON params
FieldTypeDescription
guildsmap[snowflake, partial user guild settings object]The user guild settings to modify