Gamearly API v1
Dashboard

Ownership & anti-piracy / Enforcement patterns

Enforcement patterns#

Because Gamearly is DRM-agnostic — we never modify your files — you decide how strictly to enforce ownership. Pick one of three postures and apply it consistently.

Posture A — no verification#

Ignore the token and the context entirely. Your game is unaffected by any of this. A reasonable choice for free games, demos, or anything where piracy isn't a concern.

Posture B — verify online, stay flexible offline#

Recommended.

GAMEARLY_TOKEN_STATUS What to do
ok Verify server-side. Gate online services on entitlement.owns.
offline / server_error / auth_expired / unknown Allow single-player play if now - GAMEARLY_LAST_VERIFIED_AT is inside your grace window — 7 to 14 days is typical. Otherwise ask the player to reconnect. Keep online services disabled until a real verification succeeds.
not_entitled Refuse online services, and optionally refuse to boot.
(no GAMEARLY_LAUNCHER at all) Treat as unverified: single-player only, no online services.

Because GAMEARLY_LAST_VERIFIED_AT comes from the launcher, you can implement the grace window without a backend of your own and without the player ever linking an account. If you do have a backend, prefer your own recorded verification time from /launch_tokens/verify or /entitlements/check — a value you store cannot be edited by the player.

Posture C — hard requirement#

Require a verified token on every launch: anything other than ok followed by a valid: true response means no play.

Strongest, and it makes offline play impossible — including for legitimate owners on a plane, and during any Gamearly outage. If you choose this, say so on your store page.

Build Posture C on the verified token only

Do not build it on the advisory context variables; a player can set those by hand.

Situations to plan for#

Situation What your game sees Recommended
Online launch through Gamearly GAMEARLY_LAUNCHER=1, TOKEN_STATUS=ok, token present Verify, enforce fully.
Offline launch, real owner TOKEN_STATUS=offline, ONLINE=0, LAST_VERIFIED_AT set Grace window.
Gamearly outage TOKEN_STATUS=server_error, ONLINE=1 Same as offline — never punish.
Player signed out of Gamearly TOKEN_STATUS=auth_expired Same as offline; optionally prompt to sign in.
Player does not own the game TOKEN_STATUS=not_entitled Refuse online services, and optionally boot.
Access revoked or refunded Your game does not launch at all The launcher blocks it and prompts the player to remove the files.
Token read too late in boot Token present, verify returns expired Fail open; read it earlier next time.
Your game relaunched itself Same token, verify returns already_used Verify once per process tree.
.exe run directly; Gamearly closed or not installed No GAMEARLY_* variables Unverified. Posture B: single-player only, no online services.
Install folder copied to another machine No variables (no Gamearly there) Same as above.

Direct launches and copied files#

A direct launch never receives a token, and we cannot stop the operating system from running a copied binary without putting DRM inside your files — which we will not do. Two durable options:

Gamearly Connect plus server-side checks#

Require a login to your account for meaningful features, and have your backend call GET /v1/entitlements/check?partner_user_id=… to confirm ownership independently of the launcher and of any token. A player who copied the files and was later revoked is caught the moment they go online, even on a direct launch. Combine it with the entitlement.revoked webhook to react in real time.

Signed offline entitlement#

Coming. We are adding a longer-lived, Ed25519-signed entitlement ticket: issued during an online launch, cached by the launcher, and passed on every subsequent launch — including offline ones — as GAMEARLY_OFFLINE_TICKET. It is bound to GAMEARLY_INSTALLATION_ID, so a ticket copied to another machine fails verification, and you will be able to verify it entirely offline against our published public key. That will make Posture B cryptographically sound rather than advisory. This page will be updated with the ticket format and the key endpoint when it ships.

In short

The launch token protects the launcher path and gives you an identity even before a player links their account. The launch context tells you exactly why a token is absent, so you can respond proportionately instead of guessing. /entitlements/check plus Gamearly Connect give you a durable, launcher-independent ownership check. A grace-period policy covers offline play.

Full file-copy prevention for a purely offline single-player game is only achievable with heavy third-party DRM, which stays your choice to add.