Overview
The licensing engine: licenses, products, customers, addons, whitelists, validation, and logs.
core is the heart of Kora. It is always loaded, and every other extension builds on it. It manages
your licenses and the records around them, validates keys over the API, and keeps a log of what
happened.
The validation endpoint your product calls, and the full management API, are on the API Reference, with a live playground and code samples. Settings are on the Configuration page.
What it manages
| Record | What it is |
|---|---|
| Licenses | The keys you issue. Each belongs to a product and a customer, can carry addons and whitelists, and can expire. |
| Products | The things you license. Products can carry custom fields and reusable templates. |
| Customers | Who a license belongs to. Customers carry custom fields such as an email or Discord id. |
| Addons | Optional extras attached to a product or license (for example a "Full Source" upgrade). |
| Whitelists | Header, body, or IP allow-lists that a key is checked against on validation, each with an optional per-key limit. |
Everything above is managed from the dashboard (Licenses, Products, Customers pages), the console
(licenses, products, customers, addons, whitelists commands), and the
API.
Validation
Keys are checked at POST /api/licenses/validate. It is public, so your product calls it directly
with no API key. The response tells you whether the key is valid, along with its status, product,
customer, and any addons.
The full request and response are on the API Reference.
Logs
core records two logs, each with a configurable retention:
- Requests every API call, with method, path, status, duration, and caller. Shown on the Requests page.
- Activity licensing events such as validations, rejections, and expiries. Shown on the Activity page.

