Entitlements and ownership#
Gamearly stays DRM-agnostic: we never modify your game files or inject any DRM. Instead we give you the primitives to verify ownership yourself, from your game or your backend.
Your API key is scoped to a single project, so ownership is always checked against your game.
Entitlement calls are private-key only
Both routes require your private key (gak_prv_…): entitlements/check needs
entitlements:read, entitlements/revoke needs entitlements:write. Call them from your
server, never from the game client.
Revoke is obvious — it removes a player's access. Check is excluded too, and deliberately:
a game asking us whether its own player owns the game proves nothing, while a key extracted
from the build would let anyone enumerate purchase status by partner_user_id. If your
client needs to know, have your server ask and tell it.
Check ownership#
Query parameters
| Parameter | Required | Meaning |
|---|---|---|
partner_user_id |
yes | The player's id in your own system. Must be linked — see Gamearly Connect. |
channel |
no | Restrict the check to a single build channel id. |
Response
{
"linked": true,
"owns": true,
"gamearly_user_id": "8a8c0198-6e85-4fa3-8c7f-9f6d43bcb8b2",
"partner_user_id": "A1B2C3",
"game_id": 42,
"entitlements": [
{ "channel_id": "…", "source": "STORE", "claimed_at": "…", "expires_at": null, "build_version": "1.4.2" }
],
"last_played_at": "2025-08-22T12:34:56Z",
"total_playtime_seconds": 8123,
"currently_playing": true,
"active_sessions": [
{ "installation_id": "…device-uuid…", "started_at": "2025-08-22T12:30:00Z", "duration_seconds": 296 }
]
}
sourceis one ofSTORE(paid on the platform),DIRECT(granted by the studio),KEY, orQUEST.active_sessionslets you see the devices currently playing, for your own device or concurrency rules.- If the player isn't linked:
{ "linked": false, "owns": false, … }.
Revoke access#
{ "partner_user_id": "A1B2C3", "channel": "…channel id…" }
Revokes access you granted — DIRECT, KEY or QUEST. On success the player's launcher
is told to prompt game removal.
Paid entitlements cannot be revoked here
Paid STORE entitlements return {"error": "refund_via_platform"}. Undo those with a
platform refund, so that payment and access stay consistent.