Get Asset ID given arbitrary decal ID at runtime

As a Roblox developer, it is currently too hard to fetch a decal’s asset ID given its decal ID at runtime. The only way that this can be done is through HttpService and setting up a proxy to route requests to Roblox. I am not interested in setting up a web server for this or using someone else’s proxy.

You can use the
https://www.roblox.com/asset-thumbnail/image?assetId=26769281&width=420&height=420&format=png
image endpoint, but this limits you to sizes “the same as Avatar.ashx, and Asset.ashx”, which means you can get to 420x420 pixels at best. This isn’t enough.

InsertService is not feasible as you can’t insert items client-side and can only insert assets owned by Roblox or the account holder / group, or will receive a trust error.

Possible solutions:

  1. When calling MarketplaceService:GetProductInfo(), the table’s AssetId key’s value is currently just the ID you pass in (so, the decal ID in this case). This makes no sense because you have to pass in the ID number to call the method in the first place. Suggestion is to replace it so that it is the item’s asset ID for certain asset types.

  2. Change Avatar.ashx or Asset.ashx to support higher resolution. I am not sure if this is reasonable.

  3. Enable HTTP requests to be made directly to the Roblox website.

Example use case:
Say that in my game, players can create groups. They can specify the logo of the group by the decal ID, and it will be shown to all players. This is currently infeasible. Asking that players find the asset ID of the decal they upload is unreasonable and awful user experience, particularly when many players don’t use browser extensions or want to subtract many IDs.

See: Convert Decal asset id to Image asset id