API
This is the Axle site API. It is not the compiler manual.
Obfuscate
POST/api/obfuscate
Send JSON. Every protection defaults to off when the field is false or missing. Sign in and the browser sends your session. A script or another server sends Authorization: Bearer axle_… with the key from the dashboard. A free key can obfuscate 100 times a day. The count resets at 00:00 UTC.
JSON · request body
{
"source": "print(1)",
"preset": "SWIFT",
"profile": "sunc-full",
"generation": 1,
"compress": "never",
"strings": false,
"numbers": false,
"stripNames": false,
"mba": "off",
"fastRuntime": false,
"antiTamper": false
}
| Field | Values |
|---|---|
source | Lua or Luau text, required, 512 KiB max |
preset | SWIFT, BALANCED, HARDENED. Default SWIFT |
profile | sunc-full, unc-lite, roblox-studio |
generation | 1 to 65535. 1 keeps the layout. 2 and up remix it |
compress | never, auto, loadstring |
stringsnumbersstripNamesfastRuntimeinlineunrollmacros | booleans, default false |
mba | off, light, on |
antiTamper | boolean. Applied only on HARDENED |
watermarklicenseKeyserverLock | booleans. License and server lock need license and host |
noncejobencfunc | empty, or at least 16 characters |
precheckprecheckFrom | precheckFrom is place or hwid |
Result
A 200 response is JSON with these fields.
| Field | Contents |
|---|---|
lua | The obfuscated script |
presetprofilegeneration | What the build used |
seed | The seed behind this layout |
token | HARDENED only. The first line of lua sets _ak to this token |
Errors
| Status | Meaning |
|---|---|
| 400 | Bad body, or the compiler rejected the script |
| 401 | Not signed in and no valid key sent |
| 413 | Script over 512 KiB |
| 429 | The daily limit is spent |
| 502 | The compiler did not answer |
Auth
/api/auth/* is Better Auth. The account routes are below.
GET
/api/me- Returns the signed-in email, key prefix, and today’s remaining count.
POST
/api/keys- Creates the key, or rotates it when the body is
{"rotate":true}. The full key is in that response only.