Validate License
Validate a license key and retrieve its current status, expiry, and entitlements.
Endpoint
POST /api/v1/integration/licenses/{licenseKey}/validateHeaders
| Header | Required | Value |
|---|---|---|
X-API-Key | Yes | Your API key |
Content-Type | Yes | application/json |
X-Request-ID | Recommended | UUID for tracing |
Path Parameters
| Parameter | Type | Description |
|---|---|---|
licenseKey | string | The license key to validate |
Response (200 OK)
json
{
"data": {
"valid": true,
"license": {
"id": 42,
"key": "VX-ACME-abc123def456",
"type": "subscription",
"status": "active",
"expires_at": "2027-03-30T00:00:00.000000Z",
"entitlements": {
"plan": "pro"
}
}
},
"meta": {
"request_id": "uuid",
"api_version": "1"
}
}The valid field is true when the license exists, is active, and has not expired.
The entitlements field is a flexible key-value object containing the license's granted entitlements (e.g., {"plan": "pro"}, {"plan": "enterprise", "domains": 5}). Returns an empty object {} if no entitlements are set.
Error Responses
| Code | HTTP | Description |
|---|---|---|
LICENSE.NOT_FOUND | 404 | License key does not exist for this tenant |
LICENSE.REVOKED | 403 | License has been revoked |
AUTH.INVALID_API_KEY | 401 | Invalid or missing API key |
TENANT.STATUS.SUSPENDED | 403 | Tenant is suspended |
RATE_LIMIT.EXCEEDED | 429 | Rate limit exceeded |
Notes
- The license's
last_used_attimestamp is updated on each validation - A license with
status: "expired"returnsvalid: falsebut does not throw an error - The license must belong to the tenant associated with the API key