Base URL
Endpoints
Three endpoints for license lifecycle management:| Method | Endpoint | Description |
|---|---|---|
POST | /license/activate | Activate a license on a machine |
POST | /license/validate | Validate an active license |
POST | /license/deactivate | Deactivate a license from a machine |
Request Format
All requests must be JSON with theContent-Type: application/json header.
Common Parameters
| Parameter | Type | Description |
|---|---|---|
license_key | string | License key in XXXXX-XXXXX-XXXXX-XXXXX-XXXXX format (alphanumeric) |
machine_id | string | SHA-256 hash of machine identifier (64 hex characters) |
Response Format
Successful activation and validation responses return signed license data:signature field is an RSA-SHA256 cryptographic signature of the data object. Verify it client-side with the public key to ensure response integrity.
Response Signing
All successful activate and validate responses are cryptographically signed:dataobject fields are sorted alphabetically by key- The sorted object is JSON-encoded
- The JSON string is signed with RSA-SHA256
- The signature is returned as Base64
Rate Limiting
All endpoints are rate-limited. Rate limit info is in the response headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests allowed in the current window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
429:
Error Handling
Error responses use a consistent format:Status Codes
| Code | Description |
|---|---|
200 | Success |
403 | License suspended, expired, or machine not activated |
404 | License key not found |
409 | Activation limit reached |
422 | Validation error (invalid request parameters) |
429 | Rate limit exceeded |
Validation Errors
422 responses include field-level details:
License Statuses
| Status | Description |
|---|---|
active | License is valid and usable |
suspended | License is suspended and cannot be activated or validated |
