Loading...
Loading...
Open Cloud REST APIs and HttpService - API keys/OAuth, v2 patterns, data/memory stores from outside, publishMessage, place publishing, server restarts, Luau execution, bans, configs/experiments, notifications, webhooks with roblox-signature verification, rate limits, Secrets. Use when building external tools, dashboards, bots, CI/CD, admin panels, or calling web APIs from a game.
npx skill4agent add el4cteo/roblox-skills roblox-open-cloudhttps://apis.roblox.com*.roblox.comx-api-key: <key>POST /api-keys/v1/introspect| Task | Endpoint |
|---|---|
| Data store entries | |
| Ordered data stores | |
| Memory stores | |
| Cross-server message into live servers | |
| Publish a place file | `POST /universes/v1/{u}/places/{p}/versions?versionType=Published |
| Restart servers (after an update) | |
| Run Luau in a cloud server | |
| Bans | |
| Experience notifications | |
| Secrets store | |
| Configs / experiments | `/creator-configs-public-api/v1/configs/universes/{u}/repositories/{repo}[/draft |
| Universe/place settings | |
| Assets, badges, game passes, developer products, groups, users, inventory | See the Open Cloud reference by feature. |
create.roblox.com/docs/cloud/referencemaxPageSizenextPageTokenpageTokenpathGET /cloud/v2/{path}donefilterx-ratelimit-*429roblox-data-stores{ code, message }4295xx# Read one player's data store entry
curl -s "https://apis.roblox.com/cloud/v2/universes/$UNIVERSE_ID/data-stores/PlayerData/entries/User_$USER_ID" \
-H "x-api-key: $ROBLOX_API_KEY"
# Announce to all live servers (the game subscribes to the "Announcements" topic)
curl -s -X POST "https://apis.roblox.com/cloud/v2/universes/$UNIVERSE_ID:publishMessage" \
-H "x-api-key: $ROBLOX_API_KEY" -H "Content-Type: application/json" \
-d '{"topic":"Announcements","message":"{\"text\":\"Update in 5 minutes\"}"}'pcallresponse.SuccessHttpService:GetSecret(name)SecretAddPrefixAddSuffixroblox.com--!strict
local HttpService = game:GetService("HttpService")
local function postToWebhook(url: string, payload: { [string]: any }): boolean
local ok, response = pcall(function()
return HttpService:RequestAsync({
Url = url,
Method = "POST",
Headers = { ["Content-Type"] = "application/json" },
Body = HttpService:JSONEncode(payload),
})
end)
if not ok then
warn("HTTP request failed to send:", response)
return false
end
if not response.Success then
warn(`HTTP {response.StatusCode}: {response.StatusMessage}`)
end
return response.Success
end
local function banViaOpenCloud(universeId: number, userId: number, reason: string): boolean
local ok, response = pcall(function()
return HttpService:RequestAsync({
Url = `https://apis.roblox.com/cloud/v2/universes/{universeId}/user-restrictions/{userId}?updateMask=gameJoinRestriction`,
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json",
["x-api-key"] = HttpService:GetSecret("OpenCloudKey"),
},
Body = HttpService:JSONEncode({
gameJoinRestriction = { active = true, displayReason = reason, privateReason = reason },
}),
})
end)
return ok and response.Success
end
return { postToWebhook = postToWebhook, banViaOpenCloud = banViaOpenCloud }Players:BanAsyncDataStoreServiceroblox-data-storesroblox-toolingroblox-testingroblox-analytics-liveopsroblox-security