Documenting the protocols, structures and concepts used by Hyperscape.
edit | blame | history | raw

Ubisoft Services: Endpoints: Stats & Player Data

This page documents the stats-related endpoints used by Hyper Scape, including profile stats, player entities, Ubisoft Connect (Club) actions/rewards, and account status.

Profile Stats

The game queries aggregate match stats via the profile stats endpoint.

Endpoint

GET /v1/profiles/stats?profileIds={profileId}&statNames={statNames}&spaceId={spaceId}

Host: public-ubiservices.ubi.com

Headers

Header Value
Authorization Ubi_v1 t={ticket}
Content-Type application/json
Ubi-AppId 69e55abd-5aca-4eee-be94-ce3944c72e73
Ubi-SessionId {sessionId}
Ubi-localeCode en-US

Query Parameters

Parameter Description
profileIds The player's profile UUID
statNames Comma-separated list of stat names to query
spaceId 3f28fbeb-1eaa-460f-9265-2ef2a47fd152

Known Stat Names

The game makes two separate stat requests:

Initial login (lobby load):
- TotalMatches

Career stats screen:
- TotalMatches
- TotalWinsMatchType.MatchType.arcade
- TotalWinsMatchType.MatchType.solo
- TotalWinsMatchType.MatchType.squad
- DamageDone
- FinalBlows
- Assists
- Revives

Example Response (Full Stats)

{
  "profiles": [
    {
      "profileId": "805f5ad9-1b7b-4a1d-8eb8-b040008e403f",
      "stats": {
        "Assists": {
          "value": "7",
          "startDate": "2019-01-01T01:00:00Z",
          "endDate": null,
          "obj": {},
          "lastModified": "2020-07-22T23:03:18.44Z"
        },
        "DamageDone": {
          "value": "1988",
          "startDate": "2019-01-01T01:00:00Z",
          "endDate": null,
          "obj": {},
          "lastModified": "2020-07-22T23:03:18.439Z"
        },
        "FinalBlows": {
          "value": "8",
          "startDate": "2019-01-01T01:00:00Z",
          "endDate": null,
          "obj": {},
          "lastModified": "2020-07-22T22:49:22.351Z"
        },
        "Revives": {
          "value": "1",
          "startDate": "2019-01-01T01:00:00Z",
          "endDate": null,
          "obj": {},
          "lastModified": "2020-07-22T19:49:16.333Z"
        },
        "TotalMatches": {
          "value": "14",
          "startDate": "2019-01-01T01:00:00Z",
          "endDate": null,
          "obj": {},
          "lastModified": "2020-07-22T23:03:18.44Z"
        }
      }
    }
  ]
}

Note: Stat values are returned as strings, not numbers.


Player Entities

The game stores per-player data as "entities" on the Ubisoft profile system. Each entity has a type, a name, a JSON obj payload, and a revision number for optimistic concurrency.

List All Entities

GET /v2/profiles/{profileId}/entities?spaceId={spaceId}&offset=0&limit=20

List Entities by Type

GET /v2/profiles/{profileId}/entities?type={type}&spaceId={spaceId}&offset=0&limit=20

Update Entity

PUT /v2/profiles/entities/{entityId}

The PUT body must include the current revision number. The server increments it on success.

Entity Types

The following entity types were observed for Hyper Scape:

Type Name Description
BlockList BlockList Player's blocked users list
PlayerBattlepassData PlayerBattlepassData Battle pass progress tracking
PlayerTutorialProgression PlayerTutorialProgression Tutorial completion flags
PlayerStats PlayerStats Playtime tracking (written by the game client)
PlayerLoadout contender Equipped items / loadout slots

PlayerStats Entity

This entity is read and written by the game client every session. It tracks playtime and is distinct from the profile stats endpoint above.

Entity ID (example): 617486ea-e941-4fd0-a322-24bc6aa9e8c9

Example Response

{
  "entities": [
    {
      "entityId": "617486ea-e941-4fd0-a322-24bc6aa9e8c9",
      "profileId": "805f5ad9-1b7b-4a1d-8eb8-b040008e403f",
      "spaceId": "3f28fbeb-1eaa-460f-9265-2ef2a47fd152",
      "type": "PlayerStats",
      "editable": true,
      "name": "PlayerStats",
      "tags": [],
      "obj": {
        "playerstats": [
          { "name": "pc_totaltime", "value": 13085 },
          { "name": "solotime", "value": 1709 },
          { "name": "squadtime", "value": 4964 }
        ]
      },
      "lastModified": "2026-02-17T06:53:17.897Z",
      "revision": 136
    }
  ]
}

PlayerStats Fields

Field Description
pc_totaltime Total time played on PC (seconds)
solotime Time played in solo mode (seconds)
squadtime Time played in squad mode (seconds)

Example PUT Request

The game client sends this on every session to update playtime:

{
  "profileId": "805f5ad9-1b7b-4a1d-8eb8-b040008e403f",
  "spaceId": "3f28fbeb-1eaa-460f-9265-2ef2a47fd152",
  "type": "PlayerStats",
  "name": "PlayerStats",
  "tags": [],
  "obj": {
    "playerstats": [
      { "name": "pc_totaltime", "value": 13085 },
      { "name": "solotime", "value": 1709 },
      { "name": "squadtime", "value": 4964 }
    ]
  },
  "revision": 136
}

PlayerBattlepassData Entity

Tracks which battle pass tier rewards the player has seen.

{
  "entityId": "51b7f3e3-c5e6-456c-983d-d47bce7289f8",
  "type": "PlayerBattlepassData",
  "name": "PlayerBattlepassData",
  "obj": {
    "seasonId": "d0127f6a-a802-430f-81b1-9cac9c45c156",
    "lastUnlockedFreeTierSeen": 2,
    "lastFreeTierRewardsSeen": 3,
    "lastPremiumTierRewardsSeen": 0
  },
  "revision": 8
}

PlayerTutorialProgression Entity

Tracks which tutorials and cinematics the player has completed. Uses hex hash IDs for most tutorial steps, plus two human-readable fields:

Field Value Description
IsCinematicCompleted 1 Intro cinematic watched
TutorialDone 1 Tutorial completed
0x000000417185FCF9 0/1 Tutorial step flag
0x000000417185FF49 0/1 Tutorial step flag
... ... Additional tutorial step flags

PlayerLoadout Entity

Stores the player's equipped items across all loadout slots:

{
  "entityId": "8d5152c2-138d-4f46-a470-65b81869c2ec",
  "type": "PlayerLoadout",
  "name": "contender",
  "obj": {
    "objects": [
      { "slotid": 0, "objid": "0x000000402BB7491A" },
      { "slotid": 1, "objid": "0x000000402BB6F408" },
      { "slotid": 3, "objid": "0x000000402BB5C386" }
    ],
    "emote": [],
    "weapon": [],
    "generic": []
  },
  "revision": 5
}

Slot IDs map to specific equipment positions (champion, hacks, weapons, skins, etc). The objid values are item hex IDs from the item catalog.


Ubisoft Connect (Club) Actions

The game fetches Ubisoft Connect challenges (called "actions") for the Hyper Scape space.

Endpoint

GET /v1/profiles/{profileId}/club/actions?fields=requiredActions,requiredRewards,requiredSpace,requiredForRewards&age=21&spaceId={spaceId}&limit=100&locale=en-US&onlyBadges=true

A second variant also fetches hidden actions:

GET /v1/profiles/{profileId}/club/actions?fields=requiredForActions,requiredForRewards,requiredSpace&age=21&spaceId={spaceId}&limit=100&locale=en-US&includeHidden=true

Example Action

{
  "spaceId": "3f28fbeb-1eaa-460f-9265-2ef2a47fd152",
  "profileId": "805f5ad9-1b7b-4a1d-8eb8-b040008e403f",
  "id": "1",
  "value": 0,
  "activationDate": "2020-08-10T22:57:25Z",
  "available": true,
  "name": "Ninety-eight to Go\u2026",
  "xp": 0,
  "description": "Eliminate the first of many, many contenders.",
  "isBadge": false,
  "completionDate": "2026-02-17T05:59:48.6116074Z",
  "statName": null,
  "statCompletionThreshold": null,
  "images": [
    {
      "type": "background",
      "url": "https://static8.cdn.ubi.com/u/Uplay/Games/Common/actions/Action.png"
    }
  ],
  "isCompleted": true,
  "requiredForRewards": [],
  "requiredForActions": [],
  "requiredSpace": null,
  "groups": []
}

Ubisoft Connect (Club) Rewards

The game fetches Ubisoft Connect rewards (downloadable items) for the Hyper Scape space.

Endpoint

GET /v1/profiles/{profileId}/club/rewards?age=21&spaceId={spaceId}&limit=100&locale=en-US&fields=requiredActions,requiredForActions,requiredSpaces

Example Reward

{
  "id": "APEX_WALLPAPER",
  "profileId": "805f5ad9-1b7b-4a1d-8eb8-b040008e403f",
  "value": 0,
  "creationDate": "2020-08-06T14:31:19.43Z",
  "typeId": 1,
  "typeName": "Downloadable",
  "name": "Exclusive HYPER SCAPE\u2122 Wallpaper Pack",
  "description": "An assortment of HYPER SCAPE\u2122 wallpapers to adorn desktop or mobile device.",
  "platformShared": true,
  "isOwned": true,
  "quantityPurchased": 1,
  "rewardLocation": "https://ubiservices.cdn.ubi.com/.../HYPERSCAPE_WALLPAPER.zip",
  "instruction": "Go to https://ubisoftconnect.com to download this reward.",
  "spaceId": "3f28fbeb-1eaa-460f-9265-2ef2a47fd152",
  "images": [
    {
      "type": "thumbnail",
      "url": "https://ubiservices.cdn.ubi.com/.../APEX_WALLPAPER_thumbnail.jpg"
    }
  ],
  "xp": 0,
  "requiredSpaces": { "ids": [], "accomplished": false },
  "requiredActions": { "accomplished": false, "requirements": [] },
  "requiredForActions": [],
  "groups": [],
  "quantityUsed": 0,
  "rarity": null
}

Account Status

The game periodically polls account status.

Endpoint

GET /v3/users/me?fields=status

Example Response

{
  "status": {
    "autoGeneratedUsername": false,
    "dateOfBirthApproximated": false,
    "invalidEmail": false,
    "missingRequiredInformation": false,
    "pendingDeactivation": false,
    "targetDeactivationDate": null,
    "recoveringPassword": false,
    "passwordUpdateRequired": false,
    "reserved": false,
    "changeEmailPending": false,
    "inactiveAccount": false,
    "generalStatus": "activated",
    "suspiciousActivity": false,
    "locked": false,
    "minor": false,
    "testAccount": false,
    "phoneActivated": true,
    "phoneSanctioned": false,
    "invalidPhone": false,
    "ageVerification": "notVerified",
    "emailChangeInCooldown": null,
    "stolenAccount": false
  }
}