Glossary
The terms these docs use, in alphabetical order. Each links to the section that explains it in full.
A license key in use on one device. Each activation holds one of the key's seats, up to the key's device limit. See How it fits together.
A product's identifier, such as my-product: what every request from your app includes, and what the SDKs and the endpoint paths (/v1/products/:slug/) name the product by. It never changes. See How it fits together.
The app renewing its lease with KeyGrant, with the key's current terms (POST /validate). The SDK checks in only in a few cases, such as a lease near its end. See When the SDK goes online.
The newest major of a product you have released, 1 until you set it. A check-in never records a major newer than it, so it caps what upgrade protection keeps. See Your product's current version.
A seat activated with the machine ID is held to that machine: its lease carries the machine's hash, so the license copied to another machine is refused with reason device. On unless you turn it off. See Holding a license to its device.
How many devices one key may be active on. It starts as the license model's Devices per license, and can be changed on one key. See Device limits and seats.
A trial your app starts on a device with no key: one per device for each product, for the product's Trial length. It takes no seat. See Device trials.
A name with an on/off flag, a number or a text value, such as edition: "pro", that a license model grants beyond the base product. Every lease carries the key's entitlements, so your app can tell editions apart offline. See Editions & entitlements.
How the SDKs identify a device: the operating system's own machine ID, hashed so the ID never leaves the machine, or the host name when there is none. A seat is keyed by it. See How a device is identified.
A license model setting that frees the seat of a device that has not checked in for a number of days. Off unless you turn it on. See Free unused seats.
How long a key keeps working past its end, set by Grace after expiry, days on subscription and timed models only. A test license never has one. See The grace period.
A paid upgrade, or a timed model's purchase, that KeyGrant could not place on a key. No key is changed and none is created: the sale waits for you to attach it to a key or refund it. See Held sales.
A text you send with an issue or a test license (the Idempotency-Key header), so a retry returns the key first made instead of making another. See POST /v1/licenses.
Restores a customer's license in an app that may not take a typed key, such as an App Store build: the customer proves their email by a code KeyGrant emails there, and the app gets that email's keys. See POST /pickup and How every SDK behaves.
Every public key a build of your app should carry, each with its id (kid): the keys that GET /pubkey returns. Embed the whole set, so a lease verifies on either side of a key switch. See Get the public key.
The signed token, a standard JWT, that KeyGrant returns when your app activates a key and each time it checks in. Your app verifies it offline, and it lasts the key's Offline days. See Signed leases and Lease format.
A key delivered as a signed .kglicense file instead of typed text. A key file activates the key online, as a typed key does; a license file licenses the app offline, for good, with no seat limit. See Delivered as in License models.
What a customer enters, such as PREFIX-XXXX-XXXX-XXXX-XXXX: a license sold or issued under a license model, which starts with the model's terms as they were when the key was created. See How it fits together.
One thing you sell, such as an edition at a given term and price. Every key sold under it takes its terms at the moment of the sale. See License models.
One thing a license counts, such as exports or renders, with a code your app passes to use(). See Metered uses.
A license model setting: how long each lease lasts, so how long a key keeps working without checking in. See How long a lease lasts.
Each app you ship. It has its own signing keypair, a key prefix, and an API ID, which every request from your app includes. See How it fits together.
To stop a key: by hand, over the API, by a full refund or a lost dispute, or up to a day after a subscription key's grace period ends or a trial key expires. It stops working at the app's next check-in. See When a revoke takes effect.
What an activated device holds on a key; a key has as many as its device limit. A seat counts until it is released, or freed by Free unused seats. See Device limits and seats.
The key your backend sends to the server endpoints, from the dashboard's API keys page: a kg_live_ key reaches every license, a kg_test_ key only test licenses. Keep it on your server. See Authentication.
The product's key that signs every lease; its public half is in the key set. You rotate it on the Signing key tab, in two steps. See Rotating the signing key.
A license marked as a test and signed with your product's real signing key, so it works in the build you are developing, and lasts at most 30 days. See Testing your integration.
A license key issued under a trial license model. It is activated like any key, and lasts the model's Trial length, days from the day it is issued. See Trial keys.
A time from the sale during which a key covers every version from its lowest up. When it ends, the key keeps the newest major it recorded. See Upgrade protection.
The major version a sale is for, and the license model setting that covers only that version. It comes from the issue, the checkout's version metadata, or else the key's first activation. See The version a sale is for.
A license model setting: anyone with the key (the default), or only the buyer, by the email the key was sold to or by that email and a code emailed to it. Only a new device is asked. See Who can activate.