NONE and the provider_issued_user_id from the request path. If an Application Identity already exists for the user and application, profile updates must use a provider_issued_user_id that matches one of the user’s existing application identities.
Application Identity Object
Application Identity Structure
Application Identity Profile Object
Application Identity Profile Structure
Profile Data Object
Profile Data Structure
Primary Profile Data Object
Pre-configured fields meant to be generic across many games. All fields are optional.Primary Profile Data Structure
Dynamic Field Object
Dynamic fields let you specify custom stats when the pre-configured primary fields don’t cover your needs. Each dynamic field has atype that determines its value format. The name is the data key you reference in the widget editor when configuring a User Data field. It is not shown to players; display labels are configured on the widget’s fields in the editor.
Dynamic Field Types
Dynamic String Field Structure
Dynamic Number Field Structure
Dynamic Media Field Structure
Media Object
Media Structure
Media URLs must be reachable from the public internet. Discord’s media unfurler fetches the URL from our servers, not from the user’s client, so
localhost or LAN-only URLs won’t load. For local development, expose your assets via a tunnel like Cloudflare Tunnel or ngrok.Example Application Identity Profile Object
Update Application Identity Profile
Updates the profile data on the user’s matching Application Identity record. Returns an Application Identity Profile object. If the user does not have an Application Identity for your application yet, the first successful update creates a profile-only Application Identity with provider typeNONE and the provider_issued_user_id from the path. If the user already has an Application Identity for your application, the provider_issued_user_id in the path must match an existing Application Identity.
Requires a bot token for authorization. The target user must have authorized the application via OAuth2 with the application_identities.write scope. If you are building a Social SDK integration, this scope is included in the Social SDK scopes.
Path Parameters
JSON Params
Limits
The 10 KB limit applies to the serialized
data object in your request, not the raw HTTP body.
Response
Returns201 Created on first write, 204 No Content on subsequent updates.
Error Responses
The Application Identity conflict errors above usually mean the requested
provider_issued_user_id does not match the user’s current Application Identity state. See Resolving External ID Conflicts for cleanup guidance.
Get Application Identity Profile
Returns the Application Identity Profile object stored on the matching Application Identity for the specified user and application. Requires a bot token for authorization. The target user must have authorized the application via OAuth2 with theapplication_identities.write scope. If you are building a Social SDK integration, this scope is included in the Social SDK scopes.
Path Parameters
Get Application Identities by User ID
Returns the application identities for the specified user and application. Use this endpoint to discover the exact external ID values (provider_type, provider_issued_user_id, and optional provider_id) for a user’s application identities.
This endpoint does not return profile data. To read game stats for a specific identity, use Get Application Identity Profile.
To delete an identity, use the returned values with Delete Application Identity.
Requires a bot token for authorization. The caller must authenticate as the bot for {application_id} and can only fetch identities for its own application. The target user must have authorized the application via OAuth2 with the application_identities.write scope. If you are building a Social SDK integration, this scope is included in the Social SDK scopes.
Path Parameters
Response
Returns200 OK with a wrapped list of Application Identity objects. provider_id is omitted from an identity when it is absent or empty.
Get Application Identities by External ID
Returns the application identities for the user/application record currently associated with the specified external ID (combination ofprovider_type, provider_issued_user_id, and optional provider_id). Use this endpoint when you need to resolve the Discord user_id for an Application Identity but only know the external ID fields.
This endpoint does not return profile data. To read game stats for a specific identity, use Get Application Identity Profile.
To delete an identity, use the returned values with Delete Application Identity.
Requires a bot token for authorization. The caller must authenticate as the bot for {application_id} and can only fetch identities for its own application. The matched user must have authorized the application via OAuth2 with the application_identities.write scope. If you are building a Social SDK integration, this scope is included in the Social SDK scopes.
Path Parameters
Query Params
Response
Returns200 OK with a wrapped list of Application Identity objects. provider_id is omitted from an identity when it is absent or empty. If no identity matches the external account key, identities is empty.
Delete Application Identity
Deletes one Application Identity and its associated profile data for the specified user and application. Use this endpoint when a stale provider-issued user ID prevents you from writing profile data for the user’s current identity. Uses the same bot/application authorization and OAuth2 authorization checks as Get Application Identities.Path Parameters
JSON Params
The JSON body is optional.Deletion Rules
Deletion is blocked if it would remove the user’s last account-linking identity for the application. Profile-onlyNONE identities can be deleted. Deleting an identity also deletes the profile data stored on that identity.
Response
Returns204 No Content on success.