Skip to content

User & profile ​

Account identity, linked platforms, names, friends, and activity. Types: UserMe, LinkedProfile.

Default app ID: Main Auth 4391c956-…. Headers are standard ticket headers unless noted.


Current user ​

GEThttps://public-ubiservices.ubi.com/v3/users/me
Auth
Ticket

Full user record for the ticket: userId, nameOnPlatform, dateCreated, dateOfBirth, email flags, country, and related account fields.

Response ​

UserMe plus additional account flags.

GEThttps://public-ubiservices.ubi.com/v3/users/{userId}?fields=
Auth
Ticket

Same record by id. Optional fields is a field filter used by account.ubisoft.com.

PUThttps://public-ubiservices.ubi.com/v3/users/{userId}
Auth
Ticket

Save user fields (account site saveUserProfile). Body is the remaining user payload after profileId is taken from the path.

POSThttps://public-ubiservices.ubi.com/v3/users/{userId}/validateUpdate
Auth
Ticket

Dry-run for that save. Body is the same remaining user fields.


Delete account ​

DELETEhttps://public-ubiservices.ubi.com/v3/users/me
Auth
Ticket

Permanently deletes your account. Official UI also runs extra confirmation; do not call this from a tool unless that is explicitly the user's action.

Exchange to the account-management app ID first.

DELETEhttps://public-ubiservices.ubi.com/v3/users/{userId}
Auth
Ticket

Same delete keyed by user id (account site deleteUserAccountById).


Create account ​

POSThttps://public-ubiservices.ubi.com/v3/users
Auth
None

Create a new Ubisoft account (validateCreation on the website). Body includes email, password, country, legal opt-ins, age. Some SDK clients instead POST /v1/users with email, confirmedEmail, password, nameOnPlatform, dateOfBirth, country, preferredLanguage, legalOptinsKey, isDateOfBirthApprox.


Linked profiles ​

GEThttps://public-ubiservices.ubi.com/v3/users/{userId}/Profiles
Auth
Ticket

Also GET /v3/users/me/profiles for the current user, and GET /v3/profiles/{profileId} for one profile.

URL parameters ​

NameMeaning
userIdUbisoft user UUID from Session or /v3/users/me

Response ​

ts
type ProfilesResponse = {
  profiles: LinkedProfile[]
}

LinkedProfile: profileId, platformType (uplay / xbl / psn / steam / amazon / discord / epic), idOnPlatform, nameOnPlatform.


DELETEhttps://public-ubiservices.ubi.com/v3/users/{userId}/profiles/{profileId}
Auth
Ticket

Unlink one platform (Epic, Discord, …) from your user. profileId comes from linked profiles. 200 or 204.

Optional body (account site):

ts
type UnlinkBody = {
  platformType: PlatformType
  nameOnPlatform: string
}

Initial / ghost profiles ​

GEThttps://public-ubiservices.ubi.com/v3/users/{userId}/InitialProfiles
Auth
Ticket

Platforms Ubisoft has seen even if they are not in /Profiles. account.ubisoft.com calls the same path with lowercase /initialProfiles.

Ghost linked: an XBL or PSN row appears here but not in /Profiles. Compare the two lists.


Lookup by name ​

GEThttps://public-ubiservices.ubi.com/v3/profiles?nameOnPlatform={name}&platformType=uplay
Auth
Ticket

Resolve a username on a platform.

Query ​

NameNotes
nameOnPlatformExact display name
platformTypeUsually uplay; other PlatformType values work for that network

Response ​

{ profiles: LinkedProfile[] }. Empty list if nobody matches.


Profiles by userId ​

GEThttps://public-ubiservices.ubi.com/v3/profiles?userids={userId}
Auth
Ticket

Same LinkedProfile[] keyed by Ubisoft userId. userids can be comma-separated for a small batch.

account.ubisoft.com also sends userIds, profileIds, namesOnPlatform, and idsOnPlatform (comma-separated) on GET /v3/profiles, with platformType.


V2 profiles ​

GEThttps://public-ubiservices.ubi.com/v2/profiles?userId={userId}
Auth
Ticket

Older profile payload. Prefer v3 unless you are matching a legacy client.


Rename ​

PUThttps://public-ubiservices.ubi.com/v3/profiles/{profileId}
Auth
Ticket

Change nameOnPlatform on a profile you own (rate-limited / cooldown on Ubisoft's side).

Body ​

ts
type RenameBody = {
  nameOnPlatform: string
}

Call validate first if you want the same checks the official UI runs.


Validate rename ​

POSThttps://public-ubiservices.ubi.com/v3/profiles/{profileId}/validateUpdate
Auth
Ticket

Dry-run for a username change. Body matches rename. Errors here are cheaper than a rejected PUT.


Persona / nickname ​

PUThttps://public-ubiservices.ubi.com/v1/profiles/{profileId}/persona?spaceId={spaceId}
Auth
Ticket

Per-space nickname (not the account-wide uplay name).

Query ​

spaceId — e.g. R6 primary.

Body ​

ts
type PersonaBody = {
  nickname: string
  obj: { enabled: boolean }
}

Current profile v1 ​

GEThttps://public-ubiservices.ubi.com/v1/profiles/me
Auth
Ticket

Small payload whose useful field is userId. Used to recover the user UUID from a ticket when you did not keep the Session.


Application history ​

GEThttps://public-ubiservices.ubi.com/v1/profiles/applications?profileIds={id}&limit={n}
Auth
Ticket
GEThttps://public-ubiservices.ubi.com/v3/profiles/applications?profileIds={id}&limit={n}
Auth
Ticket

Games / applications associated with a profile. v3 is the newer schema; v1 still answers. limit is a page size.


Games played ​

GEThttps://public-ubiservices.ubi.com/v1/profiles/me/gamesplayed
Auth
Ticket

Per-title play history for the current user.

Connect website variant (same path on Connect, plus a per-profile URL):

GEThttps://connect.ubisoft.com/v1/profiles/me/gamesplayed
Auth
Ticket
GEThttps://connect.ubisoft.com/v1/profiles/{profileId}/gamesplayed
Auth
Ticket

Query used by account.ubisoft.com: spaceIds, spacePlatformTypes, applicationPlatformTypes (comma-separated), limit.

Response ​

GamesPlayedEntry[]: spaceId, platformType, firstPlayed / lastPlayed (date + location), sessionsCount.

Visibility of this data to other users is gated by the gamesplayed consent.


Metaprogression ​

Connect economy level / XP for a profile (not Siege clearance).

GEThttps://public-ubiservices.ubi.com/v1/profiles/{profileId}/global/ubiconnect/economy/api/metaprogression
Auth
Ticket
ts
type Metaprogression = {
  level: number
  xp: number
}

Friends ​

GEThttps://public-ubiservices.ubi.com/v2/profiles/me/friends
Auth
Ticket
GEThttps://public-ubiservices.ubi.com/v3/profiles/{profileId}/friends
Auth
Ticket
DELETEhttps://public-ubiservices.ubi.com/v3/profiles/{profileId}/friends/{friendProfileId}
Auth
Ticket

Friends list: profileId, username, date modified, relationship state. Subject to friends consent.

Send a request: GraphQL SendFriendRequestMutation.


Parties ​

GEThttps://public-ubiservices.ubi.com/v1/profiles/{userId}/parties?spaceId={spaceId}
Auth
Ticket

Active parties for a user in a space.

ts
type PartiesResponse = {
  parties: Array<{ partyId: string }>
}

Invites use GraphQL SendPartyInvitationMutation with this partyId. Exchange to the party app ID.


Action log ​

GEThttps://public-ubiservices.ubi.com/v3/profiles/me/actionLog?offset=0&limit=10
Auth
Ticket

Login / device history for your account.

Query ​

offset, limit — start at 0 / 10 and page. account.ubisoft.com defaults limit to 5.

Response ​

ActionLogEntry[]: applicationId, ipAddress, dateCreated, sessionId, credentialType, platformDeviceId.

Unofficial community documentation. Not affiliated with Ubisoft.