Request body
{
"slug": "my-product",
"metadata": {
"email": "user@example.com",
"external_customer_id": "cus_123",
"external_order_id": "ord_456"
}
}API Endpoint
Create a new license for a slug. Intended for trusted backend systems after payment success.
POST /generate
Use these endpoints for license lifecycle operations. /generate and /revoke require a generated active server API key. Runtime endpoints use license_key plus fingerprint.
curl -X POST http://localhost:8080/generate \
-H "Authorization: Bearer <generated_server_api_key>" \
-H "Idempotency-Key: evt_123" \
-H "Content-Type: application/json" \
-d '{
"slug": "default",
"metadata": {
"email": "user@example.com",
"external_customer_id": "cus_123",
"external_order_id": "ord_456"
}
}'{
"slug": "my-product",
"metadata": {
"email": "user@example.com",
"external_customer_id": "cus_123",
"external_order_id": "ord_456"
}
}{
"license_key": "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
"slug": "my-product",
"status": "inactive",
"metadata": {
"email": "user@example.com",
"external_customer_id": "cus_123",
"external_order_id": "ord_456"
},
"expires_at": "2026-10-20T12:00:00Z",
"created_at": "2026-04-20T12:00:00Z"
}license_key
string
Generated license key.
slug
string
Slug used at generation time.
status
"inactive" | "active" | "revoked"
Current license status.
metadata
object
Arbitrary metadata stored with the license.
expires_at
string | null
RFC3339 expiration timestamp, or null for non-expiring policies.
created_at
string
RFC3339 creation timestamp.
Invalid JSON, missing slug, oversized fields, or invalid metadata shape.
Missing or invalid API key.
Referenced slug not found.
Idempotency key conflict or in-progress idempotent request.
Unexpected server or storage error.