Whale TV at a glance
| App type | Hosted HTML5 apps. Whale says you don't need vendor-specific JavaScript libraries. |
|---|---|
| Reach | 43M+ monthly active TVs across 400+ TV brands (January 2025). |
| Popular apps | Free content and simple games, followed by paid on-demand apps (Whale's own description). |
| Ads | An official advertising program for content partners, with three revenue models and SpringServe-based VAST tags. |
| Advertising ID | WAID, a resettable UUID passed in ad macros. How a third-party app reads it on the device is not publicly documented. |
| In-app purchases | No public payment or subscription API found. |
Publishing on Whale TV
Whale TV apps are hosted HTML5 apps. Whale's development guide says there is no need to include vendor-specific JavaScript libraries, that an app takes about 24 hours to appear after it goes live, and that you need cookies if you want to identify a device. Commercial terms are set in a Whale Eco Distribution Agreement, and an individual agreement overrides it.
Whale's three ad revenue models
Whale monetizes FAST, AVOD, SVOD and TVOD content, and its advertising page lists three ways to split the ad business with a content partner:
| Model | Who sells the ads | Who pays whom |
|---|---|---|
| Inventory split | Whale and the partner each get part of the ad inventory | Set in the agreement |
| Whale sells | Whale sells 100% of the ads | Whale pays the partner a revenue share |
| Partner sells | The content partner sells 100% of the ads | The partner pays Whale a share |
For ads it sells, Whale provides a SpringServe-based VAST tag with macros, including privacy macros for GDPR, US Privacy and COPPA. Partners add whaletv.com to their ads.txt file, provide their bundle IDs on other platforms, and use their Whale bundle ID in ad requests. Whale's own display placements, a 1920×630 home screen masthead and a 1700×360 app store banner, support click-through, deep links and QR codes.
Whale doesn't publish revenue-share percentages. Note that the profit-sharing program announced with Whale OS 10 is for TV brands, not app developers.
WAID and the WhaleAds macros
Whale's ad macro page documents a WhaleAds SDK, which passes macros through adMacroParams. The ones that matter for targeting:
[whale_ad_id]: the WAID, described as a "unique resettable ID" in UUID format. Whale's VAST tag sends it withifa_typewaid, orppidwhen you use an app-level ID instead.[device_lmt]: limits tracking; when it is 1, the user's IP address is obfuscated in outgoing requests.- Bundle IDs are numeric, for example
20008274, with a store URL such ashttps://www.whaletv.com/apps/20008274.
What we could not find is how a third-party HTML5 app reads the WAID on the device outside Whale's own SDK. Until that is public, keep an app-level fallback ID. See advertising IDs on Smart TVs.
What this means for games
Whale's program is written for video content partners with ad breaks. A casual game has different moments for ads: between levels, after a game over, or when the player opts in to a reward. If you build games for Whale TV, you can:
- talk to Whale about its advertising program for your app,
- sell sponsorships or cross-promotion yourself (the "partner sells" model), or
- use an ad SDK built for TV web apps, which brings formats like rewarded video and scan-to-reward QR. Check your distribution agreement first.
Early access
How SofAds fits on Whale TV
SofAds supports Whale TV as one of its four launch platforms. It is not live yet: we are onboarding the first publishers by hand and have no numbers to quote. Whale's WAID API isn't public, so the SDK accepts a getter from your app and otherwise uses its own install ID.
SofAds.init({
appId: "sof_YOUR_APP_ID",
onPause: () => game.pause(), // stop your render loop before video
onResume: () => game.resume(),
});
// At a natural break: the call always settles, the game just continues.
async function onLevelComplete() {
await SofAds.showInterstitial({ placement: "level_break" });
startNextLevel();
}
// The player chose to watch for a reward. onReward fires at most once;
// addCoins is your own function.
function onExtraLifeButton() {
SofAds.showRewarded({
placement: "extra_life",
onReward: (reward) => addCoins(reward.amount),
});
}
Because Whale apps are hosted, you can load a pinned SDK version from sdk.sofadsrv.com or bundle it with your app. Step by step in the Whale TV setup docs, or read how SofAds works for publishers.
Frequently asked questions
Can third-party apps show ads on Whale TV?
Whale runs an advertising program for content partners with three models: an inventory split, Whale selling all ads and paying a revenue share, or the partner selling all ads and paying Whale a share. Terms are set by agreement.
What is WAID?
The Whale TV advertising ID: a unique, resettable ID in UUID format, passed to ad servers through the [whale_ad_id] macro with ifa_type waid.
Does Whale TV have in-app purchases?
We found no public payment or subscription API for Whale TV apps. Ask Whale about commercial options in your distribution agreement.
How long does it take for a Whale TV app to appear after going live?
About 24 hours, according to Whale's development guide.
Sources
Checked on October 7, 2026. Platform rules change; when a source and this page disagree, the source wins.