Prerequisites
Before you begin, make sure you have:- An XCS account with an organization created
- Owner or Admin access to the Roblox experience you want to integrate
- Access to the Roblox Creator Dashboard
rblx-messaging_service-transport flag in the
Experiments
tab of your Roblox experience’s settings.Step 1 — Get Your Roblox Universe ID
Your Universe ID identifies your Roblox experience on the Open Cloud platform.- Go to the Roblox Creator Dashboard (https://create.roblox.com).
- Select the experience you want to integrate from the dashboard.
- Look for the Universe ID in the experience’s configuration or URL. The URL typically follows this pattern:
https://create.roblox.com/dashboard/creations/experiences/{universeId}/overview. - Copy the numeric Universe ID.
Step 2 — Create an Open Cloud API Key
The Roblox Open Cloud API key allows XCS to publish messages to your experience’s MessagingService topic.- Go to the Roblox Creator Dashboard.
- Navigate to Open Cloud > API Keys (https://create.roblox.com/dashboard/credentials?page=apikeys).
- Click “Create API Key.”
- Configure the key with at least the following permission:
- MessagingService —
publishpermission (required for sending unlock commands)
- MessagingService —
- Copy the generated API key and store it securely. You will not be able to see it again.
Step 3 — Configure Roblox Integration on XCS
- Log in to the XCS Dashboard (https://xcs.restrafes.co).
- Navigate to your organization and select the location you want to configure.
- Go to the location’s Settings section.
- Enter the following:
- Roblox Universe ID — The numeric Universe ID from Step 1
- Open Cloud API Key — The API key from Step 2
- Click “Save.”
Step 4 — Implement the MessagingService Listener in Your Game
If you are using the stock XCS package in your Roblox experience, the MessagingService subscription is handled automatically — you can skip this step. If you are implementing the listener yourself, your game server must subscribe to the XCS unlock topic to receive unlock commands. The topic format is:{locationId} with your location’s UUID as shown in the XCS dashboard.
Here is an example Luau script that listens for unlock commands:
Step 5 — Acknowledge Unlock Commands (Player Scope)
For player-scoped unlocks, the XCS API polls for acknowledgment from your game server for up to 5 seconds. To enable acknowledgment, your game server must write back to the Redis-backed status key or call an acknowledgment endpoint after processing the unlock command.Troubleshooting
Remote unlock returns 422 (missing Universe ID or API key)
Remote unlock returns 422 (missing Universe ID or API key)
Go to the location’s settings on the XCS dashboard and verify that the Universe ID and Open Cloud API Key are filled in and correct. Make sure the API key has MessagingService publish permissions.
Remote unlock returns 502 (Roblox MessagingService error)
Remote unlock returns 502 (Roblox MessagingService error)
This indicates that Roblox Open Cloud rejected the message. Check that:
- The Open Cloud API key has not been revoked or expired
- The API key has MessagingService publish permission
- The Universe ID is correct and the experience is published
- The API key belongs to the same Roblox account that owns the experience
Game server does not receive unlock messages
Game server does not receive unlock messages
Verify that your game server has a
MessagingService:SubscribeAsync call for the correct topic:
xcs-unlock-. The locationId must
match exactly (case-sensitive).
Also ensure that your game server is running and has an active Roblox server instance. MessagingService only delivers messages to running server instances.
Remote unlock times out (504)
Remote unlock times out (504)
This means the unlock command was sent to Roblox MessagingService but your game server did not acknowledge it within 5 seconds. This is expected if:
- Your game server is not currently running (no active instances)
- The MessagingService subscription is not set up correctly
- The acknowledgment mechanism is not implemented in your game script
The unlock command was still delivered to any running server instances, even though the API returned a timeout. Universe-scoped unlocks are acknowledged immediately and never time out.
Next up: Remote Unlock API Reference for the complete endpoint documentation.

