# Rewarded

Rewarded ads are **opt-in** full-screen ads. The player chooses to watch in exchange for an in-game reward, such as an extra life, double coins, a hint, or a skip. They usually have high eCPM and low friction because the player consents.

### When to use

* The player can use a small boost (revive, extra hint, skip a hard level).
* You have premium content gated behind a soft paywall — let non-paying players unlock it via an ad.
* You want to convert engagement into revenue without hurting retention.

{% hint style="danger" %}
Reward the player **only** when the state is `rewarded`. Granting on `closed` lets players claim rewards without watching the ad.
{% endhint %}

{% hint style="info" %}
Ad settings are stored in `playgama-bridge-config.json`. Use the [config editor](https://playgama.github.io/bridge-config-editor/) to create or update them.
{% endhint %}

#### Is Rewarded Supported

Check this before showing a rewarded-ad button.

{% tabs %}
{% tab title="Plain JS" %}

```javascript
bridge.advertisement.isRewardedSupported
```

{% endtab %}

{% tab title="Unity" %}

```csharp
Bridge.advertisement.isRewardedSupported
```

{% endtab %}

{% tab title="Construct 3" %}

<figure><img src="/files/Lt5caONOvaANuMH0YfOv" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="GDevelop" %}

<figure><img src="/files/wsGAdAm4LSvs4kbDIdmM" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Godot" %}

```gdscript
Bridge.advertisement.is_rewarded_supported
```

{% endtab %}

{% tab title="GameMaker" %}

```javascript
playgama_bridge_advertisement_is_rewarded_supported()
```

{% endtab %}

{% tab title="Defold" %}

```lua
bridge.advertisement.is_rewarded_supported()
```

{% endtab %}

{% tab title="Cocos Creator" %}

```javascript
bridge.advertisement.isRewardedSupported
```

{% endtab %}

{% tab title="Scratch" %}

<figure><img src="/files/dE1SN3HbSjwdy1BIWrzp" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

#### **Rewarded State** <a href="#rewarded-state" id="rewarded-state"></a>

Track state changes to pause gameplay while the ad is open and grant the reward only when the final state is `rewarded`.

{% tabs %}
{% tab title="Plain JS" %}

```javascript
bridge.advertisement.rewardedState
```

Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

```javascript
// To track rewarded ad state changes, subscribe to the event
bridge.advertisement.on(
    bridge.EVENT_NAME.REWARDED_STATE_CHANGED, 
    state => console.log('Rewarded state: ', state)
)
```

{% endtab %}

{% tab title="Unity" %}

```csharp
Bridge.advertisement.rewardedState
```

Possible values: `Loading`, `Opened`, `Closed`, `Rewarded`, `Failed`.

```csharp
// To track rewarded ad state changes, subscribe to the event
private void Start()
{
    Bridge.advertisement.rewardedStateChanged += OnRewardedStateChanged;
}

private void OnRewardedStateChanged(RewardedState state)
{
    Debug.Log(state);
}
```

{% endtab %}

{% tab title="Construct 3" %}

```javascript
PlaygamaBridge.RewardedState
```

Current state of the rewarded ad. Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

<figure><img src="/files/1x8cKkBKb1fk8uiG6zK4" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="GDevelop" %}

```javascript
PlaygamaBridge::RewardedState()
```

Current state of the rewarded ad. Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

<figure><img src="/files/ATRVnd7yPKxF03MWkBmz" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Godot" %}

```gdscript
Bridge.advertisement.rewarded_state
```

Returns the current state of the rewarded ad. Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

{% tabs %}
{% tab title="Godot 3.x" %}

<pre class="language-gdscript"><code class="lang-gdscript"><strong># To track rewarded ad state changes, connect to the signal
</strong>func _ready():
    Bridge.advertisement.connect("rewarded_state_changed", self, "_on_rewarded_state_changed")

func _on_rewarded_state_changed(state):
    print(state)
</code></pre>

{% endtab %}

{% tab title="Godot 4.x" %}

<pre class="language-gdscript"><code class="lang-gdscript"><strong># To track rewarded ad state changes, connect to the signal
</strong>func _ready():
    Bridge.advertisement.connect("rewarded_state_changed", Callable(self, "_on_rewarded_state_changed"))

func _on_rewarded_state_changed(state):
    print(state)
</code></pre>

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="GameMaker" %}

```javascript
playgama_bridge_advertisement_rewarded_state()
```

Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

```javascript
// To track rewarded ad state changes, subscribe to the event

// via Async Social Event
if async_load[? "type"] == "playgama_bridge_advertisement_rewarded_state_changed" {
    switch async_load[? "data"] {
        case "loading":
            // your logic here
            break
        case "opened":
            // your logic here
            break
        case "closed":
            // your logic here
            break
        case "failed":
            // your logic here
            break
    }
}
```

{% endtab %}

{% tab title="Defold" %}

```lua
bridge.advertisement.rewarded_state()
```

Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

```lua
local bridge = require("bridge.bridge")

function init(self)
	bridge.advertisement.on("rewarded_state_changed", function (_, state)
		print("Rewarded state changed: ", state)
	end)
end
```

{% endtab %}

{% tab title="Cocos Creator" %}

```javascript
bridge.advertisement.rewardedState
```

Possible values: `loading`, `opened`, `closed`, `rewarded`, `failed`.

```javascript
// To track rewarded ad state changes, subscribe to the event
bridge.advertisement.on(EVENT_NAME.REWARDED_STATE_CHANGED, this.onRewardedStateChanged.bind(this));

onRewardedStateChanged(state: REWARDED_STATE) {
    console.log("Rewarded state: ", state);
    switch (state) {
        case 'loading':
            break;
        case 'opened':
            break;
        case 'rewarded':
            break;
        case 'closed':
            break;
        case 'failed':
            break;
    }
}
```

{% endtab %}

{% tab title="Scratch" %}

<figure><img src="/files/J2IRYAix0R5GkxiNBo6G" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% hint style="info" %}
React to state changes: mute and pause on `opened`, then restore sound and gameplay on `closed`, `rewarded`, or `failed`.
{% endhint %}

{% hint style="danger" %}
Reward the player only when the state is `rewarded`.
{% endhint %}

#### **Rewarded Placement** <a href="#rewarded-placement" id="rewarded-placement"></a>

Read the current rewarded placement when one button can request different rewards. Use it to decide which reward to grant after the state becomes `rewarded`.

{% tabs %}
{% tab title="Plain JS" %}

```javascript
bridge.advertisement.rewardedPlacement
```

{% endtab %}

{% tab title="Unity" %}

```csharp
Bridge.advertisement.rewardedPlacement
```

{% endtab %}

{% tab title="Construct 3" %}

```javascript
PlaygamaBridge.RewardedPlacement
```

{% endtab %}

{% tab title="GDevelop" %}

```javascript
PlaygamaBridge::RewardedPlacement()
```

{% endtab %}

{% tab title="Godot" %}

```gdscript
Bridge.advertisement.rewarded_placement
```

{% endtab %}

{% tab title="GameMaker" %}

```javascript
playgama_bridge_advertisement_rewarded_placement()
```

{% endtab %}

{% tab title="Defold" %}

```lua
bridge.advertisement.rewarded_placement()
```

{% endtab %}

{% tab title="Cocos Creator" %}

```javascript
bridge.advertisement.rewardedPlacement
```

{% endtab %}
{% endtabs %}

#### **Show Rewarded Ad** <a href="#show-rewarded-a-d" id="show-rewarded-a-d"></a>

Request a rewarded ad from a direct player action, such as tapping "Watch ad for reward".

{% tabs %}
{% tab title="Plain JS" %}

```javascript
let placement = 'test_placement' // optional
bridge.advertisement.showRewarded(placement)
```

{% endtab %}

{% tab title="Unity" %}

```csharp
private void Start()
{
    var placement = "test_placement"; // optional
    Bridge.advertisement.ShowRewarded(placement);
}
```

{% endtab %}

{% tab title="Construct 3" %}
Parameters:

* Placement (optional)

<figure><img src="/files/rd0CoWRiMrBExCIR0UcG" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="GDevelop" %}
Parameters:

* Placement (optional)

<figure><img src="/files/mqrCkEYT7LgEp1Tu0rgi" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Godot" %}

```gdscript
var placement = "test_placement" # optional
Bridge.advertisement.show_rewarded(placement)
```

{% endtab %}

{% tab title="GameMaker" %}

```javascript
var placement = "test_placement" // optional
playgama_bridge_advertisement_show_rewarded(placement)
```

{% endtab %}

{% tab title="Defold" %}

```lua
local placement = "test_placement" -- optional
bridge.advertisement.show_rewarded(placement)
```

{% endtab %}

{% tab title="Cocos Creator" %}

```javascript
let placement = 'test_placement' // optional
bridge.advertisement.showRewarded(placement)
```

{% endtab %}

{% tab title="Scratch" %}

<figure><img src="/files/3heoaRpPiNEDlNwyjW5K" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.playgama.com/playgama/sdk/api/advertisement/rewarded.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
