el4cteo/roblox-skills

roblox-open-cloud

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, ra…

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/el4cteo/roblox-skills --skill roblox-open-cloud

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Roblox Open Cloud and HttpService

Base URL: https://apis.roblox.com. Prefer Open Cloud endpoints (API key or OAuth 2.0, stable). Legacy cookie-authenticated *.roblox.com web APIs can break without notice — don't build on them.

Authentication

  • API keys (Creator Dashboard → Open Cloud → API Keys): for your own/your group's resources and

automation. Grant the minimum scopes per universe, set an IP allowlist (CIDR) and expiration, store as a secret (CI secret, vault), send as header x-api-key: <key>. Group-owned resources need a key created under the group. Introspect a key with POST /api-keys/v1/introspect.

  • OAuth 2.0 (authorization code + PKCE): apps acting on behalf of other users (third-party tools).
  • Never ship keys in game scripts, attributes, or client code.

Common endpoints (v2 unless noted)

TaskEndpoint
Data store entriesGET/POST /cloud/v2/universes/{u}/data-stores/{ds}/entries, GET/PATCH/DELETE .../entries/{id}, :increment, :listRevisions; scopes via /scopes/{scope}/entries
Ordered data stores/cloud/v2/universes/{u}/ordered-data-stores/{ods}/scopes/{scope}/entries[...]
Memory stores/cloud/v2/universes/{u}/memory-store/sorted-maps/{map}/items, `/queues/{q}/items[:read:discard], memory-store:flush`
Cross-server message into live serversPOST /cloud/v2/universes/{u}:publishMessage { "topic": "...", "message": "..." }
Publish a place file`POST /universes/v1/{u}/places/{p}/versions?versionType=PublishedSaved (body: .rbxl`)
Restart servers (after an update)POST /cloud/v2/universes/{u}:restartServers
Run Luau in a cloud serverPOST /cloud/v2/universes/{u}/places/{p}[/versions/{v}]/luau-execution-session-tasks
BansPATCH /cloud/v2/universes/{u}/user-restrictions/{userId}?updateMask=gameJoinRestriction (scope universe.user-restriction:write), user-restrictions:listLogs
Experience notificationsPOST /cloud/v2/users/{userId}/notifications
Secrets store/cloud/v2/universes/{u}/secrets
Configs / experiments`/creator-configs-public-api/v1/configs/universes/{u}/repositories/{repo}[/draft/publish], /experimentation/...`
Universe/place settingsGET/PATCH /cloud/v2/universes/{u}, /cloud/v2/universes/{u}/places/{p}
Assets, badges, game passes, developer products, groups, users, inventorySee the Open Cloud reference by feature.

The authoritative list with scopes and per-endpoint rate limits is the Open Cloud reference (create.roblox.com/docs/cloud/reference) and its OpenAPI description — check it before writing a client.

Patterns

  • Pagination: pass maxPageSize; follow nextPageToken → pageToken until empty.
  • Long-running operations: some calls return an operation path; poll GET /cloud/v2/{path} until done.
  • Filtering: filter query parameter on list endpoints that support it.
  • Rate limits: read the x-ratelimit-* response headers; on 429, back off exponentially with jitter.

Data store budgets are shared between Open Cloud and live game servers — throttle bulk scripts so they don't starve the game (see roblox-data-stores).

  • Errors: JSON { code, message }; retry only 429 and 5xx.
  • Legacy web APIs (cookie or unauthenticated IP): after Oct 19, 2026, limits on the badges, datastores,

game-persistence, inventory, thumbnails, and users APIs drop sharply (often to 100 requests/min). Open Cloud limits don't change: use Open Cloud with an API key for tools and bots, and cache responses.

  • Thumbnails: from Oct 26, 2026 an unapproved or broken thumbnail returns 200 with a completed

operation containing an error object (not 503); check error before reading response.imageUri.

bash
# 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\"}"}'

HttpService inside games

  • Enable Allow HTTP Requests (Experience Settings → Security). Server-side only.
  • Limits: 500 requests/min per server for external URLs; Open Cloud calls have a separate

2,500/min per server budget. Always pcall; handle non-2xx (response.Success).

  • Store keys in the experience Secrets store (Creator Hub) and read with HttpService:GetSecret(name),

which returns an opaque Secret usable in headers (and AddPrefix/AddSuffix), not a readable string.

  • Only a subset of Open Cloud endpoints can be called from games (assets, bans, configs, data/memory

stores, messaging, notifications, and more — check the in-game HTTP docs list). Calls to other roblox.com domains are blocked.

luau
--!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 }

In-game, prefer native APIs (Players:BanAsync, DataStoreService) over calling Open Cloud for the same thing. Never log or send player chat/PII to third parties without a legitimate purpose and compliance review.

Webhooks (Roblox → your server)

Configure in Creator Hub → Account Settings → Webhooks (max 5; for group games only the group owner). Triggers: subscription purchased/renewed/cancelled/refunded/resubscribed, right-to-erasure requests, commerce order paid/refunded, transaction refunded (Robux refunds/chargebacks of developer products, passes, private servers, Paid Access — revoke developer product benefits yourself). Verification details and a Node/Python verifier: references/webhooks.md.

Related skills

roblox-data-stores (budgets, schema), roblox-tooling (CI publishing), roblox-testing (Luau execution tests), roblox-analytics-liveops (configs, experiments), roblox-security (bans, secrets).

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills
el4cteo
커뮤니티

roblox-data-stores

Persistence and cross-server data - DataStoreService (UpdateAsync, retries, budgets, limits), session locking with ProfileStore, schema migrations, OrderedDataStore leaderboards, MemoryStore queues/sorted maps/hash maps, MessagingService, right-to-be-forgotten. Use when saving player data, building leaderboards or queues, or fixing data loss, duplication, or throttling.

1시간 설치 수
3
GitHub Stars
77
업데이트
11월 3일
el4cteo
커뮤니티

roblox-luau

Modern, type-safe Luau for Roblox, covering --!strict and the new type solver, generics, string interpolation, if-expressions, task library, require-by-string, module/OOP patterns, error handling with retries, buffer/vector, and legacy APIs to avoid. Use when writing, refactoring, or explaining any Roblox script, fixing type errors, or modernizing old Lua code.

1시간 설치 수
3
GitHub Stars
77
업데이트
11월 3일
el4cteo
커뮤니티

roblox-physics

Physics and spatial queries - Raycast/Blockcast/Spherecast, overlap queries, collision groups, Touched pitfalls, collision summaries (impact point/normal/speed), assemblies and welds, mover constraints replacing BodyMovers, mechanical constraints, network ownership, CFrame math, vehicles/projectiles, and server authority (BindToSimulation, prediction, rollback). Use when moving parts, detecting hits, building vehicles or projectiles, or fixing jitter, flinging, or ownership bugs.

1시간 설치 수
3
GitHub Stars
77
업데이트
11월 3일
el4cteo
커뮤니티

roblox-analytics-liveops

Analytics and live ops - AnalyticsService economy/funnel/onboarding/progression/custom events, player segments, experience configs via ConfigService, A/B experiments, badges, experience notifications, timed events, daily rewards, season passes. Use when instrumenting a game, tuning economy or onboarding, running A/B tests or feature flags, or planning live events and re-engagement.

1시간 설치 수
2
GitHub Stars
66
업데이트
10월 17일