ApexAuth
ApexAuth DOCS
Visit Website
Getting Started

Introduction

Secure licensing & authentication made simple

Welcome to ApexAuth documentation. ApexAuth is a high-fidelity, secure, and modern authentication and software licensing platform built for developers, software publishers, and reseller administrators.

Our platform offloads complex encryption, license key validation, user login sessions, and subscription management from your software binaries to our secure servers, protecting you from cracking and unauthorized sharing.

What is ApexAuth?

ApexAuth acts as a cloud-based gateway that intercepts all auth actions. Instead of writing custom database connectors, password hashing routines, and local licensing code, you can use our pre-built developer APIs and SDKs to manage access.

What can ApexAuth be used for?

  • Reseller Management: Delegate key generation and user assignment rights to trusted third-party resellers.
  • HWID Security Binding: Restrict software license usage to verified machines using multi-parameter HWID locks.
  • Real-time Session Kill: Instantly track, inspect, or terminate live user login sessions from your Dashboard.
  • Cloud Variables: Inject sensitive application strings, configurations, or URLs dynamically into memory only after successful login.
Quick Tip
Create your first developer account on our portal to retrieve your unique Application Credentials (Client ID, Secret token) and initialize your SDK setup in seconds.
Security

Security Practices

How ApexAuth protects your software binary integrity

Cracking platforms rely on sniffing local logic paths or dumping active process memory. ApexAuth protects your system by applying robust client-server integrity verification measures.

HMAC-SHA256 Request Signing

Every SDK call to our servers contains an encrypted signature. The client signs request parameters using the HMAC-SHA256 algorithm with your application's private token, ensuring that payload tampering or replay requests are blocked at the server gate.

Hardware Fingerprint (HWID) Validation

Standard license validation can be shared across computers easily. With ApexAuth, when a license is activated, the system calculates and locks a hardware identifier (HWID) combining variables like CPU IDs, OS version, and motherboard details. Subsequent queries are verified against this record.

Cloud-Stored Encryption Variables

Never hardcode decrypt keys, URLs, or crucial logic strings inside your app code. Instead, write them as variables in the dashboard. ApexAuth securely streams these variables over HTTPS only after confirming the HWID and session credentials are valid.

Integration

Integration SDKs & Starter Kits

Universal zero-dependency client libraries and runnable starter templates

CORE INTEGRATION ARCHITECTURE Universal Static SDKs

The SDK file is universal and must NEVER be modified. All developers use the exact same static library. You do not touch or put credentials inside the SDK file. Simply drop the SDK into your project and initialize it in your entry file (main.cpp, Program.cs, main.py, etc.) using your application credentials from the dashboard.

Universal SDK Libraries & Starter Kits

Download our official zero-dependency SDK file for your language, or grab a complete runnable starter kit with boilerplate logic ready to compile:

C++ (Native)
apexauth.h
Zero-dependency header using native WinHTTP and BCrypt kernel crypto. Windows 10/11 MSVC & MinGW.
C# (.NET)
apexauth.cs
Pure .NET standard library with zero NuGet packages. Supports .NET Framework 4.6+ and .NET Core 6/7/8/9.
Python 3
apexauth.py
Zero-dependency module using standard library urllib & hashlib. No pip install required. Python 3.8+.
Rust (Native)
apexauth.rs
High-performance Rust module for native memory safety, zero-cost abstractions, and automated HWID locking.
TypeScript / Electron
apexauth.ts
Strongly typed client with full TypeScript interfaces for modern desktop Electron loaders & web apps.
Node.js
apexauth.js
Zero-dependency CommonJS & ES module client using native crypto, https, and os modules. Node.js 14+.
Java
ApexAuth.java
Native Java 11+ client with built-in java.net.http.HttpClient and zero external jar dependencies.

Integration Code Boilerplates

Select your language below to inspect the complete entry file boilerplate. Initialize the client using your credentials from the developer dashboard:

// C++ Native WinHTTP Client (Drop apexauth.h into your project)
#include <iostream>
#include <windows.h>
#include "apexauth.h"

using namespace ApexAuth;

// Global instance — replace placeholders with dashboard credentials
std::string name = "YOUR_APP_NAME";
std::string ownerid = "YOUR_OWNER_ID";
std::string secret = "YOUR_APP_SECRET";
std::string version = "1.0";
std::string url = "https://apexauth.online/api/v1";

api ApexApp(name, ownerid, secret, version, url);

int main() {
    SetConsoleTitleA("ApexAuth Loader");
    std::cout << "\n Connecting to server...";
    ApexApp.init();

    if (!ApexApp.response.success) {
        std::cout << "\n [!] " << ApexApp.response.message << std::endl;
        Sleep(2500);
        return 0;
    }

    std::cout << "\n\n [1] Login\n [2] Register\n [3] License Key Only\n\n Select option: ";
    int option;
    std::cin >> option;

    if (option == 1) {
        std::string user, pass;
        std::cout << " Enter username: "; std::cin >> user;
        std::cout << " Enter password: "; std::cin >> pass;
        ApexApp.login(user, pass);
    }
    else if (option == 2) {
        std::string user, pass, key;
        std::cout << " Enter username: "; std::cin >> user;
        std::cout << " Enter password: "; std::cin >> pass;
        std::cout << " Enter license key: "; std::cin >> key;
        ApexApp.register_user(user, pass, key);
    }
    else if (option == 3) {
        std::string key;
        std::cout << " Enter license key: "; std::cin >> key;
        ApexApp.license(key);
    }

    if (!ApexApp.response.success) {
        std::cout << "\n [!] Auth Failed: " << ApexApp.response.message << std::endl;
        Sleep(2500);
        return 0;
    }

    std::cout << "\n [+] Welcome " << ApexApp.user_data.username << "!\n";
    std::cout << " [+] HWID:   " << ApexApp.user_data.hwid << "\n";
    std::cout << " [+] Expiry: " << ApexApp.user_data.expiry << "\n\n";

    system("pause");
    return 0;
}
// C# .NET Native Client (Drop apexauth.cs into your project)
using System;
using ApexAuth;

namespace LoaderApp
{
    class Program
    {
        // Global static instance — accessible everywhere
        public static api ApexApp = new api(
            name: "YOUR_APP_NAME",
            ownerid: "YOUR_OWNER_ID",
            secret: "YOUR_APP_SECRET",
            version: "1.0",
            url: "https://apexauth.online/api/v1"
        );

        static void Main(string[] args)
        {
            Console.Title = "ApexAuth Loader";
            Console.WriteLine("Connecting to authentication server...");

            ApexApp.init();
            if (!ApexApp.response.success)
            {
                Console.WriteLine("Error: " + ApexApp.response.message);
                Console.ReadKey();
                return;
            }

            Console.WriteLine("\n[1] Login\n[2] Register\n[3] License Key Only\n");
            Console.Write("Select option: ");
            string option = Console.ReadLine();

            if (option == "1")
            {
                Console.Write("Username: "); string user = Console.ReadLine();
                Console.Write("Password: "); string pass = Console.ReadLine();
                ApexApp.login(user, pass);
            }
            else if (option == "2")
            {
                Console.Write("Username: "); string user = Console.ReadLine();
                Console.Write("Password: "); string pass = Console.ReadLine();
                Console.Write("License: "); string key = Console.ReadLine();
                ApexApp.register_user(user, pass, key);
            }
            else if (option == "3")
            {
                Console.Write("Enter License Key: "); string key = Console.ReadLine();
                ApexApp.license(key);
            }

            if (!ApexApp.response.success)
            {
                Console.WriteLine("\n[!] Auth Failed: " + ApexApp.response.message);
                Console.ReadKey();
                return;
            }

            Console.WriteLine("\n[+] Welcome " + ApexApp.user_data.username + "!");
            Console.WriteLine("[+] Machine HWID: " + ApexApp.user_data.hwid);
            Console.WriteLine("[+] Expiry Date:  " + ApexApp.user_data.expiry);

            Console.WriteLine("\nPress any key to launch application...");
            Console.ReadKey();
        }
    }
}
# Python 3 Native Client (Drop apexauth.py into your project)
from apexauth import api
import sys

# Instantiate universal client
name = "YOUR_APP_NAME"
ownerid = "YOUR_OWNER_ID"
secret = "YOUR_APP_SECRET"
version = "1.0"
url = "https://apexauth.online/api/v1"

ApexApp = api(name, ownerid, secret, version, url)

print("Connecting to authentication server...")
ApexApp.init()

if not ApexApp.response.success:
    print(f"\n[!] Error: {ApexApp.response.message}")
    sys.exit(1)

print("\n[1] Login\n[2] Register\n[3] License Key Only")
opt = input("\nSelect option: ")

if opt == "1":
    u = input("Username: ")
    p = input("Password: ")
    ApexApp.login(u, p)
elif opt == "2":
    u = input("Username: ")
    p = input("Password: ")
    k = input("License Key: ")
    ApexApp.register(u, p, k)
elif opt == "3":
    k = input("License Key: ")
    ApexApp.license(k)

if not ApexApp.response.success:
    print(f"\n[!] Authentication Failed: {ApexApp.response.message}")
    sys.exit(1)

print(f"\n[+] Authenticated successfully! Welcome, {ApexApp.user_data.username}")
print(f"[+] Machine HWID: {ApexApp.user_data.hwid}")
print(f"[+] Access Expiry: {ApexApp.user_data.expiry}")
// Rust Native Client (Drop apexauth.rs into your src/ directory)
mod apexauth;
use apexauth::ApexAuth;
use std::io::{self, Write};

fn main() {
    let name = "YOUR_APP_NAME";
    let ownerid = "YOUR_OWNER_ID";
    let secret = "YOUR_APP_SECRET";
    let version = "1.0";
    let url = "https://apexauth.online/api/v1";

    let mut apex = ApexAuth::new(name, ownerid, secret, version, url);

    println!("Connecting to authentication server...");
    apex.init();

    if !apex.response.success {
        println!("\n[!] Initialization failed: {}", apex.response.message);
        return;
    }

    println!("\n[1] Login\n[2] Register\n[3] License Key Only");
    print!("Select option: ");
    io::stdout().flush().unwrap();

    let mut choice = String::new();
    io::stdin().read_line(&mut choice).unwrap();

    match choice.trim() {
        "1" => {
            print!("Username: "); io::stdout().flush().unwrap();
            let mut u = String::new(); io::stdin().read_line(&mut u).unwrap();
            print!("Password: "); io::stdout().flush().unwrap();
            let mut p = String::new(); io::stdin().read_line(&mut p).unwrap();
            apex.login(u.trim(), p.trim());
        }
        "2" => {
            print!("Username: "); io::stdout().flush().unwrap();
            let mut u = String::new(); io::stdin().read_line(&mut u).unwrap();
            print!("Password: "); io::stdout().flush().unwrap();
            let mut p = String::new(); io::stdin().read_line(&mut p).unwrap();
            print!("License Key: "); io::stdout().flush().unwrap();
            let mut k = String::new(); io::stdin().read_line(&mut k).unwrap();
            apex.register(u.trim(), p.trim(), k.trim(), None);
        }
        "3" => {
            print!("Enter License Key: "); io::stdout().flush().unwrap();
            let mut k = String::new(); io::stdin().read_line(&mut k).unwrap();
            apex.license(k.trim());
        }
        _ => {
            println!("Invalid choice");
            return;
        }
    }

    if !apex.response.success {
        println!("\n[!] Authentication Failed: {}", apex.response.message);
    } else {
        println!("\n[+] Authenticated successfully!");
        println!("[+] User:   {}", apex.user_data.username);
        println!("[+] HWID:   {}", apex.user_data.hwid);
        println!("[+] Expiry: {}", apex.user_data.expiry);
    }
}
// TypeScript / Electron Client (Drop apexauth.ts into your project)
import { ApexAuth } from './apexauth';
import * as readline from 'readline';

const apex = new ApexAuth(
    "YOUR_APP_NAME",
    "YOUR_OWNER_ID",
    "YOUR_APP_SECRET",
    "1.0",
    "https://apexauth.online/api/v1"
);

async function bootstrap() {
    console.log("Connecting to authentication server...");
    const initRes = await apex.init();

    if (!initRes.success) {
        console.error(`[!] Init Failed: ${initRes.message}`);
        process.exit(1);
    }

    const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
    rl.question('Enter License Key: ', async (licenseKey) => {
        const auth = await apex.license(licenseKey.trim());

        if (!auth.success) {
            console.error(`[!] Authorization Denied: ${auth.message}`);
        } else {
            console.log(`[+] Welcome ${apex.user_data.username || 'License User'}!`);
            console.log(`[+] Hardware ID: ${apex.user_data.hwid}`);
            console.log(`[+] Expiry Date:  ${apex.user_data.expiry}`);
        }
        rl.close();
    });
}

bootstrap();
// Node.js Client (Drop apexauth.js into your project)
const ApexAuth = require('./apexauth');

const name = "YOUR_APP_NAME";
const ownerid = "YOUR_OWNER_ID";
const secret = "YOUR_APP_SECRET";
const version = "1.0";
const url = "https://apexauth.online/api/v1";

const ApexApp = new ApexAuth(name, ownerid, secret, version, url);

async function run() {
    console.log("Connecting to authentication server...");
    await ApexApp.init();

    if (!ApexApp.response.success) {
        console.log(`[!] Error: ${ApexApp.response.message}`);
        return;
    }

    // Authenticate with License Key
    const licenseKey = "APX-YOUR-LICENSE-KEY";
    await ApexApp.license(licenseKey);

    if (!ApexApp.response.success) {
        console.log(`[!] Auth Failed: ${ApexApp.response.message}`);
        return;
    }

    console.log(`[+] Authenticated! HWID: ${ApexApp.user_data.hwid}`);
    console.log(`[+] Expiry: ${ApexApp.user_data.expiry}`);
}

run();
// Java Native Client (Drop ApexAuth.java into your apexauth package)
import apexauth.ApexAuth;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String name = "YOUR_APP_NAME";
        String ownerid = "YOUR_OWNER_ID";
        String secret = "YOUR_APP_SECRET";
        String version = "1.0";
        String url = "https://apexauth.online/api/v1";

        ApexAuth apex = new ApexAuth(name, ownerid, secret, version, url);

        System.out.println("Connecting to authentication server...");
        apex.init();

        if (!apex.response.success) {
            System.out.println("[!] " + apex.response.message);
            return;
        }

        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter License Key: ");
        String key = scanner.nextLine();

        apex.license(key);

        if (!apex.response.success) {
            System.out.println("[!] Failed: " + apex.response.message);
        } else {
            System.out.println("[+] Welcome " + apex.user_data.username);
            System.out.println("[+] Machine HWID: " + apex.user_data.hwid);
            System.out.println("[+] Expiry Date:  " + apex.user_data.expiry);
        }
    }
}
Dashboard

Manage Applications

Configuring application variables and limits in your portal

Once inside the Developer Dashboard, you can select and manage individual platforms. Below are the core dashboards sections you should configure:

Creating an Application

To begin licensing, click Create Application, assign a brand name, and specify security guidelines (such as allowing multiple logins per user, or choosing the default subscription plan length).

Webhook Event Triggers

Configure webhook callback URLs inside the Webhooks settings. You can trigger automated Discord messages or server actions whenever a user registers, activates a key, or is banned for HWID matching anomalies.

Reference

API Reference

Direct HTTP API endpoints definitions

For custom application models or platforms without specific SDK libraries, you can make HTTP requests to our endpoints directly.

API Base URL

https://apexauth.online/api/v1
POST /init
Initializes a new client session. Generates session verification cryptographic keys.
Parameter Type Requirement Description
app_id string Required The unique Application identifier code.
hwid string Required The unique client hardware profile identification string.
signature string Required HMAC-SHA256 signing of the request payload using client secret.
POST /login
Verifies login credentials and returns session validity status.
Parameter Type Requirement Description
session_id string Required The session token returned by the initial /init request.
username string Required The user credential account ID.
password string Required The user password key.