Common questions
Start with the returned error code, then check its settings. The response's request_id helps find this operation in server logs. Do not put full keys in logs or screenshots.
What should I check if activation fails?
Check that the server URL is reachable, product ID is correct, the license code is complete and belongs to this product. Until deployment, customer computers cannot use your 127.0.0.1 address; it refers to the customer's own computer.
| Error code | First step |
|---|---|
LICENSE_INVALID | Check product ID, full license key and license product |
LICENSE_EXPIRED | Check license expiration; the vendor renews it when needed |
LICENSE_REVOKEDDEVICE_RELEASED | License revoked or device released; SDK clears old cache |
DEVICE_LIMIT_REACHED | License device slots full; release an old device or increase its limit |
API_QUOTA_EXCEEDED | API hard quota exhausted; check the period and plan limits |
API_BALANCE_INSUFFICIENT | Insufficient API overage balance; check currency and environment |
MONTHLY_QUOTA_EXCEEDED | Platform device cap reached; separate from the license's device limit |
IDEMPOTENCY_CONFLICT | Same Key used for different bodies; new operation needs new Key, retries retain the original body |
IDEMPOTENCY_EXPIRED | Old response or device binding invalid; check state and use a new Key for a new operation |
Why does it still work offline?
Offline use still checks the server signature, product, device, features and expiration locally. Only the server request is omitted. Expired caches or explicit online revocation/release responses block further use.
Why does signature or device verification fail?
A mismatched public key, another product's cache or a cache copied to a different computer can cause failure. Check trusted_keys uses the current product's key ID and public key, then check whether the operating system was replaced or reinstalled.
SDK reports clock rollback : check whether the clock moved backward. Correct it, then explicitly refresh online.
Complete error response
{
"error": {
"code": "LICENSE_REVOKED",
"message": "License was revoked"
},
"request_id": "99999999-9999-4999-8999-999999999999"
}| Field | Meaning and action |
|---|---|
error.code · string | Stable error identifier for program logic; do not rely on message wording. |
error.message · string | Human-readable failure reason for diagnosis or a customer-facing message. |
request_id · UUID | Server-generated HTTP request ID for logs; not the license ID or Idempotency-Key. |
For 400 / 415 correct fields or Content-Type; for 401 check the management key; for 403 inspect the licensing error; for 409 check limits, session state or idempotency conflicts; for 429 wait according to Retry-After. Runtime retries retain their Idempotency-Key and body. Recover management writes using each operation’s idempotency rules; never blindly repeat ordinary issuance or renewal after a timeout.
How do I read the JSON response?
Successful response data and request_id; failures return error.code, error.message and request_id. Keep the error code and request_id to locate most issues.
For email, payment or deployment settings, see Support and troubleshooting.