Atheryx integration guide
Everything you need to integrate Atheryx authentication and license validation into your application — from first API call to production rollout.
Overview
Atheryx protects your software with license-key generation, hardware-ID binding, and secure server-side session validation. Your application talks to the Atheryx REST API; the SDKs wrap these calls so you never deal with raw requests.
The flow is simple: initialize your app with your application ID and secret, authenticate your user with a username and password (optionally bound to a HWID), and validate licenses before unlocking features.
Quick Start
The first endpoint is POST /api/v1.1/init. It opens a session for your application and returns the token your app will send with every request after.
{
"owner_id": "your-owner-id",
"app_name": "My Application",
"version": "1.0.0",
"secret": "your-app-secret",
"hash": "optional-instance-hash",
"hwid": "hardware-id"
}| Field | Type | Description |
|---|---|---|
| owner_id | Your Atheryx owner ID. | |
| app_name | Name of the application you created in the dashboard. | |
| version | Version of the client that is initializing. | |
| secret | Application secret, set under App Settings in your dashboard. | |
| hash | Optional. Client build hash for tamper checking. | |
| hwid | Optional. Hardware identifier to bind this session. |
Sessions expire after 7 days of active use or 72 hours of inactivity — whichever comes first. Your SDK re-initializes automatically when a session expires.
Full init referenceAuthentication
Authenticate your users with the POST /api/v1.1/login endpoint. It requires an active session token, verifies the credentials with bcrypt, and optionally binds the account to a hardware ID.
{
"session_id": "session-token-from-init",
"username": "johndoe",
"password": "correct horse battery staple",
"hwid": "optional-hardware-id",
"ip": "optional-ip-address"
}- •Passwords are hashed with
bcrypt— plaintext is never stored. - •If a HWID is supplied and the account has a HWID already, they must match; otherwise the request is rejected.
- •The response returns a short-lived token plus the user's licenses, roles, and tags.
- •Register new users via
POST /api/v1.1/register.
Licenses
Generate keys from the dashboard or programmatically via POST /api/v1.1/licenses. Each license carries a level, optional expiry, and a status. Validate a license before unlocking paid features:
- •Levels map to tiers (USER, VIP, PREMIUM, ADMIN).
- •Expired licenses return
LIC_EXPIRED— design your UX to prompt renewal. - •Revoke or suspend instantly from the dashboard; changes take effect on the next validation.
- •HWID-reset requests you approve unlock the key for a new machine.
Webhooks
Atheryx can push real-time events to your endpoints (or a Discord channel) whenever something important happens — a login, license activation, or HWID reset. Events are delivered with retries and a delivery log you can inspect in the dashboard. Configure webhook URLs under your application settings.
Errors
API errors return a stable error code in the JSON body so your client can react without parsing messages. Common codes:
| Code | Meaning |
|---|---|
| INVALID_SESSION | Session token is missing, expired, or malformed. |
| INVALID_CREDENTIALS | Username or password is incorrect. |
| HWID_MISMATCH | The account is bound to a different hardware ID. |
| LIC_EXPIRED | The license exists but has passed its expiry. |
| LIC_INVALID | License key does not exist or was revoked. |
| RATE_LIMITED | Too many requests; slow down and retry. |
Never treat HTTP status alone as the source of truth — always parse the error code field from the body for consistent behavior across SDKs and languages.
Ready to see the raw endpoints?
Every route, payload, and response documented.