LevelChat has three relevant concepts:
- Plan — the cloud SKU you subscribed to (
free,pro,scale,business,enterprise). - Entitlements — the runtime view of what your plan allows (max rooms, recording on/off, AI features, etc.). Cached per project, sub-50 ms p99 to read.
- License — only relevant for on-prem. A cross-stack compact JWT issued by the LevelChat license service that every runtime in a self-hosted stack verifies against its public key.
Reading entitlements
curl $LC_API_URL/v1/license/entitlements?project_id=proj_01HF... \
-H "Authorization: Bearer lc_pk_xxx.yyy"{
"plan": "pro",
"max_concurrent_rooms": 50,
"max_participants_per_room": 50,
"max_viewers_per_broadcast": 500,
"recording_enabled": true,
"e2ee_enabled": false,
"ai_enabled": false,
"meters": ["participant_minutes", "viewer_hours", "recording_gb_stored"]
}When a quota is hit, the gateway returns 402 Payment Required with a Problem Details body — see
the API reference. Surface this clearly in your UI; don't retry.
On-prem licensing
For self-host, the license is a cross-stack compact JWT issued by license-svc — every runtime in the self-host stack (Go, Rust, Node, and Elixir) accepts the same token. It is bound to the subscribing org and a deployment fingerprint.
You do not mint the license yourself. Self-host is a recurring per-server monthly subscription purchased in the Studio Console:
- Sign in to the Studio Console at app.levelchat.io/console.
- Open the Billing page, pick a server count, and subscribe via Stripe.
- The issued license token appears on the Billing page with a copy button — and is also emailed.
Install the token with the LevelChat installer CLI — choose Licensed
in the Install flow, or run the CLI's Activate license action
on an existing Community install. The CLI writes it to the
LEVELCHAT_LICENSE env var for you. See
Self-host install.
Revocation propagates through the daily license heartbeat: a revoked or cancelled subscription flips the deployment to Community caps on its next gate check. See License heartbeat & air-gap renewal for the full staleness ladder and the air-gapped renewal procedure.