LibreAuth
TIP
Always call init first. Save sessionid from the response — required for all other API types.
Client API

Initialization

POST https://libreauth.nutexe.dev/api/1.3/

Start a new session. Returns sessionid, app stats, Ed25519 public key, and optional encrypted responses. Must be called before any other API type.

LibreAuth API v1.3 · type=init

Query Params

type string required
Example: init
Request action name
name string required
Example: MyApp
Application name
ownerid string required
Example: XXXXXXXXXX
10-character Owner ID
ver string required
Example: 1.0
Client version — must match expected app version
enckey string optional
35-character encryption key for AES response encryption
hash string optional
Example: md5_of_your_exe_32_chars
MD5 of compiled exe (32 hex). Aliases: h, x. Required when Hash Check is enabled
token string optional
Token file signature when Token File Check is enabled
thash string optional
MD5 of token.dat when Token File Check is enabled

Request Code Samples

Shell
curl -X POST 'https://libreauth.nutexe.dev/api/1.3/' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'type=init&name=MyApp&ownerid=XXXXXXXXXX&ver=1.0&hash=md5_of_your_exe_32_chars'
Go
app := libreauth.New("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/")
app.Hash = "md5_of_your_exe_32_chars"
app.Init()
PHP
<?php
$ch = curl_init('https://libreauth.nutexe.dev/api/1.3/');
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_POSTFIELDS => 'type=init&name=MyApp&ownerid=XXXXXXXXXX&ver=1.0&hash=md5_of_your_exe_32_chars', CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'], CURLOPT_RETURNTRANSFER => true]);
echo curl_exec($ch);
Python
import requests
res = requests.post('https://libreauth.nutexe.dev/api/1.3/', data={
    'type': 'init',
    'name': 'MyApp',
    'ownerid': 'XXXXXXXXXX',
    'ver': '1.0',
    'hash': 'md5_of_your_exe_32_chars'
})
print(res.json())
HTTP
POST /api/1.3/ HTTP/1.1
Host: libreauth.nutexe.dev
Content-Type: application/x-www-form-urlencoded

type=init&name=MyApp&ownerid=XXXXXXXXXX&ver=1.0&hash=md5_of_your_exe_32_chars
C#
var app = new LibreAuth("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
await app.InitAsync();
C++
LibreAuth::Client app("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
app.init();
JavaScript
const body = new URLSearchParams({
  type: 'init',
  name: 'MyApp',
  ownerid: 'XXXXXXXXXX',
  ver: '1.0',
  hash: 'md5_of_your_exe_32_chars'
});
fetch('https://libreauth.nutexe.dev/api/1.3/', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: body.toString() })
  .then(r => r.json()).then(console.log);
TypeScript
const app = new LibreAuth('MyApp', 'XXXXXXXXXX', '1.0', 'https://libreauth.nutexe.dev/api/1.3/');
await app.init();
Java
LibreAuth app = new LibreAuth("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
app.init();
Rust
let mut app = LibreAuth::new("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
app.init()?;
Ruby
app = LibreAuth.new('MyApp', 'XXXXXXXXXX', '1.0', 'https://libreauth.nutexe.dev/api/1.3/')
app.init
Perl
my $app = LibreAuth->new('MyApp', 'XXXXXXXXXX', '1.0', 'https://libreauth.nutexe.dev/api/1.3/');
$app->init;
Lua
local app = LibreAuth.new('MyApp', 'XXXXXXXXXX', '1.0', 'https://libreauth.nutexe.dev/api/1.3/')
app:init()
React
const app = new LibreAuth('MyApp', 'XXXXXXXXXX', '1.0', process.env.REACT_APP_API_URL);
await app.Init();
Vue
const app = new LibreAuth('MyApp', 'XXXXXXXXXX', '1.0', import.meta.env.VITE_API_URL);
await app.Init();
Unity
var app = new LibreAuth("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
await app.InitAsync();
WPF
var app = new LibreAuth("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
await app.InitAsync();
VB.NET
var app = new LibreAuth("MyApp", "XXXXXXXXXX", "1.0", "https://libreauth.nutexe.dev/api/1.3/");
await app.InitAsync();

Responses

application/json · object
{
  "success": true,
  "message": "A7F3C291",
  "sessionid": "abc123...",
  "ownerid": "XXXXXXXXXX",
  "appinfo": {
    "numUsers": "10",
    "numOnlineUsers": "3",
    "numKeys": "50",
    "version": "1.0",
    "customerPanelLink": "..."
  },
  "newSession": true,
  "nonce": "...",
  "pubkey": "ed25519_public_key_hex"
}
application/json · object
{
  "success": false,
  "message": "E04"
}
application/json · object
{
  "success": false,
  "message": "E05",
  "received_hash": "md5_of_your_exe_32_chars"
}
application/json · object
{
  "success": false,
  "message": "E18"
}
application/json · object
{
  "success": false,
  "message": "invalidver",
  "download": "https://..."
}

Common Errors

MessageHow to fix
E04Hash Check is ON — send MD5 of exe on init (hash or h)
E05MD5 client sends ≠ server whitelist — response includes received_hash / rh, whitelist_count / wc · hash troubleshooting
E18Wire token missing — use official LibreAuth SDK on /api/1.3/ or /api/1.4/
invalidverClient ver must match expected app version exactly