Getting Started
Get up and running with license validation in under 5 minutes.
1Create an Account
Sign up at /register with email or Discord. You get 10 free licenses immediately.
2Create a Project
A "Default Project" is created automatically when you sign up. Projects organize your licenses and API keys. Think of them as separate applications (e.g., "My Game", "My SaaS"). You can create more from the dashboard sidebar or via the API.
/api/v1/projectscurl -X POST https://onyxauth.xyz/api/v1/projects \
-H "Content-Type: application/json" \
-H "Cookie: session-token=..." \
-d '{ "name": "My Game" }'3Get Your API Key
Go to /api-keys in your dashboard and create a new API key. Save it because it's only shown once.
Keys are formatted as lic_live_... for production and lic_test_... for testing.
4Create a License
Create a license from your dashboard or via the API:
/api/v1/licensescurl -X POST https://onyxauth.xyz/api/v1/licenses \
-H "Content-Type: application/json" \
-H "Cookie: session-token=..." \
-d '{
"productName": "My App",
"projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"maxActivations": 1,
"expiresAt": "2026-12-31T23:59:59Z"
}'{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"key": "A3F9-KM7X-P2VB-8NQT",
"productName": "My App",
"status": "active",
"maxActivations": 1,
"currentActivations": 0,
"expiresAt": "2026-12-31T23:59:59.000Z"
}
}5Validate in Your App
Add license validation to your software. The validation endpoint is public, so no API key is needed (the license key itself identifies the owner).
/api/v1/validateExample
async function validateLicense(clientId, licenseKey, fingerprint) {
const response = await fetch('https://onyxauth.xyz/api/v1/validate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clientId, licenseKey, fingerprint })
});
const { success, data, error } = await response.json();
if (!success) {
console.error('Validation failed:', error.code);
return false;
}
return data.valid;
}
// valid = await validateLicense("proj_aBcDeFgHiJkLmNoPqRsTuVwX", "A3F9-KM7X-P2VB-8NQT", fp);6Collect Hardware Fingerprint
Send as many hardware identifiers as you can. More components = stronger hardware binding. The system tolerates minor changes (RAM upgrade, new network card) but prevents full hardware swaps.
{
"fingerprint": {
"cpu": "Intel Core i7-12700K",
"mac": ["00:11:22:33:44:55", "AA:BB:CC:DD:EE:FF"],
"disk": "S5GXNG0N123456",
"motherboard": "MS-7D25",
"bios": "BIOS-V1.40",
"uuid": "4C4C4544-0042-4810-8053-C2C04F305132"
}
}All fields are optional. Send what you can collect. With 4+ components, the system requires 75% to match. With fewer, it allows at most 1 mismatch.