Assets API
Assets
https://apis.roblox.com/assets
Create Asset
POST /v1/assets
Request
Create Asset
curl --location --request POST 'https://apis.roblox.com/assets/v1/assets' \
--header 'x-api-key: {apiKey}' \
--form 'request="{
\"assetType\": \"Model\",
\"displayName\": \"Name\",
\"description\": \"This is a description\",
\"creationContext\": {
\"creator\": {
\"userId\": \"${userId}\"
}
}
}"' \
--form 'fileContent=@"/filepath/model.fbx";type=model/fbx'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Get Asset
GET /v1/assets/{assetId}
Parameters
assetId string
Path
Required
readMask string
Request
Get Asset without readMask
curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}' \
--header 'x-api-key: {apiKey}'
Get Asset with readMask
curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}?readMask={read_mask}' \
--header 'x-api-key: {apiKey}'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Update Asset
PATCH /v1/assets/{assetId}
Parameters
assetId string
Path
Required
updateMask string
Request
Update Content Only and Create a New Version
curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}' \
--header 'x-api-key: {apiKey}' \
--form 'request="{\"assetId\": {assetId} }"' \
--form 'fileContent="@\"{file-path}\""'
Update Content and Metadata
curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=description%2CdisplayName' \
--header 'x-api-key: {apiKey}' \
--form 'request="{
\"assetType\": \"{assetType}\",
\"assetId\": {assetId},
\"displayName\": \"{new display name}\",
\"description\": \"{new description}\",
\"creationContext\": {
\"creator\": {
\"userId\": {userId}
},
\"expectedPrice\":{expectedPrice}
},
}"' \
--form 'fileContent=@\"{file-path}\"'
Update a List of Previews
curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=previews' \
--header 'x-api-key: {apiKey}' \
--form 'request="{\"assetId\": \"{assetId}\", \"previews\": [{\"asset\": \"assets/123\", \"altText\": \"Your alt text.\"}]}"'
Update Social Links
curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=twitchSocialLink%2CgithubSocialLink' \
--header 'x-api-key: {apiKey}' \
--form 'request="{\"assetId\": \"{assetId}\", \"twitchSocialLink\": {\"title\": \"Optional title\", \"uri\": \"https://twitch.tv/your-channel\"}, \"githubSocialLink\": {\"title\": \"Optional title\", \"uri\": \"https://github.com/your-repo\"}}"'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Archive Asset
POST /v1/assets/{assetId}:archive
Parameters
assetId string
Path
Required
Request
Archive Asset
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:archive' \
--header 'x-api-key: {apiKey}' \
--header 'Content-Type: application/json'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Restore Asset
POST /v1/assets/{assetId}:restore
Parameters
assetId string
Path
Required
Request
Restore Asset
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:restore' \
--header 'x-api-key: {apiKey}' \
--header 'Content-Type: application/json'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Get Asset Version
GET /v1/assets/{assetId}/versions/{versionNumber}
Parameters
assetId string
Path
Required
versionNumber string
Path
Required
Request
Get Asset Version
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetId}/versions/{versionNumber}' \
--header 'x-api-key: {apiKey}'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
List Asset Versions
GET /assets/v1/assets/{assetId}/versions
Parameters
assetId string
Path
Required
maxPageSize number
pageToken string
Request
List Asset Versions
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}/versions?pageToken=&maxPageSize=' \
--header 'x-api-key: {apiKey}'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Rollback Asset Version
POST /assets/v1/assets/{assetId}/versions:rollback
Parameters
assetId string
Path
Required
Request
Rollback Asset Versions
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}/versions:rollback' \
--header 'x-api-key: {apiKey}' \
--header 'Content-Type: application/json' \
--data '{\"assetVersion\":\"assets/{assetId}/versions/{versionNumber}\"}'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Get Operation
GET /v1/operations/{operationId}
Parameters
operationId string
Path
Required
Request
Get Operation
curl --location 'https://apis.roblox.com/assets/v1/operations/{operationId}' \
--header 'x-api-key: {apiKey}'
Response
Other Status Codes
Required Permissions
Limits
Per API Key: 60 requests every 60 seconds per IP Address
Objects
The following objects describe payloads that are accepted or returned. See each individual endpoint for more information on when these objects are used.Any
Attributes
@type string
Asset
Attributes
assetType string
assetId number
creationContext object
description string
displayName string
path string
revisionId string
revisionCreateTime string
moderationResult object
icon string
previews array<object>
state string
socialLink object
AssetVersion
Attributes
creationContext object
path string
moderationResult object
CreationContext
Attributes
creator object
Required
expectedPrice number
Creator
Attributes
userId number
groupId number
ModerationResult
Attributes
moderationState string
Operation
Attributes
path string
metadata object
done boolean
error object
response object
Preview
Attributes
asset string
altText string
SocialLink
Attributes
title string
uri string
State
Attributes
string (enum): "Unspecified", "Active", "Archived"
Status
Attributes
code number
message string
details array<object>