Documentation

Integrate EliteAuth with confidence.

Create an application, issue licenses, activate a device, and continuously verify the returned session through the same language-neutral HTTP API.

Quickstart

Four steps to your first verified session.

1

Create an application in the dashboard and set the version your client is allowed to use.

2

Generate a license, choose its duration, maximum systems, and optional new-device redemption limit.

3

Configure an SDK with the EliteAuth API URL, App ID, and application version.

4

Activate and revalidate using the SDK hardware fingerprint helper rather than a changeable system username.

Credentials

Know what belongs in the client.

EliteAuth API URLClient-safe

The managed EliteAuth API base URL: https://api.eliteauth.lol.

Owner IDClient-safe

Identifies the EliteAuth account that owns the application. New SDK templates send it and the Worker verifies it when supplied.

App IDClient-safe

Public identifier for one EliteAuth application.

Application versionClient-safe

Compared with the version configured in the dashboard.

Server secretServer only

Authorizes trusted administrative API operations. Never embed it in distributed software.

Supabase service-role keyWorker only

Store only as a Cloudflare Worker secret. Never expose it to browsers or clients.

User requirements

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.

License key onlyDefault

No username or email is required.

License key + usernameOptional mode

The activation request must include username.

License key + emailOptional mode

The activation request must include a valid email.

License key + username + emailStrict mode

Both values are required and must continue to match the assigned user.

Hardware locking

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.

1 system + 1 redemptionStrict hardware lock

The first system claims the license. A different system remains blocked even after unbinding unless an admin explicitly resets the redemption count.

1 system + unlimited redemptionsTransferable by admin reset

The same system can reactivate freely. After an authorized HWID reset, another system can claim the free slot.

1 system + one-week durationWeekly license

The bound system can reactivate as often as needed until the license expires one week after first activation.

Multiple systemsTeam/device plans

Increase the system limit for a key that is allowed on more than one computer.

The SDK fingerprint combines stable hardware and machine values such as ProcessorId, motherboard serial, system UUID, MachineGuid, and system-volume serial, then hashes them locally. EliteAuth hashes the fingerprint again before database storage. No system username is used.
POST/v1/license/activate

Activate 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.
POST/v1/session/check

Revalidate 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"
}
License creation

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.

Administrative actions—including disable, revoke, re-enable, expiration changes, system/redemption limits, user reassignment, deletion, and device reset—are protected by the existing Supabase account session and row-level security.
SDKs

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.

JavaScriptsdk/javascript/eliteauth.js
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);
Security guidance

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.

Deployment

Production checklist.

Run migrations 001, 002, and 003_ELITEAUTH_DEVICE_AND_ACTIVATION_LIMITS.sql in order.
Store SUPABASE_SERVICE_ROLE_KEY with wrangler secret put.
Keep SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY as encrypted Worker variables.
Deploy the Worker and verify GET /health.
Configure Supabase authentication site and redirect URLs for the production domain.
Deploy the contents of website/ to Cloudflare Pages.
Test registration, login, timed and lifetime creation, 1-system binding, device-limit rejection, redemption-limit rejection, same-device reactivation, disable/revoke behavior, session validation, user assignment, and secure device-reset links end to end.
Support

Need implementation help?

Email support@eliteauth.lol or contact the official Discord account eliteauth. Administrative requests can be sent to admin@eliteauth.lol.