Skip to main content
Server Manager lets staff control live Roblox servers from the dashboard: see who is online, kick, ban, mute, message, broadcast, or shut a server down. It works as a command queue, and your game server speaks to it with a guild API key.
The queue endpoints (servers/heartbeat, servers/:serverId/commands, and the command ack) require the server:write scope. Quick-installed plugin keys have it automatically. See Scopes.

How the queue works

Only these three endpoints accept a guild API key. The dashboard side, listing servers and enqueuing a command (/guilds/:guildId/servers...), requires a logged-in dashboard session with the server_manager permission and is not callable with an API key.
These endpoints use camelCase field names, like the rest of the plugin protocol.

Heartbeat

Report a live server and its current player list. Send this on a short loop, for example every 10 seconds (a server counts as stale after 30 seconds without a heartbeat). It keeps the server marked online, feeds the player list shown in the dashboard, and its response carries any pending commands for this server, so no separate poll loop is needed.
string
required
Must match your API key’s guild.
string
required
The Roblox game.JobId.
string
required
string
string
number
required
number
required
number
Seconds since the server started.
number
object[]
required
The current players.
Players missing from a heartbeat are treated as having left and are removed from the server’s live list. data.commands holds up to 20 pending commands (oldest first, including broadcast commands targeted at every server); they are marked as delivered on return, so execute and acknowledge each one.

Poll for commands

Alternative to heartbeat-delivered commands: fetch the pending commands queued for this server on a dedicated loop. The response also includes broadcast commands targeted at every server. Polled commands are marked as delivered. If you already send heartbeats, you do not need this endpoint.
string
required
The same game.JobId you heartbeat with.
object[]
Up to 20 pending commands, oldest first.

Command types

Player commands carry a targetRobloxId. Server-level commands like broadcast and shutdown do not. A broadcast is queued for every server at once.

Acknowledge a command

After running a command, report the outcome. This moves the command to acknowledged so it is not retried, and surfaces the result in the dashboard.
string
required
number
required
The id from the poll response.
boolean
required
string
A short human-readable result, for example “Kicked Shedletsky”.
string
An error message when success is false.
If you run the Roblox integration or Technified Admin, this whole loop is already implemented. You only need these endpoints when building a custom admin system.