This page documents the stats-related endpoints used by Hyper Scape, including profile stats, player entities, Ubisoft Connect (Club) actions/rewards, and account status.
The game queries aggregate match stats via the profile stats endpoint.
GET /v1/profiles/stats?profileIds={profileId}&statNames={statNames}&spaceId={spaceId}
Host: public-ubiservices.ubi.com
| 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 |
| Parameter | Description |
|---|---|
| profileIds | The player's profile UUID |
| statNames | Comma-separated list of stat names to query |
| spaceId | 3f28fbeb-1eaa-460f-9265-2ef2a47fd152 |
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
{
"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.
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.
GET /v2/profiles/{profileId}/entities?spaceId={spaceId}&offset=0&limit=20
GET /v2/profiles/{profileId}/entities?type={type}&spaceId={spaceId}&offset=0&limit=20
PUT /v2/profiles/entities/{entityId}
The PUT body must include the current revision number. The server increments it on success.
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 |
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
{
"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
}
]
}
| Field | Description |
|---|---|
| pc_totaltime | Total time played on PC (seconds) |
| solotime | Time played in solo mode (seconds) |
| squadtime | Time played in squad mode (seconds) |
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
}
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
}
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 |
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.
The game fetches Ubisoft Connect challenges (called "actions") for the Hyper Scape space.
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
{
"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": []
}
The game fetches Ubisoft Connect rewards (downloadable items) for the Hyper Scape space.
GET /v1/profiles/{profileId}/club/rewards?age=21&spaceId={spaceId}&limit=100&locale=en-US&fields=requiredActions,requiredForActions,requiredSpaces
{
"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
}
The game periodically polls account status.
GET /v3/users/me?fields=status
{
"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
}
}