End-User API
Use the End-User API to store and retrieve data for the authenticated end user across applications and devices. For trusted backend integrations that explicitly select other users' data or make bulk changes, use the Management API.

Endpoint
https://personalization.service.eu.axinom.net/graphql
Authentication
Requests require a JWT bearer token issued through the User Service.
Send the token in the HTTP Authorization header:
Authorization: Bearer <end-user-token>
Content-Type: application/json
The token supplies the tenant, environment, user, profile, and application context. You do not select a different user by passing a user ID to an End-User API operation. See the User Service guides for signing in with external identity providers and integrating without the React library.
Choose a storage API
| Requirement | API |
|---|---|
| Store one JSON value per scoped key, such as preferences | Key-value API |
| Store frequently changing integers, such as playback position | Progress API |
| Store independently addressable collection items, such as favorites or watch history | Array API |
For new array integrations, use the itemId-based operations.
Earlier array operations remain available for compatibility but are deprecated; see Migrate from deprecated Array APIs.
Select a scope
Every scope requires an authenticated user. Choose the scope according to which context should own the value:
| Scope | Required token context | Use when |
|---|---|---|
USER | User | Data belongs to the user across profiles |
PROFILE | User and active profile | Data belongs to one profile |
APPLICATION | User, active profile, and application | Data belongs to one profile within one application |
The same key can hold different values in each scope. A scope is available only when its required context is present in the token.
Keys, values, and limits
Keys use colon-separated namespaces such as ui:preferences and content:favorites.
The key pattern is ^[\\w-]+(:[\\w-]+)*$.
Key-value and array values are valid JSON, limited to 10,240 bytes per value.
Progress values are integers rather than arbitrary JSON.
For pagination, selector limits, datetime formats, and machine-readable errors, see End-User API errors and limits.