TRAX LRS provides a pseudonymization feature which consists in replacing real agent identities by artificial identities in all the recorded statements.

The relation between artificial identities and real identities are also kept in the LRS. So the APIs may return statements with real or artificial identities, depending of the situation.


{danger} Configure the pseudonymization before starting to record statements. Then, don't change these settings or you may get inconsistent behaviors.

Configuration profile

You choosing the LRS configuration profile, you have 2 options. You can enable both agents and groups pseudonymization:


Or enable agents pseudonymization only:


Artificial identities

Artificial identities always look like this:

    "account": {
        "name": "3f81141f-f4a8-42d3-9be0-99637cc32548",
        "homePage": ""

The is a generated UUID. The account.homePage is configured in the .env file:


Impact on the standard API

The standard Statements API returns statements with real identities, as long as they are stored in the LRS. So the xAPI conformance is not broken by the pseudonymization feature.

You can use both artificial and real identities in the agent filter. The filtered agent will appear with its artificial or real identity in the returned statements, depending of the identity you used in the filter.

Impact on the extended API

By default, the extended Statements API also returns statements with real identities, as long as they are stored in the LRS.

However, the extended API accepts the reveal option, that may be set to false when real identities must be hidden.

Refer to the Extended API documentation to get more information.

Getting all the identities of an agent

You can use the standard Agents API to get the relation between the real and artificial identities of an agent. Refer to the official xAPI documentation to understand this API.

Removing the real identity of an agent

You can remove real identities from the LRS, which is a great feature to comply with the GDPR. The statements are not removed. They stay into the LRS with artificial identities.

In order to remove an agent from the LRS, you need a client/access with the Manage xAPI Data permission.

Then, you can use the extended API endpoint http://traxlrs.test/trax/api/<uuid-generated-for-your-access>/xapi/ext/agents with the DELETE method and the following parameters:

    "filters": {
        "agent": { 
            "account": {
                "name": "john",
                "homePage": ""

Impact on performances

Pseudonymization has a significant impact on performances, both for writing and reading operations.

During writing operations, agents and relation tables must be updated and statements must be modified before being written.

During reading operations, real agents identities must be get from the agents table and statements must be modified before being returned.