Skip to content

Apps & key types

An app is one thing you sell. A key type is a variant of that app — typically differing on activation limit, duration, or price. Every license belongs to exactly one app and one key type.

Each app has:

FieldNotes
displayNameShown in checkout and on the dashboard
productIdURL-safe slug, derived from the key prefix
keyPrefix4 uppercase alphanumerics; appears at the start of every license key
brandColorUsed in the paywall and the hosted checkout success page

The key prefix is globally unique across all Keylight accounts — pick something distinctive. Typical choices: ACME, GEMS, BRY7.

From the dashboard go to Apps → Add app, fill in a display name and a 4-character key prefix, and submit. If the prefix is already taken (globally), the form returns immediately — pick another.

If you’ve linked Stripe Connect, Keylight also creates a matching Stripe product on your connected account so checkout sessions can reference it.

Your Keylight plan caps the number of apps per account:

PlanApps
Free1
Starter3
Pro10
EnterpriseCustom

See Billing & plans.

A new app starts with a single key type named Default (3 activations, no expiry). Most apps are fine with just that. Add more when you want to sell:

  • A time-limited version (e.g. 1-year vs lifetime).
  • A device-limited version (e.g. Single vs Family pack).
  • A free trial key type with reduced features (enforce in your app — Keylight just issues the key).
FieldRequiredNotes
Display nameyesShown on checkout and the dashboard
Activation limityesMax concurrent devices per license
DurationnoEmpty = lifetime; otherwise license expires after the selected number of days, weeks, months, or years
PricenoOnly relevant if you sell via Stripe Connect
Currencynousd, eur, gbp
App flags / entitlementsnoComma-separated flags your app can read from the SDK

When you set a price and currency, Keylight creates a corresponding Stripe price on your connected account. Editing a price archives the old Stripe price and creates a new one — existing active subscriptions aren’t affected.

Go to Apps → [app name] → Key types.

  • Add: click Add key type, fill in the form, save. The key type ID (used in URLs and API calls) is derived from the display name.
  • Edit: inline on each card.
  • Delete: inline delete button with confirmation. Deletion is permanent. Licenses already minted against this key type keep working, but no new ones can be issued.

The SDK doesn’t select a key type. Key types are a server-side concept — the license record carries its key type config, and /activate enforces the activation limit and duration directly from the record.

If you want your app to behave differently for different key types, add App flags / entitlements such as beta, early_access, or team. The Swift SDK exposes those flags through LicenseManager.hasEntitlement(_:), so your app can show badges or unlock features without parsing license keys.