# Server-to-Server (S2S) Calls

## Auction Endpoints

<table><thead><tr><th width="97">Region</th><th width="453">URL</th><th width="83">Method</th><th width="127">City</th><th>Data Center</th></tr></thead><tbody><tr><td>AMER</td><td><a href="https://mp-las.4dex.io/ortb"><code>https://mp-las.4dex.io/ortb/{PUBLISHER_ID}</code></a></td><td>POST</td><td>Las Vegas</td><td>GCP us-west4</td></tr><tr><td>EMEA</td><td><a href="https://mp-las.4dex.io/ortb"><code>https://mp-ams.4dex.io/ortb/{PUBLISHER_ID}</code></a></td><td>POST</td><td>Amsterdam</td><td>GCP europe-west4</td></tr><tr><td>APAC</td><td><a href="https://mp-las.4dex.io/ortb"><code>https://mp-tyo.4dex.io/ortb/{PUBLISHER_ID}</code></a></td><td>POST</td><td>Tokyo</td><td>GCP asia-northeast1</td></tr></tbody></table>

{% hint style="info" %}
Your `PUBLISHER_ID` can be found under _Settings > General_ in the [Adagio Manager](https://app.adagio.io).
{% endhint %}

{% hint style="danger" %}
For European and UK traffic, **GDPR compliance is mandatory**.  Refer to our list of vendor IDs, hereunder, **to be added in your CMP** in order to properly monetize.
{% endhint %}

<details>

<summary>Our list of vendor IDs</summary>

Refer to [IAB's website](https://iabeurope.eu/vendor-list-tcf/) to get the full TCF vendor list.

<table><thead><tr><th width="74.19921875">ID</th><th width="170.796875">Company Name</th><th>Policy Link</th></tr></thead><tbody><tr><td>58</td><td>33Across</td><td><a href="https://www.33across.com/privacy-policy">https://www.33across.com/privacy-policy</a></td></tr><tr><td>1218</td><td>Aidem Technologies LTD</td><td><a href="https://kb.aidem.com/privacy/policies/privacy-policy/">https://kb.aidem.com/privacy/policies/privacy-policy/</a></td></tr><tr><td>138</td><td>ConnectAd Demand GmbH</td><td><a href="https://www.connectadrealtime.com/privacy">https://www.connectadrealtime.com/privacy</a></td></tr><tr><td>90</td><td>E-Planning (Teroa)</td><td><a href="https://www.e-planning.net/privacy-policy.html">https://www.e-planning.net/privacy-policy.html</a></td></tr><tr><td>285</td><td>Freewheel (Comcast)</td><td><a href="https://www.freewheel.com/privacy-policy">https://www.freewheel.com/privacy-policy</a></td></tr><tr><td>149</td><td>Illumin / ADman Interactive SLU</td><td><a href="https://admanmedia.com/politica.html">https://admanmedia.com/politica.html</a></td></tr><tr><td>253</td><td>Improve Digital</td><td><a href="https://www.improvedigital.com/platform-privacy-policy">https://www.improvedigital.com/platform-privacy-policy</a></td></tr><tr><td>910</td><td>Insticator, Inc</td><td><a href="https://www.insticator.com/privacy/">https://www.insticator.com/privacy/</a></td></tr><tr><td>36</td><td>Nexxen (Unruly)</td><td><a href="https://unruly.co/legal/privacy/">https://unruly.co/legal/privacy/</a></td></tr><tr><td>241</td><td>OneTag</td><td><a href="https://www.onetag.com/privacy/">https://www.onetag.com/privacy/</a></td></tr><tr><td>617</td><td>Onfocus (Adagio)</td><td><a href="https://adagio.io/privacy">https://adagio.io/privacy</a></td></tr><tr><td>69</td><td>OpenX</td><td><a href="https://www.openx.com/legal/privacy-policy/">https://www.openx.com/legal/privacy-policy/</a></td></tr><tr><td>76</td><td>Pubmatic</td><td><a href="https://pubmatic.com/legal/privacy/">https://pubmatic.com/legal/privacy/</a></td></tr><tr><td>16</td><td>RTB House</td><td><a href="https://rtbhouse.com/privacy-center">https://rtbhouse.com/privacy-center</a></td></tr><tr><td>52</td><td>Rubicon</td><td><a href="https://www.magnite.com/legal/advertising-technology-privacy-policy/">https://www.magnite.com/legal/advertising-technology-privacy-policy/</a></td></tr><tr><td>45</td><td>Smart Adserver (Equativ)</td><td><a href="https://smartadserver.com/end-user-privacy-policy/">https://smartadserver.com/end-user-privacy-policy/</a></td></tr><tr><td>13</td><td>Sovrn</td><td><a href="https://www.sovrn.com/privacy-policy/">https://www.sovrn.com/privacy-policy/</a></td></tr><tr><td>28</td><td>TripleLift</td><td><a href="https://triplelift.com/privacy/">https://triplelift.com/privacy/</a></td></tr></tbody></table>

</details>

## S2S Headers

The OpenRTB Version should be passed in the header of a bid request with a custom HTTP header.

* `x-openrtb-version: 2.5`
* `x-openrtb-version: 2.6`

## OpenRTB fields requirements

This section mentions some of the important fields that you should include in your adRequests, based either on our requirements or what we've observed performance wise with our demand partners.

{% hint style="warning" %}
While **we do specify here important fields** we still expect you to fill other official parameters ([cf. the official documentation](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#322---object-source-)) and some of the extensions (cf. [documentation for community and official ext.](https://github.com/InteractiveAdvertisingBureau/openrtb/tree/main/extensions)) defined by the OpenRTB specifications.&#x20;
{% endhint %}

<table><thead><tr><th width="222.87344360351562">Path</th><th width="156">Mandatory</th><th width="100">Type</th><th width="223">Description</th></tr></thead><tbody><tr><td><code>tmax</code></td><td><mark style="color:orange;">Highly Recommended</mark></td><td>int</td><td><p><strong>Maximum time in milliseconds the exchange allows</strong> for bids to be received including Internet latency to avoid timeout. </p><p>Minimum value: <code>470</code>.</p></td></tr><tr><td><code>app.publisher.id</code></td><td><mark style="color:red;">Yes</mark></td><td>string</td><td><strong>Your ID, provided by Adagio</strong>, found under <em>Settings > General</em> in the <a href="https://app.adagio.io">Adagio Manager</a>.</td></tr><tr><td><code>app.bundle</code></td><td><mark style="color:red;">Yes</mark></td><td>string</td><td><strong>Bundle of the app</strong>. Depending if it's an iOS or Android app.bundle.<br>For iOS: e.g. "324684580"<br>For Android: e.g. “com.example.myapp”.</td></tr><tr><td><code>app.cat</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string array</td><td>Array of IAB Tech Lab <strong>content categories of the app</strong>. The taxonomy to be used is defined by the cattax field. If no <code>cattax</code> field is supplied Content Category Taxonomy 1.0 is assumed.</td></tr><tr><td><code>app.ext.category</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td><strong>Category of the content displayed in the page</strong>.<br>- max length: 30<br>- max distinctive values: 50</td></tr><tr><td><code>app.ext.pagetype</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td><strong>Describes what kind of content will be present in the page</strong>.<br>- max length: 30<br>- max distinctive values: 50</td></tr><tr><td><code>app.paid</code></td><td><mark style="color:purple;">Recommended</mark></td><td>integer</td><td>Indicates whether the app is paid (1) or free (0).</td></tr><tr><td><code>app.privacypolicy</code></td><td><mark style="color:purple;">Recommended</mark></td><td>integer</td><td>Indicates whether the <strong>app has a privacy policy</strong> (1) or not (0).</td></tr><tr><td><code>app.storeurl</code></td><td><mark style="color:orange;">Highly Recommended</mark></td><td>string</td><td><strong>App store URL for an installed app</strong>; for IQG 2.1 compliance (it will be used by Bidders to fetch your <code>app-ads.txt</code>)</td></tr><tr><td><code>app.ver</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td><strong>Version</strong> of the app.</td></tr><tr><td><code>imp[].ext.gpid</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td><strong>Global Placement ID</strong> (cf. <a href="https://partner.thetradedesk.com/v3/portal/ssp/doc/GlobalPlacementID">The TradeDesk's doc</a>)<strong>.</strong> </td></tr><tr><td><code>imp[].tagid</code></td><td><mark style="color:red;">Yes</mark></td><td>string</td><td><strong>Custom value you define</strong> to identify an ad unit placement. Use consistent values, avoiding auto-incremented or random ones. e.g."identifier12345". <br>- max length: 150<br>- max distinctive values: 100</td></tr><tr><td><code>imp.metric</code></td><td><mark style="color:purple;">Recommended</mark></td><td>object array</td><td>These metrics can <strong>offer insight into the impression</strong> to assist with decisioning such as average recent viewability, click-through rate, etc. (cf. section <a href="https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#325---object-metric-">3.2.5 of oRTB</a>)</td></tr><tr><td><code>imp.displaymanager</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td>Name of ad mediation partner, SDK technology, or player responsible for rendering ad (typically video or mobile). Used by some ad servers to customize ad code by partner.</td></tr><tr><td><code>imp.displaymanagerver</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td>Version of Display Manager (declared in <code>imp.displaymanager</code>)</td></tr><tr><td><code>device.ua</code></td><td><mark style="color:purple;">Recommended</mark></td><td>string</td><td><strong>Browser user agent string</strong>. This field represents a raw user agent string from the browser.</td></tr><tr><td><code>device.geo</code></td><td><mark style="color:purple;">Recommended</mark></td><td>object</td><td>Location of the device, assumed to be the user current location (see object definition in <a href="https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#3219---object-geo-">3.2.19 of oRTB</a>). <br><br>Especially <code>lat</code> &#x26; <code>long</code></td></tr><tr><td><code>device.ifa</code></td><td><mark style="color:purple;">Highly Recommended</mark></td><td>string</td><td><strong>The IFA must be a unique value</strong> and must never be (or be based on) a hardware-specific ID</td></tr><tr><td><code>device.ext.ifa_type</code></td><td><mark style="color:red;">Yes (only if <code>device.ifa</code> is present)</mark></td><td>string</td><td><strong>Identify the source of the IFA</strong> (cf. <a href="https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/ifa_type.md#list--ifa-types-">oRTB docs for possible values</a>)</td></tr><tr><td><code>device.dnt</code></td><td><mark style="color:purple;">Recommended</mark></td><td>Integer</td><td><strong>Standard “Do Not Track” flag</strong> as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track.</td></tr><tr><td><code>device.lmt</code></td><td><mark style="color:purple;">Recommended</mark></td><td>Integer</td><td><strong>“Limit Ad Tracking” signal</strong> commercially endorsed (e.g., iOS, Android), where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines.</td></tr><tr><td><code>device.ip</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>IPv4 address</strong> closest to device.</td></tr><tr><td><code>device.devicetype</code></td><td><mark style="color:purple;">Recommended</mark></td><td>Integer</td><td>The general <strong>type of device</strong> (cf. <a href="https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--device-types-">List: Device Types</a> in AdCOM 1.0).</td></tr><tr><td><code>device.make</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td>Device make (e.g., “Apple”).</td></tr><tr><td><code>device.model</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Device model</strong> (e.g., “iPhone”).</td></tr><tr><td><code>device.os</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Device operating system</strong> (e.g., “iOS”).</td></tr><tr><td><code>device.osv</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Device operating system</strong> <strong>version</strong> (e.g., “3.1.2”).</td></tr><tr><td><code>device.hwv</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Hardware version</strong> of the device (e.g., “5S” for iPhone 5S).</td></tr><tr><td><code>device.language</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Browser language</strong> using ISO-639-1-alpha-2. Only one of <code>language</code> or <code>langb</code> should be present.</td></tr><tr><td><code>device.carrier</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Carrier or ISP</strong> (e.g., “VERIZON”) using exchange curated string names which should be published to bidders <em>a priori</em>.</td></tr><tr><td><code>device.connectiontype</code></td><td><mark style="color:purple;">Recommended</mark></td><td>String</td><td><strong>Network connection type</strong> (cf. <a href="https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--connection-types-">List: Connection Types</a> in AdCOM 1.0).</td></tr></tbody></table>

## Data Compression (gzip)

{% hint style="warning" %}
Adagio <mark style="color:orange;">ONLY</mark> supports Compressed JSON (gzip) for bid requests and bid responses.
{% endhint %}

It is <mark style="color:orange;">**mandatory**</mark> to use Compressed JSON to reduce the amount of data exchanged between you and Adagio, as this decreases latency times between servers, and traffic listening costs for all parties involved.

Configure compressed JSON bid requests and enable compressed responses:

{% stepper %}
{% step %}
Compress your HTTP request body with `gzip`
{% endstep %}

{% step %}
Add a <mark style="color:blue;">**`Content-Encoding: gzip`**</mark> HTTP header to indicate that the request is compressed
{% endstep %}

{% step %}
Add an <mark style="color:blue;">**`Accept-Encoding: gzip`**</mark> header to indicate that you can accept a compressed response
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Bid responses include a <mark style="color:blue;">**`Content-Encoding: gzip`**</mark> HTTP header to indicate compression. To distinguish between JSON and Compressed JSON formats, check for this header. If present, **decompress the HTTP body before processing.**
{% endhint %}

## **Passing External IDs in the Bidrequest**

External IDs (EIDs) allow DSPs to recognize users across different supply sources, improving match rates, bid relevance, and overall revenue performance.

We support the transmission of any EIDs within the `user.eids` or `user.ext.eids` object of your OpenRTB bid request, such as UID2.0, Ramp ID, ID5, and others.

Be sure to include the following parameters in your `eids`:

* `source`
* `uids.id`&#x20;
* `source.uids.atype`

{% tabs %}
{% tab title="Example OpenRTB 2.5" %}
```json
"user": {
  "ext": {
  "eids": [
    {
      "source": "x-device-vendor-x.com",
      "uids": [
        {
          "id": "yyy",
          "atype": 1
        }
      ]
    }
  ]
}
```
{% endtab %}

{% tab title="Example OpenRTB 2.6" %}
```json
"user": {
  "eids": [
    {
      "source": "x-device-vendor-x.com",
      "uids": [
        {
          "id": "yyy",
          "atype": 1
        }
      ]
    }
  ]
}
```
{% endtab %}
{% endtabs %}

## Supported Currencies

Adagio uses exchange rates from the European Central Bank to perform currency conversions. Below the list of currencies supported in Bid Requests and Bid Responses:

<details>

<summary>List of currencies supported in Bid Requests and Bid Responses</summary>

AUD\
BGN\
BRL\
CAD\
CHF\
CNY\
CZK\
DKK\
GBP\
HKD\
HUF\
IDR\
ILS\
INR\
ISK\
JPY\
KRW\
MXN\
MYR\
NOK\
NZD\
PHP\
PLN\
RON\
SEK\
SGD\
USD\
THB\
TRY\
ZAR

</details>

