Authenticate a customer by username and password
POSThttps://api.evora.lol/api/developer-api/apps/{appId}/users/authenticate
Requires scopeusers:read
Verifies credentials for your own panel. No session is issued — you mint your own cookie or JWT. Evora only answers "are these credentials correct, and what is this customer entitled to".
Expired customers still authenticate successfully with subscription.active: false, which is what lets them log in to renew.
Rate-limited per (key, username) so a stolen key cannot password-spray one account.
Path parameters
| appIdrequired string (uuid) | Application UUID. App-scoped keys may only use their own application. |
Body
| usernamerequired string | |
| passwordrequired string |
Request
{ "username": "craigfan", "password": "hunter2hunter2" }
Responses
200Credentials correct.
json
{ "authenticated": true, "user": { "id": "4a28...", "username": "craigfan", "banned": false }, "subscription": { "level": 2, "name": "Pro", "expiresAt": "2026-09-01T00:00:00.000Z", "hwid": "A1B2", "paused": false, "active": true } }
401Wrong username or password — deliberately indistinguishable.
json
{ "authenticated": false, "error": "Invalid credentials" }
403The account is banned.
json
{ "authenticated": false, "error": "User is banned", "reason": "chargeback" }
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