Assets API
You can send and receive the following request and response payloads to create assets on Roblox. For information on the usage of the API, see the usage guide.
Assets
Create Asset
Creates an asset with provided content and metadata.
You can't add SocialLink objects when you create an asset. Instead, use Update Asset.
Provide the Asset, binary asset file path, and content type in the form data.
Request
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
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Get Asset
Retrieve specific asset content and metadata.
Parameters
The unique identifier of the asset.
Asset metadata fields to retrieve, including the description, display name, icon, social links, and previews. Examples: description%2CdisplayName, previews%2CtwitchSocialLink.
Request
curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}' \
--header 'x-api-key: {apiKey}'
curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}?readMask={read_mask}' \
--header 'x-api-key: {apiKey}'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Update Asset
Updates an asset with provided content and metadata, including the description, display name, icon, social links, and previews. Currently can only update the content body for Models. Icons and Previews must be Image assets. Icons must have square dimensions.
Provide the Asset, binary asset file path, and content type in the form data.
Parameters
The unique identifier of the asset.
Asset metadata fields to update, including the description, display name, icon, and previews. Examples: description%2CdisplayName, previews%2CtwitchSocialLink.
Request
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}\""'
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}\"'
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.\"}]}"'
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
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Archive Asset
Archives the asset. Archived assets disappear from the website and are no longer usable or visible in Roblox experiences, but you can restore them.
Parameters
The unique identifier of the asset.
Request
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:archive' \
--header 'x-api-key: {apiKey}' \
--header 'Content-Type: application/json'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Restore Asset
Restores an archived asset.
Parameters
The unique identifier of the asset.
Request
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:restore' \
--header 'x-api-key: {apiKey}' \
--header 'Content-Type: application/json'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Get Asset Version
Retrieve a specific asset version by the asset ID and the version number.
Parameters
The unique identifier of the asset.
The version number.
Request
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetId}/versions/{versionNumber}' \
--header 'x-api-key: {apiKey}'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
List Asset Versions
List all versions of a specific asset, with optional pagination.
Parameters
The unique identifier of the asset.
Specifies the number of asset versions to include in the response. Valid values range from 1 to 50 (inclusive). Defaults to 8 when not provided.
A token for pagination. The value is obtained from a previous request and allows for retrieving the next page of asset versions.
Request
curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}/versions?pageToken=&maxPageSize=' \
--header 'x-api-key: {apiKey}'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Rollback Asset Version
Rollback an asset to a specific previous version.
Provide the asset version path in the form data.
Parameters
The unique identifier of the asset.
Request
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
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
Get Operation
Get the result of an asset creation or update using the returned Operation ID. Requires Read for the API key permission and asset:read for OAuth 2.0 apps.
Parameters
The unique identifier of the operation.
Request
curl --location 'https://apis.roblox.com/assets/v1/operations/{operationId}' \
--header 'x-api-key: {apiKey}'
Response
Required Permissions
The following API key permissions are required to call this endpoint. For more information on generating proper keys, see Manage API keys.
The following scopes are required for your OAuth 2.0 application to use this endpoint. For more information on how to register an OAuth 2.0 application, see App registration and review.
Limits
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
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
Attributes
The type of the serialized message.
Asset
Represents an asset.
Attributes
The asset type. Can only be Audio, Decal, or Model. Required for Create Asset.
The unique identifier of the asset. Required for Update Asset.
The context of creation that is not part of the asset content, such as metadata and creator information. Required for Create Asset.
The description of the asset. Limit to 1000 characters. Required for Create Asset.
Display name of the asset. Required for Create Asset.
The returned resource path of the asset. Format: assets/{assetId}. Example: assets/2205400862.
Revision ID of the asset. Equivalent to versionNumber. Every change of the asset automatically commits a new version. The format is an integer string. Example: 1.
The creation timestamp of the current revision.
The moderation result of the asset.
The resource path for the icon.
A list of previews, each with an asset path and alt text. Previews must be Image assets.
Whether the asset is active or archived. Unspecified isn't used.
A social media link for the asset. Maximum of three per asset. Object name can be any of:
- facebookSocialLink
- twitterSocialLink
- youtubeSocialLink
- twitchSocialLink
- discordSocialLink
- githubSocialLink
- robloxSocialLink
- guildedSocialLink
- devForumSocialLink
AssetVersion
An asset version.
Attributes
The context of creation that is not part of the asset content, such as metadata and creator information. Required for Create Asset.
The returned resource path of the asset version. Format: assets/{assetId}/versions/{version}. Example: assets/2205400862/versions/1.
The moderation result of the asset.
CreationContext
The context of creation that is not part of the asset content, such as metadata and creator information. Required for Create Asset.
Attributes
Represents a creator.
Expected asset upload fee in Robux. When the actual price is more than expected, the operation fails with a 400 error.
Creator
Represents a creator.
Attributes
The User ID the creator. Required if the asset is individual-user-owned.
The Group ID. Required if the asset is group-owned.
ModerationResult
The moderation result of the asset.
Attributes
The moderation state of the asset. Can be MODERATION_STATE_REVIEWING, MODERATION_STATE_REJECTED, or MODERATION_STATE_APPROVED.
Operation
This resource represents a long-running operation that is the result of a network API call.
Attributes
The server-assigned resource path. The default format is operations/{operation_id}.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
If false, the operation is still in progress. If true, the operation is completed.
The logical error model explaining the error status.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
Preview
An asset preview.
Attributes
The preview asset path.
Alt text for the preview asset.
SocialLink
A social media link for the asset. Maximum of three per asset. Object name can be any of:
- facebookSocialLink
- twitterSocialLink
- youtubeSocialLink
- twitchSocialLink
- discordSocialLink
- githubSocialLink
- robloxSocialLink
- guildedSocialLink
- devForumSocialLink
Attributes
An optional title for the social media link. Not used on the Creator Hub.
The URI for the social media link. Must match the expected format for the type of link. For example, the title for a twitchSocialLink object must be of the format https://twitch.tv/your-channel.
State
Whether the asset is active or archived. Unspecified isn't used.
Attributes
Status
The logical error model explaining the error status.
Attributes
The HTTP status code.
The error message.
A list of messages carrying error details.