Four steps to your first verified session.
Create an application in the dashboard and set the version your client is allowed to use.
Generate a license, choose its duration, maximum systems, and optional new-device redemption limit.
Configure an SDK with the EliteAuth API URL, App ID, and application version.
Activate and revalidate using the SDK hardware fingerprint helper rather than a changeable system username.
Know what belongs in the client.
The managed EliteAuth API base URL: https://api.eliteauth.lol.
Identifies the EliteAuth account that owns the application. New SDK templates send it and the Worker verifies it when supplied.
Public identifier for one EliteAuth application.
Compared with the version configured in the dashboard.
Authorizes trusted administrative API operations. Never embed it in distributed software.
Store only as a Cloudflare Worker secret. Never expose it to browsers or clients.
Choose the identity fields required by each application.
Application owners can require a license key only, a key plus username, a key plus email, or all three. On first activation EliteAuth links the license to the supplied user. Later activations must match the existing assignment.
No username or email is required.
The activation request must include username.
The activation request must include a valid email.
Both values are required and must continue to match the assigned user.
Control systems and new-device redemptions separately.
Each license has a maximum number of simultaneously bound systems and an optional cumulative new-device redemption limit. Reopening or reactivating on an already-bound system does not consume another redemption.
The first system claims the license. A different system remains blocked even after unbinding unless an admin explicitly resets the redemption count.
The same system can reactivate freely. After an authorized HWID reset, another system can claim the free slot.
The bound system can reactivate as often as needed until the license expires one week after first activation.
Increase the system limit for a key that is allowed on more than one computer.
/v1/license/activateActivate a license.
Validates the application, version, license state, expiry, and device binding. A successful request returns a short-lived session token.
Request
{
"app_id": "YOUR_APP_ID",
"license_key": "ELITE-7F2K-9XQM-4LPA",
"device_fingerprint": "ea-hw-v1:LOCAL_SHA256_FINGERPRINT",
"fingerprint_version": "ea-hw-v1",
"device_label": "DESKTOP-PC",
"version": "1.0.0",
"username": "customer_name",
"email": "customer@example.com"
}Success response
{
"success": true,
"message": "License activated successfully",
"session": {
"token": "SHORT_LIVED_TOKEN",
"expires_at": "2026-07-21T12:30:00Z"
}
}200License activated and session created.400Required input, username, email, or duration data is invalid.401Invalid license or session.403License disabled, revoked, expired, assigned to another user, at its system limit, or at its redemption limit.409Legacy or invalid duration requires an explicit admin correction.426Client version does not match the allowed application version./v1/session/checkRevalidate a session.
Call this during runtime for sensitive operations and on a reasonable interval. The API rechecks application status, license status, expiry, the active device fingerprint binding, and session expiry.
{
"app_id": "YOUR_APP_ID",
"session_token": "TOKEN_FROM_ACTIVATION",
"device_fingerprint": "ea-hw-v1:LOCAL_SHA256_FINGERPRINT",
"fingerprint_version": "ea-hw-v1"
}Create licenses from the authenticated dashboard.
Choose a positive duration and unit, or explicitly select Lifetime. Timed licenses store their duration immediately and receive a real UTC expiration timestamp on first successful activation. Minutes, hours, days, and weeks use exact elapsed time; months and years use UTC calendar arithmetic with safe month-end clamping. Missing or invalid duration data is rejected and never falls back to Lifetime.
Use the client that fits your stack.
The package includes C#, C++, Python, JavaScript, TypeScript, Java, Go, and Rust clients. Desktop/server SDKs include hardware fingerprint helpers. Browser JavaScript cannot read CPU or motherboard identifiers, so browser integrations must use a trusted desktop bridge or a persistent installation identifier instead.
import { EliteAuthClient } from "./eliteauth.js";
import { generateHardwareFingerprint } from "./hardware-fingerprint.node.js";
const hardware = generateHardwareFingerprint();
const auth = new EliteAuthClient(
"https://api.eliteauth.lol",
"YOUR_APP_ID",
"1.0.0"
);
const result = await auth.activate(
licenseKey,
hardware.fingerprint,
{ username, email },
hardware.deviceLabel
);
if (!result.success) throw new Error(result.error);
const session = await auth.checkSession(hardware.fingerprint);
Integrate defensively.
- Never ship the application server secret or Supabase service-role key in client software.
- Use HTTPS only. If you later add browser-only API routes, restrict their allowed origins rather than relying on CORS as authentication.
- Use the bundled hardware fingerprint helper for desktop software. Do not use the system username as an HWID, and do not transmit raw ProcessorId, motherboard, UUID, or disk values.
- Treat client-side checks as bypassable. Keep high-value authorization decisions on infrastructure you control.
- Rotate any secret immediately after suspected exposure and disable affected licenses or applications while investigating.
For vulnerability reports, follow the Responsible Disclosure Policy or email security@eliteauth.lol.
Production checklist.
001, 002, and 003_ELITEAUTH_DEVICE_AND_ACTIVATION_LIMITS.sql in order.SUPABASE_SERVICE_ROLE_KEY with wrangler secret put.SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY as encrypted Worker variables.GET /health.website/ to Cloudflare Pages.Need implementation help?
Email support@eliteauth.lol or contact the official Discord account eliteauth. Administrative requests can be sent to admin@eliteauth.lol.