Introducing Brand Project API: New Controls for Branded Assets

Hi Creators,

Today, we’re excited to launch new controls for branded assets, supported by a new Brand Project API. For those of you who partner on integrations with the growing number of brands coming to Roblox, we hope this small but exciting feature will unlock more partnership opportunities, while also preserving brand suitability by limiting the exposure to out of segment users.

New Controls for Branded Assets

Our new controls for branded assets will enable you to show branded assets — such as a branded coffee cup or a wrapped race car — to select users within your experience, based on age or location. These capabilities allow brands who have age or location limitations to integrate with more experiences on Roblox. This results in more potential brand partners for your experiences!

Using the Brand Project API

To implement these controls within your experiences, you can work with Roblox to use the new Brand Project API, which makes calls into your experience to know if a user is eligible to view a branded asset. We’ll provide you with a Brand ID for the branded asset. You will then be able to use the API to control asset exposure by age (ranging from 13+ to 21+) and location (US, CA, and 24 other countries), as set by the brand to ensure you can comply with their requirements.

Code Sample

Click here to see a code sample

Server-side


-- In ServerScriptService
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PolicyService = game:GetService("PolicyService")

-- Pre-created RemoteEvent in ReplicatedStorage
local RemoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")

local brandedAsset = ReplicatedStorage:WaitForChild("BrandedAsset")
local defaultAsset = Instance.new("Part")

Players.PlayerAdded:Connect(function(player)
-- PolicyService:CanViewBrandProjectAsync can only be called from the Server
local success, canView = pcall(function()
return PolicyService:CanViewBrandProjectAsync(player, "BRP-0123456789")
end)

if success and canView then
RemoteEvent:FireClient(player, brandedAsset)
else
RemoteEvent:FireClient(player, defaultAsset)
end
end)

Client-side

-- In StarterPlayerScripts
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

-- Pre-created RemoteEvent in ReplicatedStorage
local RemoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")

RemoteEvent.OnClientEvent:Connect(function(partToLoad)
local clonedPart = partToLoad:Clone()
clonedPart.Parent = workspace
end)

While this shouldn’t impact the majority of branded assets, be aware that if the design of the branded assets or the integration would change the Content Maturity rating of your experience (including categories such as blood, crude humor, or fear), you must re-submit updated answers to the Experience Guidelines questionnaire in Creator Hub so your experience’s content maturity label remains accurate.

We are excited to see it creating more great partnerships between creators and brands on Roblox while raising the bar on brand suitability.

Thank you!


FAQs

What will the experience look like for non-eligible users?

  • Non-eligible users will either see nothing, or a fallback asset created by the developer.

    If the asset is core to the game experience (e.g., a car in a racing game), we would recommend having a fallback unbranded car for users who cannot see the branded asset. That fallback asset is not provided by the engine API.

    Devs will have the ability to show different assets on different player clients. So, in the same race car example above, it is possible for an 18+ player to see a branded car, and for an under 18 player to see a generic car.

I’m running independent ads, can I use this API?

  • At this time, the Brand Project API is only accessible to developers who will work directly with Roblox on implementation. Developers with experiences showing Independent Ads should be using the PolicyService API.

If I use this API, does this mean the branded asset becomes classified as an ad by default?

  • No, this API is a tool to gate assets to be shown to certain age groups and locations chosen by the brand. The brand’s selections are not exposed to the developer. This does not change how Roblox classifies this asset by default.

    A brand may determine their assets should be treated as an ad, and if so, they must work with their respective developers to abide by our policies and terms for advertising.

How do I leverage this functionality when creating an experience?

  1. When working with brands, they will provide their required age and geography exposure to add their branded asset to your experience.

  2. Either the brand or developer will then work with Roblox to create their brand project ID (to request a brand project ID, contact us); (updated on February 4, 2025)

    You can then use the brand project ID through the API to implement the branded asset to the right users within your experience.

Can I use this API for my own experiences, without brands?

  • At this time, this functionality is just for branded assets. We are open to exploring the possibility of wider use, and would love to hear your feedback on how you may use this.

Will there be a charge for this feature?

  • No, there is no added cost for leveraging this feature.

Is this for in-experience items, UGC items or both?

  • This is just for in-experience branded assets.
100 Likes

This topic was automatically opened after 10 minutes.

this update is going to end up badly, breaking alot of games

46 Likes

So, if someone wanted to show the Google Logo, they use this API?

What does a branded asset look like? :thinking:

29 Likes

While I appreciate the launch of this. This seems cumbersome on both us, the brands we work with and Roblox to submit details. This should be a self serve option for developers who work with brands rather then us having to email each time we want a specific segment of users we cant get using current APIs.

35 Likes

You would still need permission from Google (ex a contract, etc) to use their logo. This API essentially allows a developer to better comply with a companies requirements when it comes to who can see the assets. I’m not a staff member, so correct me if I’m wrong!

@dancepants2012b From my understanding this feature requires the developer to implement it first, so it wouldn’t break any experiences unless the developer implemented it incorrectly.

31 Likes

Definitely you’d need permissions from the brand.

19 Likes

??? No?

This is literally just a tool that let’s you show branded content to the intended target audience for a brand sponsorship. Depending on the deal that the dev made with the brand, Roblox might not be even taking a cut of the money from said sponsorship.

39 Likes

This sounds like the concept of a personalized ad system, but in 3D space with 3D assets.

I find it a good initiative to give developers the ability to implement such systems though, instead of just hiding the assets themselves and removing them for everyone.

18 Likes

Captain Morgan x On Tap brand integration when??

24 Likes

I don’t think I understand your concern here. This does nothing for Roblox specifically. It is meant for brands to tailor their advertising. For example, if you were hypothetically sponsored by Pepsi, they may want to hide advertisements from children under 13 AND who live in XYZ because advertising an unhealthy product to children is bad for brand image. This update gives Pepsi the power to do that. Previously, they would have gone through the developer each step of the process; now, the developer just needs to make an API call, and it’s more or less handled.

Thus, this isn’t some scheme. There are no monetary benefits for Roblox. It simply pleases corporations, who sponsor individual developers or development companies on the platform. Roblox indirectly benefits from that, but again, they aren’t the primary beneficiary here.

38 Likes

Or more specifically in this case - because it’s prohibited by law in some regions.

25 Likes

This sounds like it could be somehow abused to track user information and ages, which I thought Roblox didn’t want. Unless I’m mistaken, is that not a possibility of this API?

20 Likes

Why is there a 21+ age setting for branded assets if all other parts of roblox end at 17+ maximum (which isn’t even adulthood btw)
Maybe branded assets are going to be completely different from advertisements, but i’ll just refer to them as advertisements in this post

I don’t think anyone should be given advertisements for stuff like alcohol on a game like roblox, even if they are 30 years old
That simply does not align with roblox whatsoever
If the 21+ age setting isn’t for stuff like that, why is it even there? What kind of stuff besides alcohol and drugs would constitute being over 21 to interact with?

Performance wise, I feel like this will simply cause unnecessary lag on games, as more images will need to be loaded in and more network activity will be required to search for the specified brand ad (which roblox is kinda bad at loading tons of images at once)

I just kind of have an issue with using roblox as a frontend for ads, it just seems like one of those dystopian additions from the currently ongoing “Extremely Corporate Roblox” era

Now, I may be wrong on several fronts, but a few things to consider regardless:
What does “branded asset” mean? Can it be a 3D model of a logo for a car, or simply a 2D picture tacked onto it? The examples only seem to mention textures, which are pretty much just 2D pictures with extra steps

Why do we need to rely on roblox for a brand ID? I feel like we should just be able to contact the brand directly regarding this

What does “The brand’s selections are not exposed to the developer” mean? Can developers just not see what kind of ads the brand are going to serve? How should developers act if they don’t want a particular ad to be shown? Should the brand or roblox be informed about that?

35 Likes

Roblox already has all the information that would be used in this API request. This is just a publicly facing method for larger studios that deal with brands to dynamically show/hide content depending on the players region, age, etc to comply with advertisement laws.

12 Likes

This isn’t for showing advertisements, it’s for showing branded content and complying with advertisement related laws for actually showing said content in game.

Assume a brand doesn’t want their logo to be seen by <13 users, that’s what this API is for. The developer doesn’t have to worry about the legal side of things and the brand can just give Roblox the restrictions on who can see it.

13 Likes

yeah, most likely :confused:, but hey I could be wrong

11 Likes

Do we want this?‮‮‮‮‮‮‮‮‮‮‮‮‮‮

12 Likes

Most developers don’t care, except those with the inability to believe Roblox can release a good feature and will criticize regardless of the content. This feature is for a rather small part of the developer community as a whole, but will positively impact someone somewhere, and is something I’m sure some of the megacorp lawyers are happy to see. So, while this won’t change the life of every developer out there, it’s something that needed to get through the pipeline in order to make brands and investors :older_man: consider Roblox as place to spend their vast sums of cash.

Flexible brand promotion integration, wouldn’t be surprised to see that as a selling point.

14 Likes

I hope this is going to be worth it. I just feel like there are . . other things that need focus.

13 Likes