Updating a user's Presence via REST

This topic provides example code for updating Rich Presence strings.

To update a Rich Presence string in your title, call the Write Title URI with the appropriate parameters in a JSON object.

This RESTful call is also wrapped by Xbox Service APIs (XSAPIs). For information about the API that's related to this call, see XblPresenceSetPresenceAsync.

The URI looks like the following:

POST /users/xuid({xuid})/devices/current/titles/current

The following fields are only for setting Rich Presence strings. Other optional fields are related to writing presence for a title, but they're not listed in this topic.

TitleRequest object

Property Type Required Description
Activity ActivityRequest No The record that describes in-title information (Rich Presence and media information, if available)

ActivityRequest object

Property Type Required Description
richPresence RichPresenceRequest No The friendlyName of the Rich Presence string to use

RichPresenceRequest object

Property Type Required Description
Id String Yes The friendlyName of the Rich Presence string to use
Scid String Yes The scid that tells where the Rich Presence strings are defined

For example, to update the Rich Presence for the user whose xuid is 12345, the call looks like the following:

POST /users/xuid(12345)/devices/current/titles/current

It has the following JSON body.

          {
            activity:
            {
              richPresence:
              {
                id:"playingMap",
                scid:"0000-0000-0000-0000-01010101"
              }
            }
          }

Using the wrapper API, this is a call to XblPresenceSetPresenceAsync.

If you're keeping Xbox Player Data up to date, you don't have to reset the Rich Presence string to fill in the blank every time that the data changes. In the previous example, the current map is being used.

Presence looks up the data in Xbox Player Data when a user tries to read the string to fill in the current value. Even if the user is switching from one map to another, you don't have to reset the Rich Presence string in your game as long as you're sending the appropriate events to Xbox Player Data.

It might take a few seconds for the data to migrate through the Xbox Player Data system.

When someone attempts to read the Rich Presence of user 12345, the service looks at what locale is being requested and formats the string appropriately before returning it. In this case, suppose a user wants to read the en-US string.

Reading Rich Presence works as follows.

GET /users/xuid(12345)?level=all

For more information about this call, see GET (/users/xuid({xuid})).

The wrapper API for this is either XblPresenceGetPresenceAsync or XblPresenceGetPresenceForMultipleUsersAsync.

In the previous example, you've requested the PresenceRecord of the user, whose xuid is 12345. You've also requested that the level of detail be all.

If you didn't specify all, Rich Presence isn't returned. Instead, all returns the following in the JSON response.

          {
            xuid:"12345",
            state:"online",
            devices:
            [
              {
                type:"D",
                titles:
                [
                  {
                    id:"12345",
                    name:"Buckets are Awesome",
                    lastModified:"2022-08-17T07:15:23.4930000",
                    placement: "full",
                    state:"active",
                    activity:
                    {
                      richPresence:"Playing on map:Mountains"
                    }
                  }
                ]
              }
            ]
          }