Back to docs

Getting Started

Learn how to sign up, create your first project, upload a script, generate license keys, and integrate the validation API.

1. Create an Account

Head to the signup page and create your account. You can start with the Free plan and upgrade later.

  • Choose a plan (Free, Pro, or Premium)
  • Verify your email address
  • Log in to your dashboard

2. Create a Project

Projects are containers for your scripts. Each project can have multiple scripts with their own settings.

  • Go to the Projects page in your dashboard
  • Click "Create Project" and give it a name
  • Optionally configure obfuscation defaults

3. Upload a Script

Upload your Luau script to the project. You can choose the obfuscation level and other settings.

  • Go to the Scripts page
  • Click "Upload Script" and select your .luau file
  • Choose obfuscation level (Basic, Normal, Full, or Maximum)
  • Click "Upload" — your script is now hosted and ready

4. Generate License Keys

Generate keys that users can use to validate access to your script. Keys can be HWID-locked and have expiration dates.

  • Go to the Keys page
  • Click "Generate Keys" and configure settings
  • Choose quantity, optional prefix, and expiry
  • Distribute the keys to your users

5. Integrate Validation

Add key validation to your script. Users must have a valid key to execute your protected script.

Example validation code:

local HttpService = game:GetService("HttpService")

local function validateKey(key, hwid)
    local response = HttpService:RequestAsync({
        Url = "https://luacrypt.dev/api/validate",
        Method = "POST",
        Headers = { ["Content-Type"] = "application/json" },
        Body = HttpService:JSONEncode({
            key = key,
            hwid = hwid
        })
    })
    
    local result = HttpService:JSONDecode(response.Body)
    return result
end

-- Usage
local key = "USER_KEY_HERE"
local hwid = "USER_HWID_HERE"  -- or game:GetService("RbxAnalyticsService"):GetClientId()

local result = validateKey(key, hwid)
if result.valid then
    print("Access granted! Welcome, " .. result.user)
    loadstring(game:HttpGet("YOUR_SCRIPT_URL"))()
else
    warn("Invalid key: " .. result.reason)
end

6. Deliver Your Script

Once validated, users can load your script using the loadstring-ready URL from your dashboard. The script is served obfuscated and ready to execute.

Loading a protected script:

-- After successful validation
local scriptUrl = "https://luacrypt.dev/api/scripts/abc123/load"
local success, result = pcall(function()
    return game:HttpGet(scriptUrl)
end)

if success then
    loadstring(result)()
else
    warn("Failed to load script: " .. result)
end