Keys and access
Define packages, issue and revoke game keys, give the game to specific players, and see who owns what.
A player can download a game only if they own it. Depot records ownership as an entitlement: one player owns one package, from a recorded source, until it ends or you revoke it. This page covers the ways you create and remove entitlements yourself. For free claims from your store page, see Who can get it.
In the dashboard, all of this is under Keys & access. Choose the game at the top.
Packages
A package is something a player can own.
| Kind | What it is |
|---|---|
base | The base game. Depot creates one, named base, with every game. |
dlc | Extra content, such as an expansion. |
test | A test build, for example for a closed beta. |
bundle | A set of other packages from the same game. It has no content of its own. Owning a bundle gives the player every package in it. |
Content packages (base, dlc, test) hold the releases you push to them with depot push --package <name>. The default is base. See Push a build.
Owning a DLC never gives the player the base game. Ownership only flows from a bundle to its members.
Your game can check which packages a player owns with the Depot SDK, using the package name, for example HasEntitlement("expansion-1"). A package's name can't be changed later.
Under Packages, select New package. Choose the kind (Base game, DLC or Test build), a name and an optional title.
Bundles are created with the CLI or the API.
Turn a package off
A disabled package grants nothing new: no claims, no new keys and no grants. Existing entitlements stay on record and apply again when you turn the package back on.
If the base package is off, nobody can claim, redeem or be invited to the game, and the dashboard says so on the Store page tab.
depot package update --game my-game --id pkg_id --enabled false
depot package update --game my-game --id pkg_id --enabled trueYou can also change a package's title with --title.
Game keys
A game key is a single-use code for one package. A player redeems it to own that package. Use keys for testers, press, backers, or stores that sell your game.
You issue keys in batches of 1 to 1000. A batch can have a label, such as "Press, launch week", and an optional expiry date. After that date, unredeemed keys stop working.
Depot shows the codes once, right after you issue them. It keeps only fingerprints of the codes, so it can't show them again. Save them before you close the dialog or the terminal. If you lose them, revoke the batch and issue a new one.
Under Game keys, select Issue keys. Choose the package, how many, an optional expiry and an optional label, then select Issue keys.
The dialog then shows the codes. Use Copy all, or Download to save them as a text file with one code per line. Hand them to your store, press or players.
The Game keys table lists each batch with its available and redeemed counts. It never shows codes.
You can't issue keys for a disabled package, or for an archived game.
Revoke a batch
Revoking a batch stops its unused keys at once. Players who already redeemed a key from it keep the game. To take the game away from one of them, revoke their entitlement (see below).
In the Game keys table, select Revoke on the batch, give a reason and confirm. The reason is recorded in the audit log.
How players redeem keys
Keys look like this:
DPT1-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXPlayers can redeem a key on your store page with Redeem a key, in the Depot launcher, or with the CLI:
depot redeemdepot redeem reads the key from standard input, which keeps it out of shell history.
Players don't need to type a key exactly. Lowercase is fine, and spaces, dashes and underscores are ignored. Letters that look like digits are read as the digit: O as 0, and I or L as 1.
When a key is redeemed, the player owns its package at once and the game appears in their library. Some cases are refused:
- Already redeemed: someone else used the key.
- Expired: the batch's expiry date has passed.
- Already owned: the player already owns the package. The key is not used up, so they can give it to someone else.
- Invalid: the key doesn't exist, is mistyped, or was revoked.
Repeated failed attempts are rate-limited.
Give the game to a player
You can give a package directly to a Depot player by their @handle. This is how invite-only games get to players, and it works for every game. The player gets the package in their library right away.
Under Player access, select Grant access. Enter the player's @handle and choose:
- Package: what they get.
- Kind: Gift / comp, or Test access.
- Until (optional): a date when the access ends.
- Note (optional): a reference such as a support ticket.
Select Grant access. The grant is recorded in the audit log.
If the player already owns the package, nothing changes.
See who owns a package
Under Player access, Keys & access lists the owners of the selected package and how each got it: Granted, Key, Free claim or Test access. Search by @handle to find a player.
Revoke a player's access
Revoking an entitlement stops new downloads and new licenses for that player now. Copies already installed keep launching. If the game checks its license with the Depot SDK, an installed copy keeps launching until its offline license expires.
Only the entitlement you revoke ends. If the player owns the package another way, for example from a key and a grant, the other one stays. A revocation can't be undone. To give access back, grant it again.
Under Player access, select Revoke next to the player, give a reason and select Revoke access.
Let a store issue keys
If a store sells your game, you can let it issue keys itself, per order, up to a quota you set. The store needs its own Depot organization. It sees its delegations, orders and counts, never your players or their entitlements.
# You: let a store's organization issue up to 500 keys for the base game
depot retail delegate --game my-game --package base --retailer org_id --quota 500
# You: list and stop delegations
depot retail delegations --game my-game
depot retail revoke --game my-game --id delegation_id
# The store: see what it can issue, and issue keys for an order
depot retail holdings
depot retail issue --delegation delegation_id --order order-1234 --quantity 1 --out order-1234.txtEach order id can be used once. Repeating an order returns it without codes, so a retry never issues extra keys. Stopping a delegation stops new keys at once. Keys the store already issued stay valid unless you add --revoke-issued-keys.
Permissions
What a member or API key can do here depends on its permissions, for example keys:issue, keys:revoke, entitlement:grant, entitlement:revoke and retailer:delegate. See the CLI reference and API reference.