Documentation

xauth docs

Everything you need to protect a Roblox script and hand out access. If you can paste one line, you can ship.

Quickstart

  1. Create an account and verify your email.
  2. Create a project in the dashboard and pick a mode (keyless, free-key, or paid-key).
  3. Upload your script. xauth obfuscates it and binds it to a runtime key automatically.
  4. Copy your loader line from the project page.
  5. Hand out keys (for free/paid modes), from the dashboard or your Discord bot.
Your loader URL uses your project ID, e.g. https://xauth.live/loader/<project>. Set your public domain later, snippets update automatically.

Project modes

Every project runs one of three modes. You can switch any time; the same encryption applies to all of them.

ModeKey requiredBest for
KeylessNoPublic / free tools you still want VM-protected.
Free-keyYes (free)Whitelisting users without charging.
Paid-keyYes (you sell)Selling access with expiring, per-buyer keys.

The loader line

This is the only thing your users ever touch. Everything else, authentication, decryption, sessions and unloading, is handled for you.

Keyless

loadstring(game:HttpGet("https://xauth.live/loader/<project>"))()

Free-key / paid-key

local KEY = "paste-key-here"
loadstring(game:HttpGet("https://xauth.live/loader/<project>"))(KEY)
Only run the loader inside a Roblox executor. Opening the URL in a browser returns a blocked page, that's expected.

Keys

Keys are random and unguessable. Each key can carry:

  • Device limit, how many machines it may bind to (default 1).
  • Expiry, optional; the key stops working after it.
  • Note, a label for your own records (buyer name, order ID, etc.).
  • Status, active or banned. Banning takes effect on the next request.

Create, ban and delete keys from the dashboard Keys tab, or through your Discord bot.

HWID resets

A key binds to the first machine that uses it. If a legitimate user changes hardware, they can request a reset. Requests appear in the dashboard HWID requests tab, where you approve or deny each one. Approving clears the bound device so the key can bind again.

Sessions & kicks

Every run opens a short-lived session that keeps itself alive with periodic heartbeats. If the heartbeats stop, the session expires on its own. You can also kick any active session from the dashboard, the running script unloads cleanly on its next heartbeat.

Discord redemption

Connect a Discord bot so buyers can redeem keys themselves. When a buyer redeems a key, their Discord identity (username and avatar) is attached to that key and shown in your dashboard, so you always know who owns what.

Typical buyer commands:

  • Redeem, claim a key and link their Discord account.
  • Get script, receive their personal loader line.
  • Reset HWID, file a reset request for your approval.
  • Stats, see their key status and usage.
Setup instructions for the bot live in your dashboard once Discord integration is enabled for your account.

How protection works

At a high level, xauth never ships anything usable to disk:

  • Your script is compiled into our virtual machine and encrypted.
  • The key that unlocks it lives on the server and is only released to a request that has already authenticated.
  • Delivery happens over an authenticated session and is verified end-to-end.
  • The running payload checks that its session is still valid and stops if it isn't.

The practical result: a copied file is inert, a shared key fails on the second machine, and a revoked key or kicked session stops working right away.

We intentionally don't publish the internals of the handshake, encryption scheme or payload format. Keeping those private is part of the protection.

API overview

Most people never need the API, the dashboard and Discord bot cover day-to-day work. For automation, an authenticated management API lets you script the same actions:

  • Create and list projects, upload scripts, rotate settings.
  • Create, list, ban and delete keys.
  • List and resolve HWID reset requests.
  • Read audit and execution history.

Management calls require your account credentials and are rate-limited. The runtime endpoints your loader uses are handled automatically and aren't meant to be called by hand.

FAQ

Can someone just re-host my leaked file?

No. The file is encrypted and the decrypt key is never in it. Without an authenticated request to your project, it won't run.

What if a buyer shares their key?

The key binds to the first machine. The second machine fails. If they genuinely changed hardware, they request an HWID reset for your approval.

Will legit users get false-banned?

No. Environment anomalies are reported to you, not auto-enforced on the device, so a false positive never bricks a real user.

Does my script hang if auth fails?

No. Failed auth returns nothing to run and the loader exits cleanly. On success it unloads itself when the session ends.

Ready to lock your script?

Create a project and copy your loader line.

Get started