Widgets
Widgets are a way for users to showcase their gaming interests on their profile. They can display information about the user's favorite games, games they are currently playing, games they want to play, and more. Widgets can also be created by applications to display specific game details.
Game Widget Object
A tile on a user's profile showcasing their gaming interests.
| Field | Type | Description |
|---|---|---|
| data | game widget data object | The data of the widget |
| id | snowflake | The ID of the widget |
| updated_at | ISO8601 timestamp | When the widget was last updated |
Game Widget Data Structure
| Field | Type | Description |
|---|---|---|
| type | string | The type of the game widget |
| games? | array[game widget game object] | The widget's games (not applicable for application widgets) |
| application_id? | snowflake | The application ID (only applicable for application widgets) |
Game Widget Type
| Value | Description |
|---|---|
| favorite_games 1 | Favourite game (max 1) |
| played_games | Games I Like (max 20) |
| current_games 1 | Games in rotation (max 5) |
| want_to_play_games | Want to play (max 20) |
| application | Specific game details |
1 Rendered as a detailed game widget in the user profile.
Game Widget Game Structure
| Field | Type | Description |
|---|---|---|
| game_id | snowflake | The application ID of the game |
| comment? | ?string | Optional 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
| Value | Description |
|---|---|
| noob 1 | Noob |
| learning_the_ropes 1 | Learning The Ropes |
| casual 1 | Casual |
| getting_good 1 | Getting Good |
| intermediate 1 | Intermediate |
| expert 1 | Expert |
| better_than_you 1 | Better Than You |
| obsessed | Obsessed |
| love_it | Love It |
| kind_of_love_it | Kind of Love it |
| kind_of_hate_it | Kind of Hate it |
| rage_quitting | Rage Quitting |
| like_it | Like It |
| frustrated | Frustrated |
| too_easy | Too Easy |
| looking_for_group | Looking For Group |
| open_to_play | Open To Play |
| looking_for_tips | Looking For Tips |
| open_to_teach | Open To Teach |
| looking_to_discuss | Looking 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"] } ] }}User Application Identity Object
The user's external identity for a connected application.
User Application Identity Structure
| Field | Type | Description |
|---|---|---|
| application_id | snowflake | The ID of the application |
| provider_issued_user_id | string | The ID of the user on the external identity provider |
| profile? | partial user application profile object | The primary user application profile of the user |
| profiles? | array[partial user application profile object] | The user application profile |
Partial User Application Profile Structure
| Field | Type | Description |
|---|---|---|
| username | ?string | The external username of the user |
| metadata | ?string | Custom metadata |
| data? | user application profile data object | The user application data |
| data_trusted? | boolean | Whether the data is trusted (set by application bot) |
| connection_visible | boolean | Unknown |
User Application Profile Data Structure
| Field | Type | Description |
|---|---|---|
| primary? | user application profile primary data object | The primary user application data |
| dynamic? | array[user application profile dynamic data object] | The dynamic user application data |
User Application Profile Primary Data Structure
| Field | Type | Description |
|---|---|---|
| season? | string | The game season |
| rank_name? | string | The current rank the user has in-game |
| highest_rank? | string | The highest rank the user ever had in-game |
| featured_played_character? | string | The name of the featured played character |
| featured_played_character_image? | unfurled media item object | The image of the featured played character |
| playtime_hours? | float | Duration (in hours) that the user has played the game for |
| total_wins? | integer | Number of total wins |
| current_period_wins? | integer | Number of wins in the current period |
| total_games? | integer | Number of total matches |
| current_period_games? | integer | Number of matches in the current period |
| total_kills? | integer | Number of total kills |
| current_period_kills? | integer | Number of kills in the current period |
| total_assists? | integer | Number of total assists |
| current_period_assists? | integer | Number of assists in the current period |
| total_deaths? | integer | Number of total deaths |
| current_period_deaths? | integer | Number of deaths in the current period |
| server_name? 1 | string | The name of the game server |
| user_id? 1 | string | The ID of the in-game account |
| union_level? 1 | string | The union level |
| total_resonators? 1 | integer | Number of total resonators |
| total_achievements? 1 | integer | Number of total achievements |
| total_echoes? 1 | integer | Number of total echoes |
| login_days? 1 | integer | Number of login days |
| data_bank_level? 1 | string | The data bank level |
1 Only applicable for the "Wuthering Waves" application.
User Application Profile Dynamic Field Type
| Value | Name | Data |
|---|---|---|
| 1 | TEXT | String structure |
| 2 | NUMBER | Number structure |
| 3 | IMAGE | Image structure |
Dynamic String Data Structure
| Field | Type | Description |
|---|---|---|
| name | string | The name of the dynamic data |
| value | string | The value of the dynamic data |
| type | integer | The type of the dynamic data |
Dynamic Number Data Structure
| Field | Type | Description |
|---|---|---|
| name | string | The name of the dynamic data |
| value | integer | The value of the dynamic data |
| type | integer | The type of the dynamic data |
Dynamic Image Data Structure
| Field | Type | Description |
|---|---|---|
| name | string | The name of the dynamic data |
| value | unfurled media item object | The value of the dynamic data |
| type | integer | The type of the dynamic data |
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}Widget Config Object
A config for a widget that is displayed on the user's profile.
Widget Config Structure
| Field | Type | Description |
|---|---|---|
| application_id | snowflake | The ID of the application the widget config is for |
| config_id | snowflake | The ID of the widget config |
| display_name | string | The display name of the widget config |
| surfaces | map[string, surface object] | The surfaces the widget config is displayed on |
| status | string | The status of the widget config |
| resolved_assets? | array[application asset object] | The resolved assets for the widget config |
| published_at | ?ISO8601 timestamp | When the widget config was published |
| updated_at | ISO8601 timestamp | When the widget config was last updated |
Widget Surface Structure
| Field | Type | Description |
|---|---|---|
| layout | string | The layout used for this surface |
| components | map[string, widget component object] | The components of the surface |
Widget Surface Component Structure
| Field | Type | Description |
|---|---|---|
| fields | map[string, widget component field object] | The fields of the component |
Widget Surface Component Field Structure
| Field | Type | Description |
|---|---|---|
| value_type | string | The type of the value |
| presentation_type | string | The presentation type of the value |
| value | string | The actual value or reference key to the data |
| fallback? | widget component field object | The fallback value if the value is unavailable |
Widget Surface Value Type
| Value | Description |
|---|---|
| data | The value is taken from the user profile identity data |
| custom_string | The value is a custom string |
| application_asset | The value is taken from the resolved application assets |
| application_localized_string | Unknown |
Widget Layout Definition Structure
| Field | Type | Description |
|---|---|---|
| surface | string | The surface the layout applies to |
| components | map[string, widget layout component object] | The components of the layout |
| key | string | The layout definition key |
| display_name | string | The display name of the layout definition |
Widget Layout Component Structure
| Field | Type | Description |
|---|---|---|
| display_name | string | The display name of the component |
| required | boolean | Whether the component is required |
| fields | map[string, widget layout field object] | The fields within the component |
Widget Layout Field Structure
| Field | Type | Description |
|---|---|---|
| display_name | string | The display name of the field |
| required | boolean | Whether the field is required |
| allowed_presentation_types | array[string] | Allowed presentation types for the field |
Widget Config Status
| Value | Description |
|---|---|
| published | The widget config is published |
| draft | The widget config is a draft |
Presentation Type
| Value | Description |
|---|---|
| image | The value is an image |
| number | The value is a number |
| text | The value is a string of text |
| duration | The value is a duration |
Surface Type
| Value | Description |
|---|---|
| widget_top | The content displayed at the top of the widget |
| widget_bottom | The content displayed at the bottom of the widget |
| add_widget_preview | The content displayed when adding a widget |
| mini_profile | The content displayed in the mini profile |
| activity_accessory | The content displayed as an accessory to the user's activity |
Layout Definition Key
| Value | Description |
|---|---|
| activity_accessory_stat | The layout definition for the activity accessory surface |
| add_widget_preview_contained | The layout definition for the add widget preview surface with the avatar being contained in a box |
| add_widget_preview_hero | The layout definition for the add widget preview surface with the avatar being the main focus |
| mini_profile_contained_stat | The layout definition for the mini profile surface with the avatar being contained in a box |
| mini_profile_hero_stat | The layout definition for the mini profile surface with the avatar being the main focus |
| widget_bottom_collection | The layout definition for the widget bottom surface when the widget is part of a collection |
| widget_bottom_progress | The layout definition for the widget bottom surface when the widget is showcasing progress towards a goal |
| widget_bottom_stats | The layout definition for the widget bottom surface when the widget is showcasing stats |
| widget_top_contained | The layout definition for the widget top surface with the avatar being contained in a box |
| widget_top_hero | The layout definition for the widget top surface with the avatar being the main focus |
Endpoints
Modify Profile Widgets
PUT/users/@me/widgetsReplaces the user's profile widgets, and returns a list of game widget which has been put on the user's profile.
JSON Params
| Field | Type | Description |
|---|---|---|
| widgets | array[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-gamesReturns suggested applications for the current user's profile game widgets.
Response Body
| Field | Type | Description |
|---|---|---|
| suggested_games | array[snowflake] | The suggested game application IDs |
| suggested_wishlist_games | array[snowflake] | The suggested wishlist game application IDs |
Get Bulk Application Identities
POST/application-identitiesReturns a list of partial application identity objects connected to the authorized application.
JSON Params
| Field | Type | Description |
|---|---|---|
| user_ids 1 | array[snowflake] | The IDs of the users to retrieve identities for (1-100) |
1 Invalid IDs are ignored.
Partial Application Identity Structure
| Field | Type | Description |
|---|---|---|
| user_id | snowflake | The ID of the user |
| external_user_id | string | The ID of the user on the external identity provider |
Get User Application Profile
GET/applications/{application.id}/users/{user.id}/identities/{external_user_id}/profileReturns an user application profile object for the given application, user, and external user IDs.
Modify User Application Profile
PATCH/applications/{application.id}/users/{user.id}/identities/{external_user_id}/profileModifies the user's application profile. Returns an user application profile object on success.
JSON Params
| Field | Type | Description |
|---|---|---|
| username? | string | The username (max 1024) |
| metadata? | object | Custom metadata for the user application profile (max 25 keys, 1024 characters per key and value) |
| data? | user application profile data object | The user application profile data to set |
Get User Application Identities
GET/users/{user.id}/application-identitiesReturns the user's external identities for connected applications.
Query String Params
| Field | Type | Description |
|---|---|---|
| with_profiles? | boolean | Whether to include application profile information (default false) |
Response Body
| Field | Type | Description |
|---|---|---|
| identities | array[user application identity object] | The identities for the user |
Modify User Application Profile Config
PATCH/users/@me/application-identities/{application.id}/{external_user_id}/configModifies the user's application profile config. Returns a 204 empty response on success.
JSON Params
| Field | Type | Description |
|---|---|---|
| connection_visible? | string | Whether the connection is visible |
Get Featured Application Widget Configs
GET/widget-configs/featuredReturns featured widget configs.
Response Body
| Field | Type | Description |
|---|---|---|
| application_ids | array[snowflake] | The application IDs of the featured widget configs |
| configs | map[snowflake, array[widget config object]] | The featured widget configs mapped by application ID |
Get Developer Application Widget Configs
GET/widget-configs/developerReturns widget configs of the apps the user has access to.
Response Body
| Field | Type | Description |
|---|---|---|
| configs | map[snowflake, array[widget config object]] | The featured widget configs mapped by application ID |
Get Layout Definitions
GET/widget-configs/layout-definitionsReturns a map of widget layout definitions for widget configs.
Response Body
| Field | Type | Description |
|---|---|---|
| configs | map[snowflake, array[widget config object]] | The featured widget configs mapped by application ID |
Get Application Widget Configs
GET/applications/{application.id}/widget-configsReturns a list of widget configs for the specified application.
Create Application Widget Config
POST/applications/{application.id}/widget-configsCreates a new widget config for the specified application. Returns the created widget config on success.
JSON Params
| Field | Type | Description |
|---|---|---|
| display_name | string | The display name of the widget config (max 100 characters) |
| surfaces | map[string, widget surface object] | The surfaces mapped by surface type |
Delete Application Widget Config
DELETE/applications/{application.id}/widget-configs/{widget_config.id}Deletes the widget config. Returns a 204 empty response on success.
Modify Application Widget Config
PATCH/applications/{application.id}/widget-configs/{widget_config.id}Modifies the widget config. Returns the updated widget config on success.
JSON Params
| Field | Type | Description |
|---|---|---|
| display_name? | string | The display name of the widget config (max 100 characters) |
| surfaces | map[string, widget surface] | The surfaces mapped by surface type |
Publish Application Widget Config
POST/applications/{application.id}/widget-configs/{widget_config.id}/publishPublishes the widget config. Returns the widget config on success.
Unpublish Application Widget Config
POST/applications/{application.id}/widget-configs/{widget_config.id}/unpublishUnpublishes the widget config. Returns the widget config on success.