## Overview

Overrides enable you to programmatically override the value(s) of a returned ad on the request level. For example, you can override the eCPM of an ad to implement header bidding.

## Setting Up Overrides

**Setting an Override on the Request**

To set an override, add the `.setOverrides()` method to the `ados_addPlacement()` ad request.

**Setting Overrides for Header Bidding**

For header bidding, you need to set an object that contains:

- The ID(s) of the objects(s) you are overriding:
  - ads
  - flights
  - campaigns
  - advertisers
- The new eCPM of the ad, as programmatically provided by the exchange

For example:

```javascript
ados_addPlacement(...).setOverrides({"ads": {"100500": {"ecpm": 1.0}}});
```

Here we are making a placement and specifying a single override at the ad level. This override will set the eCPM of ad 100500 to 1.0 for this placement, _if it is a candidate_. Overrides cannot "pull in" ads, they merely override the value when the ad is a candidate.

We could do the same for multiple ads:

```javascript
ados_addPlacement(...).setOverrides({
  "ads": {
    "100500": {"ecpm": 1.0},
    "777333": {"ecpm": 3.0}
  }
});
```

Each override is placed on the appropriate level: ads, flights, campaigns, advertisers. Each additional override is a new key with a corresponding value of {"ecpm": NUMBER}.

An example with multiple levels of overrides:

```javascript
ados_addPlacement(...).setOverrides({
  "ads": {
    "100500": {"ecpm": 1.0},
    "777333": {"ecpm": 3.0}
  },
  "flights": {
    "444999": {"ecpm": 5.0}
  },
  "campaigns": {
    "878787": {"ecpm": 10}
  },
  "advertisers": {
    "343434": {"ecpm": 55}
  }
});
```

> 📘
>
> Overrides only change the returned value of eCPM etc. in the ad response. They do not change the values in the overridden objects themselves.
