Concepts

Slug policy model

A slug is a policy template for future licenses. It defines seat limits and expiration behavior, and those values are copied onto each license at generation time.

What a slug controls

  • max_activations: maximum concurrent active fingerprints (seats).
  • Expiration policy via expiration_type: forever, duration, or fixed_date.
  • Optional policy fields: expiration_days for duration, or fixed_expires_at for fixed_date.

Name rules

Slug names are strict and URL-safe so they can be safely used in API paths and integration code.

  • Lower-case only.
  • Allowed characters: a-z, 0-9, and -.
  • Must start with an alphanumeric character.
  • Example valid names: default, pro-annual, team-v2.

Snapshot behavior at issuance

When your backend calls POST /generate, the server resolves slug policy and stores it on the license. Later slug edits affect new licenses, not existing ones.

Example slug policy:

json
{
  "name": "pro-annual",
  "max_activations": 3,
  "expiration_type": "duration",
  "expiration_days": 365,
  "fixed_expires_at": null
}

Example generated license state:

json
{
  "license_key": "C1B6DE-39A6E3-DE1529-8559A0-4AF593",
  "slug": "pro-annual",
  "status": "inactive",
  "expires_at": "2027-04-21T12:00:00Z",
  "created_at": "2026-04-21T12:00:00Z"
}

Management flow

  • Create and update slug templates with Management API routes under /management/slugs.
  • Generate licenses by sending that slug name to POST /generate.
  • Keep stable slug names in integrations; rename intentionally and only when you can update callers.

For endpoint-level request and response payloads, see Management API.

Back to concepts overviewOpen Management API