
https://portals.toThis entry point keeps a compact endpoint index for integrations. Use the maintained documentation reference for safety guidance and current workflow details. Get your key from the access page. Some endpoints use x-access-key and asset upload endpoints use x-api-key — both accept the same key.
/api/v2/mcp/verify-access-keyValidates an access key and returns the associated user ID.
request body
accessKeystringreqresponse
{ data: { uid: string } }/api/v2/rooms/createCreates a new room from a template.
headers
x-access-key: <your-access-key>request body
templateNamestringreqname of the template to usecustomTemplateNamestringoptcustom template nameresponse
{ code: "SUCCESS", room: { RoomID: string, ... } }/api/v2/rooms/duplicateDuplicates an existing room and returns the new room ID.
headers
x-access-key: <your-access-key>request body
roomIdstringreqresponse
{ code: "SUCCESS", roomId: string, message: string }/api/v2/room/update-room-settingsUpdates the documented allowlist of top-level game metadata. The request body must wrap fields in room.
headers
x-access-key: <your-access-key>request body
room.RoomIDstringreqroom.Namestringoptroom.Descriptionstringoptroom.Imagestringoptimage URLroom.HideNameOnLoadingScreenbooleanoptroom.ShortDescriptionstringoptrequired when publishingresponse
{ data: { RoomID: string, ... } }/api/v2/mcp/download-room-dataDownloads the raw room data as binary (JSON buffer).
headers
x-room-id: <room-id>x-access-key: <your-access-key>response
Binary data (JSON buffer)/api/v2/mcp/upload-room-data-urlImports room data from a reviewed JSON location. Its HEAD response must include Content-Length and the file must be 50 MB or smaller.
headers
x-room-id: <room-id>x-access-key: <your-access-key>request body
jsonUrlstringreqreviewed JSON locationAsset uploads use a two-step process: request a short-lived upload URL, then PUT the reviewed file data directly to that URL. Keep the returned URL out of logs and source control.
/api/v2/utils/generate-json-upload-urlGenerates a temporary upload URL for a JSON room-data file. The handler creates the storage name; no body field is required.
Upload JSON with Content-Type: application/json. Use assetURL only for the reviewed import workflow; the service can delete that JSON after a successful import.
headers
x-api-key: <your-access-key>response
{ signedUploadURL: string, assetURL: string, objectKey: string }/api/v2/utils/generate-gltf-upload-urlGenerates a temporary upload URL for a GLB binary model.
The handler validates fileType when issuing the URL, but does not bind a GLB Content-Type to the signed request. Validate the model before upload and use a matching header.
headers
x-api-key: <your-access-key>request body
fileNamestringoptoptional name used when generating the object keyfileTypestringreq"model/gltf-binary"enableDracobooleanoptrecorded in the generated key; it does not compress the fileresponse
{ signedUploadURL: string, assetURL: string, objectKey: string }/api/v2/utils/generate-image-upload-urlGenerates a temporary upload URL for an image. Supported formats: JPEG, PNG, GIF, and WebP.
The handler validates fileType when issuing the URL, but does not bind an image Content-Type to the signed request. Validate the file before upload and use a matching header.
headers
x-api-key: <your-access-key>request body
fileTypestringreq"image/jpeg" | "image/jpg" | "image/png" | "image/gif" | "image/webp"response
{ signedUploadURL: string, assetURL: string, objectKey: string }