Skip to content
Fluxer API

User settings

These routes change your account-wide user settings and the notification settings for each guild and for DMs. Only user tokens can call them, and bot and OAuth2 tokens get 403 ACCESS_DENIED.

ValueDescription
onlineShown as online
dndShown as do not disturb
idleShown as idle
invisibleShown as offline to everyone else while the account stays connected
ValueDescription
darkDark theme
dark_legacyPrevious dark theme
coalCoal theme
lightLight theme
systemFollows the operating system
ValueNameDescription
0ALL_MESSAGESNotify for every message
1ONLY_MENTIONSNotify only for mentions
2NO_MESSAGESDo not notify for messages
3INHERITUse the parent setting

Mute expiry for a guild, for DMs, for a channel override or for a thread member.

FieldTypeDescription
end_time?ISO8601 timestampWhen the mute stops, or null for no expiry
selected_time_windowintegerThe mute duration the client selected, or 0

The input form of the guild mute configuration object.

FieldTypeDescription
end_time?1?ISO8601 timestamp | integerWhen the mute stops, or null for no expiry
selected_time_windowintegerThe mute duration the client selected

1 An ISO 8601 string or Unix milliseconds

Notification settings for one channel.

FieldTypeDescription
collapsedbooleanWhether the channel category is collapsed
message_notificationsintegerNotification level
mutedbooleanWhether the channel is muted
mute_config?guild mute configuration objectThe mute configuration, or null when none is stored
unread_badges?integerNotification level for unread badges, or null to inherit
flags?1integerNew post notification flags, NEW_FORUM_THREADS_OFF (1 << 13) and NEW_FORUM_THREADS_ON (1 << 14)

1 Only in guild settings, when the value is not zero and the session declares the channel_threads client capability

Channel notification override input object

Section titled “Channel notification override input object”

The input form of the channel notification override object.

FieldTypeDescription
collapsedbooleanWhether the channel category is collapsed
message_notificationsintegerNotification level
mutedbooleanWhether the channel is muted
mute_config??guild mute configuration input objectThe mute configuration, or null to clear it
unread_badges??integerNotification level for unread badges, or null to inherit
flags?1integerNew post notification flags

1 Fluxer keeps only NEW_FORUM_THREADS_OFF and NEW_FORUM_THREADS_ON. It ignores flags in DM settings and when the session doesn't declare channel_threads. An omitted or ignored flags keeps the stored value

Notification settings for one guild, or for all DMs when guild_id is null.

FieldTypeDescription
guild_id?snowflakeThe ID of the guild, or null for DM settings
message_notificationsintegerThe default notification level
mutedbooleanWhether the guild or DMs are muted
mute_config?guild mute configuration objectThe mute configuration, or null when none is stored
mobile_pushbooleanWhether push notifications are enabled
suppress_everyonebooleanWhether @everyone mentions are suppressed
suppress_rolesbooleanWhether role mentions are suppressed
hide_muted_channelsbooleanWhether muted channels are hidden
channel_overrides1?map[snowflake, channel notification override object]The per-channel overrides, or null when none are set
unread_badges?integerThe default notification level for unread badges, or null to follow message_notifications
version2integerThe revision of this settings object

1 Without channel_threads, a session gets no override for a forum or media channel

2 Increases on every write. Ignore a User Guild Settings Update whose version is lower than the one you have

suppress_everyone and suppress_roles apply only in guilds, and a suppressed mention doesn't add to mention_count or recent mentions.

{
"guild_id": null,
"message_notifications": 1,
"muted": false,
"mute_config": null,
"mobile_push": true,
"suppress_everyone": false,
"suppress_roles": false,
"hide_muted_channels": false,
"channel_overrides": null,
"unread_badges": null,
"version": 4
}

Both notification settings routes accept these fields. An omitted field keeps its stored value.

FieldTypeDescription
message_notifications?integerThe default notification level, default INHERIT
muted?booleanWhether the guild is muted, default false
mute_config??guild mute configuration input objectThe mute configuration, or null to clear it
mobile_push?booleanWhether push notifications are enabled, default true
suppress_everyone?booleanWhether @everyone mentions are suppressed, default false
suppress_roles?booleanWhether role mentions are suppressed, default false
hide_muted_channels?booleanWhether muted channels are hidden, default false
channel_overrides?1?map[snowflake, channel notification override input object]The complete per-channel override map, or null to clear it
unread_badges??integerThe default notification level for unread badges, or null to follow message_notifications

1 The map replaces every override, and an empty map clears them. Without channel_threads, the stored overrides of forum and media channels stay

The input form of the user settings object. An omitted field keeps its stored value, and a field you send replaces the stored value in full.

FieldTypeDescription
status?stringPresence status, not offline
status_resets_at?1?ISO8601 timestamp | integerThe time your client should switch status to status_resets_to, or null to clear it
status_resets_to??stringPresence status to set at status_resets_at, not offline, or null to clear it
theme?stringTheme value
locale?2stringInterface locale
restricted_guilds?3array[snowflake]The guilds where member direct messages are restricted (max 200)
bot_restricted_guilds?3array[snowflake]The guilds where bot direct messages are restricted (max 200)
default_guilds_restricted?booleanWhether new guilds restrict member direct messages
bot_default_guilds_restricted?booleanWhether new guilds restrict bot direct messages
inline_attachment_media?booleanWhether attachment media is shown inline
inline_embed_media?booleanWhether embed media is shown inline
gif_auto_play?booleanWhether GIFs play automatically
render_embeds?booleanWhether message embeds are shown
render_reactions?booleanWhether message reactions are shown
animate_emoji?booleanWhether custom emoji animate
animate_stickers?integerSticker animation setting
render_spoilers?integerSpoiler rendering setting
message_display_compact?booleanWhether messages use compact display
flags?4integerFriend source flags
friend_source_flags?4integerFriend source flags
incoming_call_flags?5integerIncoming call flags
group_dm_add_permission_flags?5integerGroup DM add permission flags
guild_folders?array[guild folder input object]The complete guild folder layout (max 100)
custom_status??custom status input objectThe custom status, or null to clear it
afk_timeout?integerIdle seconds before the account is shown as away (60-600)
time_format?integerTime format setting
developer_mode?booleanWhether developer mode is on
trusted_domains?6array[string]The trusted external link domains (max 1000, each 1-253 characters)
default_hide_muted_channels?booleanWhether new guilds hide muted channels
sensitive_content_friend_dm_filter?7integerSensitive media filter for friend direct messages
sensitive_content_non_friend_dm_filter?7integerSensitive media filter for non-friend direct messages
sensitive_content_guild_filter?8integerGuild sensitive media filter
suppress_unprivileged_self_mentions?9booleanWhether direct and reply mentions from unprivileged users are suppressed
suppress_unprivileged_self_mentions_bypass_user_ids?9?array[snowflake]The users exempt from mention suppression
staff_dm_access_user_ids?9?array[snowflake]The users granted staff direct message access
profile_privacy?integerProfile privacy level
privacy_setup_version?integerThe privacy setup version the user reviewed (1-1000), which also sets privacy_setup_completed_at to now
synced_preferences?10?stringThe base64 fluxer.user.preferences.v1.SyncedPreferences snapshot, or null to clear it
synced_preferences_base_hash?11stringThe lowercase hex SHA-256 of the decoded bytes of the stored snapshot the new one was built on
guild_positions?array[snowflake]Accepted and ignored (max 200)
default_share_voice_activity?booleanAccepted and ignored

1 An ISO 8601 string or Unix milliseconds. Anything else fails with the field code INVALID_ISO_TIMESTAMP

2 Must match a supported locale exactly. It also sets the language of emails Fluxer sends you

3 Duplicates are removed

4 flags is a legacy alias for friend_source_flags, which wins when both are sent

5 When the value has FRIENDS_ONLY, Fluxer keeps only that flag. Otherwise, when it has NOBODY, Fluxer keeps only NOBODY. incoming_call_flags also keeps SILENT_EVERYONE

6 The single entry * trusts every domain. Combining it with another entry fails with the field code INVALID_TRUSTED_DOMAINS

7 An account that isn't a verified adult can set only blur or block, and any other value fails with the field code AGE_RESTRICTED

8 An account that isn't a verified adult can't change this field, and it fails with the field code AGE_RESTRICTED

9 Only staff accounts can set these fields

10 At most 524288 bytes once decoded. A value that is too large fails with the field code TOO_LARGE, and one that doesn't decode fails with INVALID_FORMAT

11 Fluxer checks the hash only when synced_preferences is also sent. It hashes the stored snapshot exactly as the settings object returns it, and an empty snapshot hashes as zero bytes. When the hashes differ, Fluxer writes nothing and returns 409 SYNCED_PREFERENCES_CONFLICT. Without this field, the new snapshot replaces the stored one unchecked

One folder of a submitted guild folder layout.

FieldTypeDescription
id1integerThe ID of the folder
name??stringThe name of the folder (0-100 characters)
color?2?integerThe packed 24-bit RGB color (0-16777215), default 0
flags?integerGuild folder flags, default 0
icon?stringGuild folder icon, default folder
guild_idsarray[snowflake]The guild IDs in display order (max 200)

1 At least -1, which is the uncategorized folder

2 Out-of-range values fail with COLOR_VALUE_TOO_LOW or COLOR_VALUE_TOO_HIGH

Fluxer adds an empty uncategorized folder when your layout has none. A guild ID in more than one folder stays in only one of them. A folder with a name wins over one without, then any folder wins over the uncategorized folder, then the earlier folder wins.

Joining a guild adds it to the uncategorized folder. Leaving a guild removes it from every folder and deletes every folder left empty except the uncategorized folder. Both send User Settings Update.

A custom status in a settings update.

FieldTypeDescription
text?1?stringThe status text (1-128 characters)
expires_at?2?ISO8601 timestamp | integerThe expiry as a timestamp string or Unix milliseconds, or null for no expiry
emoji_id?3?snowflakeThe custom emoji to show
emoji_name?3?stringThe Unicode emoji to show (1-32 characters)

1 Blocked text or links fail with 403 CONTENT_BLOCKED

2 Must be in the future

3 emoji_name is ignored when emoji_id is set. An unknown emoji_id fails with CUSTOM_EMOJI_NOT_FOUND. Fluxer drops the emoji for an account whose feature_global_expressions limit is 0

Settings can keep a custom status after it expires. Hide it once expires_at is in the past.

A new account starts with these settings.

SettingInitial value
ThemeThe theme chosen at registration, or dark
Statusonline
RenderingEverything shown and animated, spoilers hidden until clicked
Incoming calls and group DM additionsFriends only
Guild DM restrictionsNone for members and bots
Guild foldersOne empty uncategorized folder
AFK timeout600 seconds
Time formatAutomatic
Profile privacyVisible to all guild members
Voice activity sharingOn
Friend sourcesMutual friends and mutual guilds, and anyone for a verified adult
Sensitive media filtersFriend DMs show for a verified adult and blur otherwise, non-friend DMs block, guilds blur
GET/v1/users/@me/settings

Returns the user settings object.

StatusBodyCondition
200user settings objectSettings were returned
404error responseUNKNOWN_USER when the account has no settings record

The rate limit is 40 requests per 10 seconds, on the user:settings:get bucket.

PATCH/v1/users/@me/settings

Modifies the account-wide settings and returns the full user settings object. Sends User Settings Update, and also User Update when the locale changes.

The status you set applies to every session of the account.

The body uses the user settings update object.

StatusBodyCondition
200user settings objectSettings were applied
400error responseINVALID_FORM_BODY or VALIDATION_ERROR when a field is invalid, with the field code from the footnotes
403error responseCONTENT_BLOCKED for blocked status text
403error responseACCOUNT_LIMITED when a limited account sets a custom status
404error responseUNKNOWN_USER when the account has no settings record
409error responseSYNCED_PREFERENCES_CONFLICT when synced_preferences_base_hash doesn't match the stored snapshot

The rate limit is 20 requests per 10 seconds, on the user:settings:update bucket.

PUT/v1/users/@me/settings/voice-activity-sharing

Sets the default for sharing voice activity, applies it to your side of every friendship and returns your user object. Sends Relationship Update and User Update. When the default changes, it also sends User Settings Update.

You can change this once every 24 hours, even to the same value. last_voice_activity_sharing_change_at on the user object has the time of the last change.

FieldTypeDescription
share_voice_activitybooleanWhether voice activity is shared
StatusBodyCondition
200user objectThe new sharing state was applied
400error responseINVALID_FORM_BODY with VOICE_ACTIVITY_SHARING_ON_COOLDOWN and retry_after on share_voice_activity during the cooldown
404error responseUNKNOWN_USER when the account has no settings record

The rate limit is 20 requests per 10 seconds, on the user:settings:update bucket.

PATCH/v1/users/@me/guilds/@me/settings

Modifies and returns the user guild settings for direct messages and group DMs, with guild_id null. Sends User Guild Settings Update to your own sessions.

The body uses the guild settings update fields.

StatusBodyCondition
200user guild settings objectThe settings were applied

The rate limit is 30 requests per 10 seconds, on the user:guild_settings:update bucket.

PATCH/v1/users/@me/guilds/{guild_id}/settings

Modifies and returns the user guild settings for a guild. Sends User Guild Settings Update to your own sessions.

The body uses the guild settings update fields.

StatusBodyCondition
200user guild settings objectThe settings were applied

The rate limit is 30 requests per 10 seconds, on the user:guild_settings:update bucket.