AssetService

Show Deprecated
not creatable
service

The AssetService is a non-replicated service that handles asset related queries to the Roblox web API. Eventually, this will house all asset related queries for Roblox objects stored in the web. One should mind the limitations this API has.

Summary

Methods

Properties

Methods

CreateEditableImageAsync

yields

Creates a new EditableImage instance populated with the given texture. Non-asset texture IDs such as rbxthumb:// are supported. If using an image asset, it must be associated with and/or owned by a creator of the experience, or it must have been created inside the experience.

Parameters

textureId: Content

Texture ID of the image to populate the EditableImage.


Returns

A new EditableImage containing the provided image.

CreateEditableMeshAsync

yields

Returns a new EditableMesh instance created from an existing mesh content ID.

Parameters

meshId: Content

Content ID of the mesh from which to create an EditableMesh instance.


Returns

The new EditableMesh instance.

CreateEditableMeshFromPartAsync

yields

Returns a new EditableMesh instance created from the MeshId of an existing MeshPart.

Parameters

meshPart: Instance

The MeshPart from which to create an EditableMesh instance. The part must have a valid MeshId for this method to operate.


Returns

The new EditableMesh instance.

CreatePlaceAsync

yields

Clones a place with placeId equal to given templatePlaceId. The clone place displays within the inventory of the place's creator with the given name and description. This method returns the placeId of the new place, which you can use with TeleportService. The template place must have template copying enabled through place settings. You cannot use this method to clone places that you don't own.

Frequent use of this API isn't recommended, particularly if the created places contain scripts, as updating the code in a large volume of places quickly becomes infeasible. For user-generated worlds, consider serializing user creations and saving them in DataStores instead.

Parameters

placeName: string
templatePlaceID: number
description: string
Default Value: ""

Returns

CreatePlaceInPlayerInventoryAsync

yields

This function has been removed as of Release 471. Clones a place which has a placeId equal to the given templatePlaceID, placing it into the inventory of the given player with the given name and description, if they accept when prompted. This method cannot be used to clone places that you do not own, or those which have disabled the use of the CreatePlace API in their place's configuration.

Parameters

player: Instance
placeName: string
templatePlaceID: number
description: string
Default Value: ""

Returns

GetAssetIdsForPackage

yields

Returns an array of assetIds that are contained in a specified package.

Parameters

packageAssetId: number

Returns

GetAudioMetadataAsync

yields

Parameters

idList: Array

Returns

GetBundleDetailsAsync

yields

If the bundle ID does not exist, it throws HTTP 400 (HTTP/1.1 400 Bad Request). If bundleId is not convertible to int, throws "Unable to cast string to int64". If param type is string, it implicitly tries to convert to int.

This function returns details of the contents of the specified bundle.

Understanding the returned ValueTable

It returns a ValueTable object with the following key-value pairs containing details about the specified bundle

Key NameValue TypeDescription
Id numberintBundle ID (passed in as an argument)
NamestringBundle name
DescriptionstringBundle description
BundleTypestringBundle Type. eg. BodyParts or AvatarAnimation|AvatarAnimations
ItemsValueArrayAn array of ValueTable objects

Each object in the Items array contains details of the item as described in the table below:

Key NameValue TypeDescription
Id numberintItem's id
NamestringItem name
TypestringItem Type eg: "UserOutfit" or "Asset"

Parameters

bundleId: number

The id of the specified bundle.


Returns

A ValueTable object with the following key-value pairs containing details about the specified bundle. See the function description for more information.

Code Samples

Getting Bundle Details

local AssetService = game:GetService("AssetService")
local BUNDLE_ID = 14
local success, result = pcall(function()
return AssetService:GetBundleDetailsAsync(BUNDLE_ID)
end)
if success then
print(result)
--[[
{
["BundleType"] = "BodyParts",
["Description"] = "The year is 5003, Battlebot 5000 must face his mightiest foe, or face becoming obsolete.",
["Id"] = 14,
["Items"] = {
[1] = {...},
[2] = {
["Id"] = 1678225030,
["Name"] = "SinisterBot 5001 Left Arm",
["Type"] = "Asset"
},
[3] = {...},
[4] = {...},
[5] = {...},
[6] = {...},
[7] = {...}
},
["Name"] = "SinisterBot 5001"
}
--]]
end

GetGamePlacesAsync

yields

Returns a StandardPages object which contains the name and placeId of places within the current 'Game' (otherwise known as a 'Universe').


Returns

Code Samples

AssetService:GetGamePlacesAsync

local AssetService = game:GetService("AssetService")
local placePages = AssetService:GetGamePlacesAsync()
while true do
for _, place in placePages:GetCurrentPage() do
print("Name:", place.Name)
print("PlaceId:", place.PlaceId)
end
if placePages.IsFinished then
break
end
placePages:AdvanceToNextPageAsync()
end

PromptCreateAssetAsync

yields

Allows in-experience asset creation for users by prompting a publish dialog when they press the submit button. Can only be invoked on the server side. When called, it presents a dialog to the user. The dialog allows users to enter a name, description, and preview the asset. Upon submitting, it saves the asset to the user's inventory.

Parameters

player: Player

Represents the user who submits an asset creation.

instance: Instance

Represents the asset to be created. Currently can't contain scripts or nest non-public assets.

assetType: Enum.AssetType

The asset type. Currently can only be Enum.AssetType.Model.


Returns

The Enum.PromptCreateAssetResult and asset ID pair if successful.

PromptImportAnimationClipFromVideoAsync

yields

Parameters

player: Player
progressCallback: function

Returns

SavePlaceAsync

void
yields

Saves the state of the current place. This only works for places that are created with AssetService:CreatePlaceAsync() or have the API enabled through place settings.


Returns

void

SearchAudio

yields

Returns a AudioPages object containing the result of the given search. Will not return fields with empty values.

Note that this method has a low HTTP request limit and can throw an error, so it should always be wrapped in pcall() for error handling. Possible error messages include:

Error MessageReason
HTTP 429 (Too Many Requests)AssetService:SearchAudio() has been called too many times.
Unexpected type for data, expected array got voidThe keyword argument was filtered.

Parameters

searchParameters: AudioSearchParams

Returns

Code Samples

Getting Music Search Titles

local AssetService = game:GetService("AssetService")
local audioSearchParams = Instance.new("AudioSearchParams")
audioSearchParams.SearchKeyword = "happy"
local success, result = pcall(function()
return AssetService:SearchAudio(audioSearchParams)
end)
if success then
local currentPage = result:GetCurrentPage()
for _, audio in currentPage do
print(audio.Title)
end
else
warn("AssetService error: " .. result)
end
--[[ Returned data format
{
"AudioType": string,
"Artist": string,
"Title": string,
"Tags": {
"string"
},
"Id": number,
"IsEndorsed": boolean,
"Description": string,
"Duration": number,
"CreateTime": string,
"UpdateTime": string,
"Creator": {
"Id": number,
"Name": string,
"Type": number,
"IsVerifiedCreator": boolean
}
}
--]]

Events