Brand safety & categories
Brand safety works both ways. You decide which kinds of brands can appear in your game. Brands decide which kinds of games they appear in. Every Bonus Round is reviewed before it runs.
Your game's rating
Each game has a content rating: everyone, teen or mature. Our play agent proposes one after it plays your game; you can change it and your choice sticks (later learning runs won't overwrite it). Brands target ratings, so an accurate rating gets you better-matched ads.
Game categories
Categories describe your game to brands, e.g. ["arcade", "casual", "party"]. The agent derives them from what it saw; you can edit them (up to 12). Available categories:
party casual arcade racing sports scifi shooter sim cozy puzzle rpg adventure horror strategy
Blocking advertiser categories
Block whole categories of brands from your game with settings.blockedCategories. Blocking applies to every format, and takes effect on the next ad request. Each brand is assigned one category when our agent learns it.
| Slug | Category | Limits |
|---|---|---|
alcohol | Alcohol | Only in mature-rated games for adults |
gambling | Gambling & betting | Only in mature-rated games for adults |
tobacco | Tobacco & vaping | Only in mature-rated games for adults |
cannabis | Cannabis & CBD | Only in mature-rated games for adults |
adult | Adult content | Only in mature-rated games for adults |
weapons | Weapons | Only in mature-rated games for adults |
dating | Dating | Only in mature-rated games for adults |
energy-drinks | Energy drinks | Not in games for kids |
pharma | Pharma & health claims | Not in games for kids |
finance | Finance | Not in games for kids |
beverage | Soft drinks | |
snacks | Snacks & candy | |
food | Food & restaurants | |
pet | Pets | |
sportswear | Sportswear | |
outdoor | Outdoor | |
tech | Tech | |
gaming | Gaming & hardware | |
toys | Toys | |
apparel | Fashion | |
beauty | Beauty | |
auto | Auto | |
travel | Travel | |
entertainment | Movies, TV & music | |
education | Education |
curl -X PATCH https://bonusround.io/api/games/gm_… \
-H "Authorization: Bearer $BONUSROUND_API_KEY" -H "content-type: application/json" \
-d '{ "settings": { "blockedCategories": ["energy-drinks", "beverage"] } }'
The list replaces the previous one. Use the slugs above exactly (GET /api/games/_meta returns the current list as brandCategories, plus the defaults for every setting); a slug that isn't on the list blocks nothing.
Some categories are limited for everyone, whatever you block: brands in the first seven rows only run in mature-rated games with no kids or teens in the audience, and the first ten never run in a game for kids. Crypto and political ads aren't accepted on Bonus Round at all.
Answer Is this game made for kids? in Game → Settings (or PATCH /api/games/:id { "settings": { "madeForKids": "yes" | "mixed" | "no" } }). Yes and Mixed audience block the restricted categories above automatically. Those games, games you haven't answered for, and Everyone-rated or unrated games get contextual ads only: no player IDs, cookies or local storage, no behavioural targeting, frequency caps per session. Our agent suggests Yes when it sees a game made for children under 13; you confirm it. Full rules.
What brands control
- Brands target by game category and rating, and can include or exclude specific games.
- Before a brand sees your game as a match, it's scored on audience, safety, category, style, performance and reach.
Creative review
Every Bonus Round is generated for one brand and one game, and it can only serve once it has been approved. The brand plays it in your game first, as a preview, and approves or rejects it. Our generation pipeline also play-tests each round against a QA checklist (scale, readability, the round fits the arena) before it reaches review.
A round's assets are self-contained: models, textures, music and sound effects are loaded from Bonus Round, and the round runs no third-party code in your page.
Report a problem
See something in your game that shouldn't be there? Pause the format right away from the dashboard (Settings → formats), or pause the whole game with PATCH /api/games/:id { "paused": true }, and tell us which brand it was. The end event and your stats both name the brand.