# Rewarded Video

**URL:** https://heroiclabs.com/docs/hiro/concepts/economy/rewarded-video/
**Keywords:** concepts, economy, rewarded video, placements, documentation, guides, examples, rewarded video ads
**Categories:** hiro, rewarded-video, economy

---

<figure class="float-right" style="max-width: 35%; border: 20px solid transparent; text-align: center;">
  <img 
    src="{{< fingerprint_image "/images/pages/hiro/concepts/economy/rv-wordscapes.png" >}}" 
    style="width: 100%;"
  >
  <figcaption> Rewarded Videos in Wordscapes by PeopleFun </figcaption>
</figure>

# Rewarded Video

Players watch video ads to earn rewards like currency, consumables, energy, or items. Hiro verifies these rewards server-side through webhooks from **ironSource** or **AppLovin MAX**, preventing client-side exploits. When a player finishes watching an ad, the ad network notifies your Nakama server directly, which grants the configured reward.

In Hiro, rewarded videos are called **placements**. Placements are defined in your [Economy configuration JSON](../../economy#configuration-overview) file under the `placements` collection.

{{< note type="outline" hideIcon=true >}}
**Ready to implement?** [Set up rewarded video providers](/hiro/guides/gameplay-mechanics/rewarded-video-providers/) with ironSource or AppLovin MAX.
{{< /note >}}

## How it works

The rewarded video flow involves three parties: your game client, the ad network, and your Nakama server.

1. **Client calls `PlacementStart`**: Server records a pending placement with a unique reward ID.
2. **Client shows ad**: Your game displays the ad using the ironSource or AppLovin SDK.
3. **Player watches ad**: The player watches the ad to completion.
4. **Ad network calls webhook**: The ad network sends a server-to-server callback to your Nakama server with signature verification.
5. **Server grants reward**: Nakama verifies the callback signature and grants the placement reward to the player.

### Personalize placements

Placements can also be enriched or customized through the [Personalizer](/hiro/concepts/personalizer/) pipeline. This lets you modify placement rewards dynamically based on player state, time-limited events, or A/B tests without changing your base configuration. For example, you could offer bonus rewards to new players or run experiments with different reward amounts across player segments.

## Placements configuration

{{< code type="server" filename="base-economy.json" url="https://github.com/heroiclabs/hiro/blob/main/definitions/09-Hiro-Economy.json" hideable="false">}}

```json
{
  "placements": {
    "surprise_gem_bag": {
      "reward": {
        "guaranteed": {
          "currencies": {
            "gem": {
              "min": 5,
              "max": 5
            }
          }
        }
      },
      "additional_properties": {
        "adunit_id_ios": "a761a3352f819a27",
        "adunit_id_and": "6b8954e43b3fae1b"
      }
    }
  }
}
```

{{< / code >}}

See [Rewards](../rewards/) to learn more about the different ways you can configure and deliver rewards to your players.

### Placement properties

{{< table name="gdk.concepts.economy.placement" >}}

## Related resources

- [Set up rewarded video providers](/hiro/guides/gameplay-mechanics/rewarded-video-providers/)
- [ironSource S2S callbacks](https://developers.is.com/ironsource-mobile/air/server-to-server-callback-setting/)
- [AppLovin MAX S2S callbacks](https://support.axon.ai/en/max/advanced-features/s2s-rewarded-callback-api)
