Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
POST /v1/{universeId}/places/{placeId}/versions — universes-api/v1
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: /v1/{universeId}/places/{placeId}/versions
Servers:
https://apis.roblox.com/universes/
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": [
"universe-places:write"
]
}
],
"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.",
"in": "header",
"name": "x-api-key"
}
}
} Complete Operation Definition
{
"tags": [
"Places"
],
"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": [
"universe-places:write"
]
}
],
"x-roblox-scopes": [
{
"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
}