Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
POST /universes/v1/{universeId}/places/{placeId}/versions — openapi
Publish a new place or update an existing place with a new version. Provide a RBXL or RBXLX file in the data-binary.
Endpoint
Method: POST
Path: /universes/v1/{universeId}/places/{placeId}/versions
Servers:
https://apis.roblox.com
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
| universeId | path | true | The identifier of the experience in which you want to publish your place to. You can copy your experience's Universe ID on Creator Dashboard. |
| placeId | path | true | The identifier of your place. See Publishing places with API keys on obtaining a Place ID. |
| versionType | query | false | Can only be either: - Saved: the place file should be saved, but not published. - Published: the place file should be saved and published. |
[
{
"name": "universeId",
"in": "path",
"required": true,
"description": "The identifier of the experience in which you want to publish your place to. You can [copy your experience's Universe ID](/cloud/guides/usage-place-publishing.md#publishing-a-place) on **Creator Dashboard**.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"required": true,
"description": "The identifier of your place. See [Publishing places with API keys](/cloud/guides/usage-place-publishing.md) on obtaining a Place ID.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "versionType",
"in": "query",
"description": "Can only be either: \n- `Saved`: the place file should be saved, but not published. \n - `Published`: the place file should be saved and published.",
"schema": {
"type": "string",
"nullable": true
}
}
] Responses
| Status | Description |
|---|---|
| 200 | Returns the published place's version number. |
| 400 | Invalid request / Invalid file content. |
| 401 | API key not valid for operation, user does not have authorization. |
| 403 | Publish not allowed on place. |
| 404 | Place or universe does not exist. |
| 409 | Place not part of the universe. |
| 500 | Server internal error / Unknown error. |
{
"200": {
"description": "Returns the published place's version number.",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "{\"versionNumber\":7}"
}
}
}
},
"400": {
"description": "Invalid request / Invalid file content."
},
"401": {
"description": "API key not valid for operation, user does not have authorization."
},
"403": {
"description": "Publish not allowed on place."
},
"404": {
"description": "Place or universe does not exist."
},
"409": {
"description": "Place not part of the universe."
},
"500": {
"description": "Server internal error / Unknown error."
}
} Authentication
{
"security": [
{
"roblox-api-key": []
}
],
"securitySchemes": {
"roblox-api-key": {
"type": "apiKey",
"description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
"name": "x-api-key",
"in": "header"
},
"roblox-legacy-cookie": {
"type": "apiKey",
"description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
"in": "cookie",
"name": ".ROBLOSECURITY"
},
"roblox-oauth2": {
"type": "oauth2",
"description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
"tokenUrl": "https://apis.roblox.com/oauth/v1/token",
"refreshUrl": "https://apis.roblox.com/oauth/v1/token",
"scopes": {}
}
}
}
}
} Complete Operation Definition
{
"tags": [
"Places",
"Universes"
],
"operationId": "Places_CreatePlaceVersionApiKey",
"x-roblox-cloud-api-operation-name": "Publish a Place",
"x-roblox-stability": "BETA",
"description": "Publish a new place or update an existing place with a new version. Provide a RBXL or RBXLX file in the data-binary.",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"description": "The identifier of the experience in which you want to publish your place to. You can [copy your experience's Universe ID](/cloud/guides/usage-place-publishing.md#publishing-a-place) on **Creator Dashboard**.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"required": true,
"description": "The identifier of your place. See [Publishing places with API keys](/cloud/guides/usage-place-publishing.md) on obtaining a Place ID.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "versionType",
"in": "query",
"description": "Can only be either: \n- `Saved`: the place file should be saved, but not published. \n - `Published`: the place file should be saved and published.",
"schema": {
"type": "string",
"nullable": true
}
}
],
"responses": {
"200": {
"description": "Returns the published place's version number.",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "{\"versionNumber\":7}"
}
}
}
},
"400": {
"description": "Invalid request / Invalid file content."
},
"401": {
"description": "API key not valid for operation, user does not have authorization."
},
"403": {
"description": "Publish not allowed on place."
},
"404": {
"description": "Place or universe does not exist."
},
"409": {
"description": "Place not part of the universe."
},
"500": {
"description": "Server internal error / Unknown error."
}
},
"security": [
{
"roblox-api-key": []
}
],
"x-roblox-scopes": [
{
"name": "universe-places:write",
"targetResourceSpecifier": "v1"
},
{
"name": "universe-places:write"
}
],
"x-roblox-cloud-api-operation": true,
"x-roblox-code-samples": [
{
"language": "curl",
"script": "curl --location --request POST 'https://apis.roblox.com/universes/v1/{universeId}/places/{placeId}/versions?versionType=Published' \n--header 'x-api-key: abc...' \n--header 'Content-Type: application/xml' \n--data-raw '<roblox></roblox>'\n"
}
],
"x-roblox-size-limit": 10485760,
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 30
}
},
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#Places_CreatePlaceVersionApiKey"
}
}