Authenticate a customer by license key
POSThttps://api.evora.lol/api/developer-api/apps/{appId}/licenses/authenticate
Requires scopelicenses:read
The license-mode counterpart of /users/authenticate. On an app where the key *is* the credential, this resolves the customer behind it and returns the same user + subscription envelope — so one panel implementation works for both authentication modes.
Matches the whole key only and is rate-limited per key. Do not build a key login on GET /licenses?search=, which is a substring match and would let someone probe partial keys.
Unknown keys and keys belonging to another application return an identical error, so this cannot be used to enumerate keys.
Path parameters
| appIdrequired string (uuid) | Application UUID. App-scoped keys may only use their own application. |
Body
| licenseKeyrequired string | Max length: 512 |
Request
{ "licenseKey": "ABCD-EFGH-IJKL-MNOP" }
Responses
200Key is valid.
authenticated indicates whether it resolved to a customer.Activated key — customer resolved
json
{ "authenticated": true, "license": { "id": "6f1e...", "status": "active", "level": 1, "expiresAt": "2026-09-01T00:00:00.000Z", "hwid": null, "isMaster": false }, "user": { "id": "4a28...", "username": "license_abcd-efg", "banned": false }, "subscription": { "level": 1, "name": "Premium", "expiresAt": "2026-09-01T00:00:00.000Z", "hwid": "A1B2", "paused": false, "active": true } }
Valid key never used in the app yet
json
{ "authenticated": false, "code": "LICENSE_NOT_ACTIVATED", "license": { "id": "6f1e...", "status": "unused", "level": 1, "expiresAt": null, "hwid": null, "isMaster": false }, "user": null, "subscription": null }
401Unknown key, or a key belonging to another application.
json
{ "authenticated": false, "error": "Invalid license key" }
403The key or its owner is banned.
json
{ "authenticated": false, "error": "License is banned", "code": "KEY_BANNED" }
429Rate limit exceeded.
json
{ "error": "Rate limit exceeded.", "retry_after": 42 }
More in Authentication
Base URL https://api.evora.lol/api/developer-api · full spec at developer-api.yaml · back to the docs