Reference: Game servers
Your live Roblox game servers, the players in them, and commands to one server or all of them.
Good to know
Authorization: Bearer tfy_…. Replace YOUR_SERVER_ID with your Discord server id. Errors are explained in Requests, errors and limits.GET /servers
GET /guilds/{guildId}/servers
What is running right now.
| Key permission | servers.read (See live servers) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
state | "online" | "unreachable" | "offline" | "live" | No | live (the default) for running servers, including ones that missed a heartbeat; online, unreachable or offline for exactly that state.default "live" |
universeId | string | No | Only the servers of this game (Roblox universe id).1 to 32 characters · digits only |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers" \
-H "Authorization: Bearer $TECHNIFIED_KEY"{
"items": [
{
"id": "gsv_01M5TXYM3M0AGW0A8F0KGGTY2W",
"jobId": "b1a2c3d4-0000-4000-8000-000000000001",
"universeId": "4520000000",
"placeId": "9870000000",
"state": "online",
"playerCount": 1,
"maxPlayers": 30,
"fps": null,
"memoryMb": null,
"uptimeSeconds": 600,
"region": null,
"lastHeartbeatAt": "2026-10-26T01:42:11.831Z",
"firstSeenAt": "2026-10-26T01:42:11.831Z"
}
]
}GET /servers/{serverId}
GET /guilds/{guildId}/servers/{serverId}
One server and everybody in it, with their avatars.
| Key permission | servers.read (See live servers) |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
serverId | string | Yes | A game server’s id (gsv_…), from GET /servers. |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/SERVERID" \
-H "Authorization: Bearer $TECHNIFIED_KEY"{
"id": "gsv_01M5TXYM3M0AGW0A8F0KGGTY2W",
"jobId": "b1a2c3d4-0000-4000-8000-000000000001",
"universeId": "4520000000",
"placeId": "9870000000",
"state": "online",
"playerCount": 1,
"maxPlayers": 30,
"fps": null,
"memoryMb": null,
"uptimeSeconds": 600,
"region": null,
"lastHeartbeatAt": "2026-10-26T01:42:11.831Z",
"firstSeenAt": "2026-10-26T01:42:11.831Z",
"players": [
{
"robloxUserId": "156",
"username": "builderman",
"displayName": "Builderman",
"joinedAt": "2026-10-26T01:42:11.828Z",
"avatarUrl": null
}
]
}GET /servers/{serverId}/commands
GET /guilds/{guildId}/servers/{serverId}/commands
What that server was told, and what it said back.
| Key permission | servers.read (See live servers) |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
serverId | string | Yes | A game server’s id (gsv_…), from GET /servers. |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
limit | integer | No | How many to answer with at most, 1 to 100.1 to 100 · default 25 |
cursor | string | No | The nextCursor of the page before, to get the next page. Absent: the first page.at most 64 characters |
order | "asc" | "desc" | No | desc for newest first, asc for oldest first.default "desc" |
state | "pending" | "delivered" | "completed" | "failed" | "expired" | No | Only commands in this state. |
type | "kick" | "ban" | "unban" | "mute" | "unmute" | "message" | "announce" | "teleport" | "shutdown" | "custom" | No | Only commands of this type. |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/SERVERID/commands" \
-H "Authorization: Bearer $TECHNIFIED_KEY"POST /servers/{serverId}/commands
POST /guilds/{guildId}/servers/{serverId}/commands
Tells one server to do something.
| Key permission | servers.command (Send commands to a server) |
| Retry safely | Send an Idempotency-Key header; a retry with the same one is not done twice. |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
serverId | string | Yes | A game server’s id (gsv_…), from GET /servers. |
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | What it is |
|---|---|---|---|
command | object, one of the shapes below | Yes | What to do. type decides which other fields it takes. |
expiresInSeconds | integer | No | How long the command waits for the server to pick it up, 5 to 600 seconds.5 to 600 · default 60 |
command takes one of these shapes:
type: "kick" · Removes one player from the server.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "kick" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
type: "ban" · Keeps one player out of this one server. For a ban in every server, issue a punishment instead.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "ban" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
expiresAt | string or null | No | When it ends (ISO 8601), or null for as long as that server runs.ISO 8601 date and time · default null |
type: "unban" · Lifts a ban given with a command.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "unban" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
type: "mute" · Stops one player chatting in this server.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "mute" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
expiresAt | string or null | No | When it ends (ISO 8601), or null for as long as that server runs.ISO 8601 date and time · default null |
type: "unmute" · Lifts a mute given with a command.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "unmute" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
type: "message" · Shows one player a message.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "message" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
message | string | Yes | What the player is shown.1 to 500 characters |
type: "announce" · Shows every player in the server a message.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "announce" | Yes | |
message | string | Yes | What every player is shown.1 to 500 characters |
type: "teleport" · Sends one player to another place.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "teleport" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
placeId | string | Yes | The place to send them to.1 to 32 characters · digits only |
jobId | string or null | No | A particular server of that place, or null for any.at most 100 characters · default null |
type: "shutdown" · Closes the server and sends everybody out.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "shutdown" | Yes | |
reason | string | No | What players are shown as they leave.at most 500 characters · default "" |
type: "custom" · Your own action, handed to your game code as it is.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "custom" | Yes | |
action | string | Yes | A name your own game code listens for.1 to 64 characters |
data | object | No | Anything your game code needs, as JSON.default {} |
Example
curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/SERVERID/commands" \
-H "Authorization: Bearer $TECHNIFIED_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"command":{"type":"message","robloxUserId":"156","message":"Please come to the station."}}'{
"id": "cmd_01M5TXYMA2NJ4NFTJYEP01BK35",
"serverId": "gsv_01M5TXYM3M0AGW0A8F0KGGTY2W",
"broadcastId": null,
"type": "message",
"payload": {
"robloxUserId": "156",
"message": "Please come to the station."
},
"state": "pending",
"punishmentId": null,
"issuer": {
"type": "key",
"id": "key_01M5TXYJPZQGNT2KXZG3ZBA672",
"label": "key:test key"
},
"deliveredAt": null,
"finishedAt": null,
"result": null,
"error": null,
"expiresAt": "2026-10-26T01:43:12.033Z",
"createdAt": "2026-10-26T01:42:12.034Z"
}POST /servers/broadcast
POST /guilds/{guildId}/servers/broadcast
Tells every live server at once. A separate permission, because the reach is different.
| Key permission | servers.broadcast (Send to every server at once) |
| Retry safely | Send an Idempotency-Key header; a retry with the same one is not done twice. |
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | What it is |
|---|---|---|---|
command | object, one of the shapes below | Yes | What to do. type decides which other fields it takes. |
universeId | string | No | Only the servers of this game (Roblox universe id). Absent: every live server.1 to 32 characters · digits only |
expiresInSeconds | integer | No | How long the command waits for the server to pick it up, 5 to 600 seconds.5 to 600 · default 60 |
command takes one of these shapes:
type: "kick" · Removes one player from the server.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "kick" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
type: "ban" · Keeps one player out of this one server. For a ban in every server, issue a punishment instead.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "ban" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
expiresAt | string or null | No | When it ends (ISO 8601), or null for as long as that server runs.ISO 8601 date and time · default null |
type: "unban" · Lifts a ban given with a command.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "unban" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
type: "mute" · Stops one player chatting in this server.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "mute" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
reason | string | Yes | Why. The player is shown this.at most 500 characters |
expiresAt | string or null | No | When it ends (ISO 8601), or null for as long as that server runs.ISO 8601 date and time · default null |
type: "unmute" · Lifts a mute given with a command.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "unmute" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
type: "message" · Shows one player a message.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "message" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
message | string | Yes | What the player is shown.1 to 500 characters |
type: "announce" · Shows every player in the server a message.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "announce" | Yes | |
message | string | Yes | What every player is shown.1 to 500 characters |
type: "teleport" · Sends one player to another place.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "teleport" | Yes | |
robloxUserId | string | Yes | The Roblox user id of the player.1 to 32 characters · digits only |
placeId | string | Yes | The place to send them to.1 to 32 characters · digits only |
jobId | string or null | No | A particular server of that place, or null for any.at most 100 characters · default null |
type: "shutdown" · Closes the server and sends everybody out.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "shutdown" | Yes | |
reason | string | No | What players are shown as they leave.at most 500 characters · default "" |
type: "custom" · Your own action, handed to your game code as it is.
| Field | Type | Required | What it is |
|---|---|---|---|
type | "custom" | Yes | |
action | string | Yes | A name your own game code listens for.1 to 64 characters |
data | object | No | Anything your game code needs, as JSON.default {} |
Example
curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/broadcast" \
-H "Authorization: Bearer $TECHNIFIED_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"command":{"type":"announce","message":"Event starts in 10 minutes!"}}'{
"id": "bct_01M5TXYMD267E378JYEXPZ920M",
"addressed": 1,
"type": "announce"
}GET /servers/broadcasts/{broadcastId}
GET /guilds/{guildId}/servers/broadcasts/{broadcastId}
How a broadcast is landing, server by server.
| Key permission | servers.read (See live servers) |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
broadcastId | string | Yes | A broadcast’s id (bct_…), from sending it. |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/broadcasts/BROADCASTID" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /servers/experiences
GET /guilds/{guildId}/servers/experiences
The experiences that have ever reported in.
| Key permission | servers.read (See live servers) |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/experiences" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /servers/players
GET /guilds/{guildId}/servers/players
| Key permission | servers.read (See live servers) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
q | string | Yes | The start of a username or display name, or a whole Roblox user id.1 to 64 characters |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/servers/players?q=Q" \
-H "Authorization: Bearer $TECHNIFIED_KEY"{
"items": [
{
"robloxUserId": "156",
"username": "builderman",
"displayName": "Builderman",
"joinedAt": "2026-10-26T01:42:11.828Z",
"avatarUrl": null,
"server": {
"id": "gsv_01M5TXYM3M0AGW0A8F0KGGTY2W",
"universeId": "4520000000",
"placeId": "9870000000",
"region": null,
"state": "online",
"playerCount": 1,
"maxPlayers": 30
}
}
]
}Still stuck? Get help from the Technified team.