SDK Installation
Download the Luau SDK files, place them in your Roblox game, and configure your API key. The whole setup takes under 10 minutes.
Downloading the SDK files#
In your RoPerms dashboard, go to Settings → API and click Download SDK. This downloads three Lua files:
RoPerms.lua— the main server-side module. Required.RoPermsClient.lua— the client-side companion script for tool bans and chat bans. Required if you use punishments.RoPermsPayments.lua— drop-in payment handler for Developer Products. Only needed if you use Payments.
You can also download individual files from the download endpoint:/api/sdk/download?file=RoPerms.lua
Placing files in Studio#
RoPerms.lua (server module)
- 1
Insert a ModuleScript
In Roblox Studio, place a new ModuleScript insideServerScriptService(or anywhere accessible to server scripts). - 2
Paste the module code
OpenRoPerms.luaand paste its contents into the ModuleScript. Rename the ModuleScript toRoPerms.
RoPermsClient.lua (client script)
- 1
Insert a LocalScript
Place a new LocalScript insideStarterPlayer → StarterPlayerScripts. - 2
Paste the client code
Paste the contents ofRoPermsClient.luainto the LocalScript. Rename it toRoPermsClient.
ℹWhy a client script?
RoPermsClient.lua handles hiding the Backpack and Chat CoreGUI for tool-banned and chat-banned players. Server scripts cannot modify these CoreGUI elements — they must be controlled from a LocalScript.Configuration#
Open RoPerms.lua and find the CONFIG block near the top of the file:
local CONFIG = {
-- Required: your RoPerms API key from Settings → API
apiKey = "your-api-key-here",
-- Required: the base URL of your RoPerms instance
baseUrl = "https://roperms.app",
-- How long (seconds) to cache player data per-player
cacheDuration = 60,
-- How often (seconds) to poll for pending kicks
kickPollInterval = 5,
-- Whether to track server heartbeats (live server panel)
heartbeatEnabled = true,
}✕Store your API key as a Roblox Secret
game:GetService("HttpService"):GetSecret("ROPERMS_KEY").local CONFIG = {
apiKey = game:GetService("HttpService"):GetSecret("ROPERMS_KEY"),
baseUrl = "https://roperms.app",
cacheDuration = 60,
kickPollInterval = 5,
}Requiring the module#
From any Script (not LocalScript) in your game, require the module:
local RoPerms = require(game.ServerScriptService.RoPerms)
RoPerms.Init()Call RoPerms.Init() once at server startup before using any other functions. This initialises the HTTP client, starts the kick-poll loop, and sends the first server heartbeat.
Enabling HTTP requests#
RoPerms uses HttpService to communicate with the backend. You must enable HTTP requests in Studio:
- 1
Open Game Settings
In Roblox Studio, click File → Game Settings (or the gear icon in the Home tab). - 2
Enable HTTP requests
Under Security, toggle Allow HTTP Requests to on. - 3
Publish your place
The setting does not persist in Studio test runs unless the place is published. Publish your place (File → Publish to Roblox) then test again.
Health check#
After setup, verify connectivity by calling RoPerms.Ping() from a Script. It should return true:
local RoPerms = require(game.ServerScriptService.RoPerms)
RoPerms.Init()
local ok = RoPerms.Ping()
print("RoPerms connected:", ok) -- should print: RoPerms connected: trueIf Ping() returns false, check:
- HTTP requests are enabled in Game Settings.
- Your API key is correct (copy it fresh from Settings → API).
- This place is claimed in Settings → Places.
- The server can reach
https://roperms.app(no network restrictions).
Basic usage example#
local Players = game:GetService("Players")
local RoPerms = require(game.ServerScriptService.RoPerms)
RoPerms.Init()
RoPerms.EnableEnforcement() -- auto-kick banned players
RoPerms.EnableActivityTracking() -- log play sessions
RoPerms.EnableModcallCommand() -- /modcall command
Players.PlayerAdded:Connect(function(player)
-- Check if the player has the VIP permission
if RoPerms.GetPerm(player, "vip") then
-- give VIP benefits here
end
end)