Hanzo
OpenapiLicensing

Issue mints a signed license token for a product the caller's org already pays…

Issue mints a signed license token for a product the caller's org already pays for.

POST /v1/licensing/issue

Addresshttps://api.hanzo.ai/v1/licensing/issue
MethodPOST
Operationpost_licensing_issue
AuthAuthorization: Bearer $HANZO_API_KEY

Issue mints a signed license token for a product the caller's org already pays for.

The order is the whole security argument: the caller is an IAM-validated principal, commerce is then asked whether that principal's ORG holds an ACTIVE entitlement for the product, and only then is a token signed — by the KMS, never by key material in this process. A product the org does not own answers 403 and no token. The signed features are the plan's features verbatim, so the engine enforces exactly what was bought, and the expiry is clamped to the entitlement's so a token cannot outlive the subscription that paid for it.

The token is the credential the engine runs on. Treat it as a secret.

Request

14 fields, body application/json (required).

FieldInTypeRequiredDescription
fingerprintbodystringFingerprint is a previously-registered device binding value, as returned by POST /v1/licensing/fingerprint.
holderbodystringHolder overrides who the token is issued to; defaults to the caller's own validated subject.
productbodystringyesProduct is the licensed commerce product the caller wants a token for.
releasebodystringRelease scopes the token to one signed binary release, recorded as a "release:<id>" feature so a single bad release can be revoked on its own.
signalsbodylicensing.DeviceSignals
signals.archbodystring
signals.cpuidbodystringCPUID is a CPU/board identifier string.
signals.disk_serialbodystringDiskSerial of the boot/root volume.
signals.hostnamebodystringHostname is a weak signal, used only as a tiebreaker.
signals.install_idbodystringInstallID is a per-install random the agent persists locally on first run.
signals.machine_idbodystringMachineID is a stable per-host id (e.g.
signals.macsbodystring[]MAC addresses of stable interfaces (order-insensitive; we sort).
signals.osbodystringOS / Arch coarse platform tags.
ttl_secondsbodyintegerTTLSeconds requests a token lifetime in seconds.

Response

StatusBodyMeaning
200licensing.IssueResponseok

200 body — 7 fields.

FieldInTypeAlwaysDescription
app_idbodystringAppID is the brand this token runs under ("hanzo" | "lux" | "zoo").
expbodyintegerExp is the token's expiry, Unix seconds.
featuresbodystring[]Features are the capability grants copied verbatim from the plan the org bought.
fingerprint_boundbodybooleanBound reports whether a device fingerprint was folded into the token.
holderbodystringHolder is who the token was issued to.
noncebodystringNonce uniquely identifies this token, and is what a per-token revocation names.
tokenbodystringToken is the signed license, base64url(payload).base64url(ed25519_sig).

Failure carries the platform error shape — see Errors.

Examples

hanzo licensing issue --product <product>

Licensing API · All Hanzo APIs · Interactive reference

How is this guide?

On this page