Create an API key in Creator Dashboard with 'universe-places:write' permission for the publish endpoint and 'universe-messaging-service:publish' permission for the messaging endpoint, scoped to your universe.
To publish/update a place, send POST https://apis.roblox.com/universes/v1/universes/<UNIVERSEID>/places/<PLACEID>/versions?versionType=Published with the .rbxlx or .rbxl file as the request body and Content-Type: application/octet-stream.
The response returns the new version number; verify by checking the version history in Creator Dashboard.
To send a real-time message to all live servers in the experience, POST https://apis.roblox.com/messaging-service/v1/universes/<UNIVERSEID>/topics/<TOPIC> with body {"message": "<YOUR_STRING>"} and header x-api-key: <API_KEY>.
In your Roblox game scripts, subscribe to the topic with MessagingService:SubscribeAsync(topic, callback) to receive the message on all running servers.
Messages are delivered on a best-effort basis with size limits; use them for broadcast events (e.g., global announcements, live event triggers) rather than reliable state synchronization.
Known gotchas
Publishing a place via Open Cloud immediately makes it live for all players if the experience is public — there is no staging step in the API itself; use a separate test universe for validation before publishing to production.
MessagingService has a throughput limit per universe; high-frequency publishing (e.g., per-player events) will be throttled or dropped — it is designed for low-frequency broadcasts, not per-entity updates.
API keys with place publishing permission are highly privileged; rotate them regularly and store them in secrets management rather than in CI environment variables that appear in logs.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp