> For the complete documentation index, see [llms.txt](https://docs.targetpick.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.targetpick.io/targetpick_eng/for-ssp/video.md).

# Video

## 1. REQUEST

CJ MezzoMedia DSP sends the object defined below in JSON format via HTTP POST to the above URL. The request object definition follows the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) specification.

### **Request object**

| Field  | Type         | Required | Description                                         |
| ------ | ------------ | -------- | --------------------------------------------------- |
| id     | string       | Y        | Unique request ID                                   |
| at     | integer      | Y        | 0 : fixed price, 1: first price, 2: second price    |
| tmax   | integer      | Y        | Maximum timeout (ms)                                |
| imp    | object array | Y        | Array of [`imp`](#imp) objects                      |
| app    | object       | Y        | Refer to the [`app`](#app) object                   |
| device | object       | Y        | Refer to the [`device`](#device) object             |
| user   | object       | Y        | Refer to the [`user`](#user) object                 |
| bcat   | string array | N        | Block advertiser categories based on IAB categories |
| badv   | string array | N        | Block advertiser domains                            |
| bapp   | string array | N        | Block app bundle or package names                   |
| ext    | object       | Y        | Refer to the [`ext`](#ext) object                   |

### **Imp**

| Field             | Type    | Required | Description                                                                                                                       |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y        | Unique impression ID                                                                                                              |
| bidfloor          | float   | Y        | Minimum bid price (e.g., 4.12)                                                                                                    |
| bidfloorcur       | string  | Y        | Currency (e.g., KRW)                                                                                                              |
| secure            | integer | Y        | 0 : http, 1 : https                                                                                                               |
| video             | object  | Y        | Refer to the [`video`](#video) object                                                                                             |
| instl             | integer | Y        | <p>Indicates interstitial (default : 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y        | SSP platform or SDK name                                                                                                          |
| displaymanagerver | string  | Y        | SSP platform or SDK version                                                                                                       |

### **Video**

> imp / video

| Field       | Type          | Required | Description                                                                                                                                                    |
| ----------- | ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| mimes       | string array  | Y        | MIME types. (e.g., “video/mp4”)                                                                                                                                |
| w           | integer       | Y        | Video width                                                                                                                                                    |
| h           | integer       | Y        | Video height                                                                                                                                                   |
| minduration | integer       | Y        | Minimum video playback duration (seconds)                                                                                                                      |
| maxduration | integer       | Y        | Maximum video playback duration (seconds)                                                                                                                      |
| protocols   | integer array | Y        | VAST version. Pass “3”                                                                                                                                         |
| startdelay  | integer       | Y        | <p>Indicates pre-roll, mid-roll, post-roll ad type </p><ul><li>0: Pre-roll</li><li>-1: Standard mid-roll</li><li>-2: Standard post-roll</li></ul>              |
| linearity   | integer       | Y        | <ul><li>1: Linear / In-Stream</li><li>2: Non-Linear / Overlay</li></ul>                                                                                        |
| delivery    | integer array | Y        | Pass 2 (Progressive)                                                                                                                                           |
| placement   | integer       | Y        | <p>Video placement </p><ul><li>1: In-player</li><li>2: In-banner</li><li>3: In-article</li><li>4: In-feed</li><li>5: Interstitial / Slide / Floating</li></ul> |
| ext         | object        | N        | Additional information beyond standard fields (e.g., rewarded)                                                                                                 |

### **Video / ext**

> imp / video / ext

| Field    | Type    | Required | Description                                                                                               |
| -------- | ------- | -------- | --------------------------------------------------------------------------------------------------------- |
| rewarded | integer | N        | <p>Indicates whether this is a reward ad. </p><ul><li>0: no(non-reward)</li><li>1: yes(reward))</li></ul> |

### **App**

| Field     | Type         | Required | Description                                   |
| --------- | ------------ | -------- | --------------------------------------------- |
| id        | string       | Y        | Publisher ID                                  |
| name      | string       | N        | Application name                              |
| bundle    | string       | Y        | Bundle name, package name                     |
| storeurl  | string       | N        | App store URL                                 |
| cat       | string array | N        | Categories                                    |
| publisher | object       | Y        | Refer to the [`publisher`](#publisher) object |

### **Publisher**

> [app](https://docs.meba.kr/s-plus/api/dsp/delivery/video/#video_app) / publisher

| Field | Type         | Required | Description    |
| ----- | ------------ | -------- | -------------- |
| id    | string       | Y        | Publisher ID   |
| name  | string       | N        | Publisher name |
| cat   | string array | N        | Categories     |

### **Device**

| Field | Type    | Required | Description                                                                         |
| ----- | ------- | -------- | ----------------------------------------------------------------------------------- |
| ua    | string  | Y        | Device User Agent information                                                       |
| dnt   | integer | N        | <p>Whether Do Not Track is enabled. <br>(0: track allowed, 1: track disallowed)</p> |
| ip    | string  | Y        | IPv4 address                                                                        |
| model | string  | N        | Model name                                                                          |
| os    | string  | Y        | Operating system. (e.g., iOS, Android)                                              |
| osv   | string  | Y        | Operating system version. (e.g., 8.1, 9.2)                                          |
| js    | integer | N        | Defined as 1 in the RTB protocol                                                    |
| ifa   | string  | Y        | Apple IFA or Google ADID                                                            |

{% hint style="danger" %}

* User Agent (UA) is <mark style="color:red;">**required**</mark> for ad exchange transactions.
* IP <mark style="color:red;">**must be a public IP**</mark>. Using private IP (e.g., from internal networks or routers) may limit ad delivery.
  {% endhint %}

### **User**

{% hint style="info" %}
This is a CJ MezzoMedia extension field not defined in the RTB protocol.
{% endhint %}

| Field | Type   | Required | Description    |
| ----- | ------ | -------- | -------------- |
| id    | string | Y        | Unique user ID |

### **Example**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "at": 0,
   "tmax": 250,
   "imp": [
      {
         "id": "150226007700",
         "bidfloorcur": "KRW",
         "bidfloor": 0,
         "secure": 0,
         "video": {
            "mimes": [
               "video\\/mp4"
            ],
            "w": 1080,
            "h": 1920,
            "minduration": 5,
            "maxduration": 30,
            "protocols": [
               3
            ],
            "startdelay": 0,
            "linearity": 1,
            "delivery": [
               2
            ],
            "ext": {
               "rewarded": 1
            }
         },
         "instl": 0
      }
   ],
   "app": {
      "id": "test-pub-app-id",
      "name": "test-pub-app-name",
      "bundle": "com.mezzo.co.kr ",
      "storeurl": "https://itunes.apple.com/us/app/id1234567?mt=8",
      "cat": [
         "IAB1"
      ],
      "publisher": {
         "id": "test-pub-app-id",
         "name": "test-pub-app-name",
         "cat": [
            "IAB1"
         ]
      }
   },
   "device": {
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141",
      "dnt": 0,
      "ip": "192.168.1.1",
      "model": "iPhone 7,2",
      "os": "iOS",
      "osv": "8.0",
      "js": 1,
      "ifa": "test-ifa-gaid"
   },
   "user": {
      "id": "923123"
   },
   "ext": {
   }
}
```

{% endcode %}
{% endtab %}

{% tab title="WEB" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "at": 0,
   "tmax": 250,
   "imp": [
      {
         "id": "150226007700",
         "bidfloorcur": "KRW",
         "bidfloor": 0,
         "secure": 0,
         "video": {
            "mimes": [
               "video\\/mp4"
            ],
            "w": 1080,
            "h": 1920,
            "minduration": 5,
            "maxduration": 30,
            "protocols": [
               3
            ],
            "startdelay": 0,
            "linearity": 1,
            "delivery": [
               2
            ],
            "ext": {
               "rewarded": 1
            }
         },
         "instl": 0
      }
   ],
   "site": {
      "id": "test-pub-app-id",
      "domain": "test-pub-web-domain",
      "ref": " test-pub-web-ref",
      "cat": [
         "IAB1"
      ],
      "publisher": {
         "id": "test-pub-app-id",
         "name": "test-pub-app-name",
         "cat": [
            "IAB1"
         ]
      }
  },
  "device": {
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141",
      "ip": "192.168.1.1"
  },
  "user": {
      "id": "923123"
  },
  "ext": {
      "price_type": 1,
      "tracking_type": 0
  }
}
```

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

##

## **2. RESPONSE**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ MezzoMedia SSP returns the response by including the following object in the HTTP body.\
The object definition follows the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) specification.

### **Bid Response**

{% hint style="info" %}
&#x20;Response object in JSON format.
{% endhint %}

| Field   | Type         | Required | Description                           |
| ------- | ------------ | -------- | ------------------------------------- |
| id      | string       | Y        | ID of the Bid Request                 |
| bidid   | string       | Y        | ID of the Bid object                  |
| cur     | string       | Y        | Currency used for bidding (e.g., KRW) |
| seatbid | object array | Y        | Array of [`bid`](#bid) objects        |

### **Bid**

| Field   | Type         | Required | Description                               |
| ------- | ------------ | -------- | ----------------------------------------- |
| id      | string       | Y        | ID managing the bid                       |
| price   | float        | Y        | Bid price                                 |
| adm     | string       | Y        | Refer to the [`adm`](#adm) object         |
| nurl    | string       | Y        | Win notice URL                            |
| adomain | string array | Y        | Advertiser domains for blacklist checking |
| cid     | string       | Y        | Advertiser campaign name / ID             |
| crid    | string       | Y        | Creative name / ID                        |
| cat     | string array | Y        | Categories                                |
| ext     | object       | Y        | Refer to the [`ext`](#ext) object         |

### **Ext**

| Field     | Type   | Required | Description                                                                     |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| clickurl  | string | Y        | Click tracking URL                                                              |
| viewable  | string | Y        | Tracking URL for when the ad area is at least 20% visible for 2 seconds or more |
| breakaway | string | Y        | Tracking URL for an event where ad playback ends before completion              |

{% hint style="warning" %}
If `{m_sec}` is included in the breakaway URL, `{m_sec}` is replaced with the ad playback time before the URL is called. For example, if the breakaway value is set to `http://breakaway.tracking.com/tracking.do?time={m_sec}` and the user leaves after 20 seconds of playback, `http://breakaway.tracking.com/tracking.do?time=20` is called.
{% endhint %}

### **Adm**

{% hint style="info" %}
Defined as an object in XML format. The object definition follows the [VAST 3.0](https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf) specification.
{% endhint %}

| Field | Type    | Required | Description                          |
| ----- | ------- | -------- | ------------------------------------ |
| VAST  | element | Y        | Refer to the [`VAST`](#vast) element |

### **VAST**

> adm / VAST

| Field   | Type          | Required | Description                                   |
| ------- | ------------- | -------- | --------------------------------------------- |
| version | integer       | Y        | VAST protocol version. For VAST 3.0, set as 3 |
| Ad      | element array | Y        | Array of [`Ad`](#a-d) element                 |

### **Ad**

> adm / Ad

| Field    | Type    | Required | Description                              |
| -------- | ------- | -------- | ---------------------------------------- |
| id       | integer | N        | Ad ID                                    |
| sequence | integer | N        | Ad sequence number                       |
| Inline   | element | Y        | Refer to the [`Inline`](#inline) element |

### **Inline**

> adm / Ad / Inline

| Field      | Type          | Required | Description                                    |
| ---------- | ------------- | -------- | ---------------------------------------------- |
| AdSystem   | integer       | N        | Refer to the [`AdSystem`](#a-dsystem) object   |
| AdTitle    | integer       | N        | Ad title                                       |
| Extensions | element       | N        | Array of [`Extensions`](#extensions) elements  |
| Error      | element       | N        | Tracking URL called when a player error occurs |
| Impression | element       | Y        | Tracking URL called when the video starts      |
| Creatives  | element array | Y        | Array of [`Creative`](#creative) elements      |

### **AdSystem**

> adm / Ad / Inline / AdSystem

| Field   | Type    | Required | Description                              |
| ------- | ------- | -------- | ---------------------------------------- |
| version | integer | N        | The element value is the ad engine name. |

{% hint style="info" %}
The element value is the ad engine name.
{% endhint %}

### **Extensions**

> adm / Ad / Inline / Extensions

| Field     | Type   | Required | Description                         |
| --------- | ------ | -------- | ----------------------------------- |
| requestID | string | N        | nique identifier for the ad request |

### **Creative**

> adm / Ad / Inline / Creatives / Creative

| Field    | Type    | Required | Description                 |
| -------- | ------- | -------- | --------------------------- |
| id       | integer | N        | Ad ID                       |
| sequence | integer | N        | Ad sequence                 |
| Linear   | element | Y        | [`Linear`](#linear) element |

### **Linear**

> adm / Ad / Inline / Creatives / Creative / Linear

| Field          | Type          | Required | Description                           |
| -------------- | ------------- | -------- | ------------------------------------- |
| Duration       | string        | N        | Video duration (hh:mm:ss format)      |
| TrackingEvents | element array | N        | [`Tracking`](#tracking) elements      |
| VideoClicks    | element       | N        | [`VideoClicks`](#videoclicks) element |
| MediaFiles     | element array | Y        | [`MediaFile`](#mediafile) elements    |

### **Tracking**

> adm / Ad / Inline / Creatives / Creative / Linear / TrackingEvents / Tracking

{% hint style="info" %}
The element value is an HTTP(s) URL used to handle click events.
{% endhint %}

<table><thead><tr><th width="187">Field</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>event</td><td>string</td><td>Y</td><td>Event name (e.g., start, firstQuartile, midpoint)</td></tr><tr><td>offset</td><td>element array</td><td>N</td><td>Playback time condition (hh:mm:ss format), value is tracking URL</td></tr></tbody></table>

{% hint style="info" %}
The element value is an HTTP(s) URL used to handle click events.
{% endhint %}

<table><thead><tr><th width="185">Event name</th><th>Description</th></tr></thead><tbody><tr><td>start</td><td>Called when the video starts</td></tr><tr><td>firstQuartile</td><td>Called at 25% playback</td></tr><tr><td>midpoint</td><td>Called at 50% playback</td></tr><tr><td>thirdQuartile</td><td>Called at 75% playback</td></tr><tr><td>complete</td><td>Called when playback completes</td></tr><tr><td>progress</td><td>Called at specified offset (multiple URLs allowed for same event/offset)</td></tr></tbody></table>

{% hint style="info" %}
Multiple tracking URLs can be assigned to the same event when the event value and offset value are identical.
{% endhint %}

### **VideoClicks**

> adm / Ad / Inline / Creative / Linear / VideoClicks

{% hint style="info" %}
The element value is an HTTP(s) URL used to handle click events.
{% endhint %}

| Field         | Type   | Required | Description                                 |
| ------------- | ------ | -------- | ------------------------------------------- |
| ClickThrough  | string | Y        | Ad landing page URL                         |
| ClickTracking | string | N        | Click tracking URL                          |
| offset        | string | N        | Click allowed after specified playback time |

{% hint style="info" %}
ClickThrough can redirect to the final landing page after DSP click processing.
{% endhint %}

### **MediaFile**

> adm / Ad / Inline / Creatives / Creative / Linear / MediaFiles / MediaFile

| Field    | Type    | Required | Description                                   |
| -------- | ------- | -------- | --------------------------------------------- |
| delivery | string  | N        | Video delivery method (progressive supported) |
| type     | string  | N        | Video format (e.g., video/mp4)                |
| width    | integer | N        | Video width                                   |
| height   | integer | N        | Video height                                  |
| bitrate  | integer | N        | Video bitrate                                 |

{% hint style="info" %}
Element value is the video content URL (HTTP, HTTPS).
{% endhint %}

### **Example**

{% tabs %}
{% tab title="reponse" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "at": 0,
   "tmax": 250,
   "imp": [
      {
         "id": "150226007700",
         "bidfloorcur": "KRW",
         "bidfloor": 0,
         "secure": 0,
         "video": {
            "mimes": [
               "video\\/mp4"
            ],
            "w": 1080,
            "h": 1920,
            "minduration": 5,
            "maxduration": 30,
            "protocols": [
               3
            ],
            "startdelay": 0,
            "linearity": 1,
            "delivery": [
               2
            ],
            "ext": {
               "rewarded": 1
            }
         },
         "instl": 0
      }
   ],
   "site": {
      "id": "test-pub-app-id",
      "domain": "test-pub-web-domain",
      "ref": " test-pub-web-ref",
      "cat": [
         "IAB1"
      ],
      "publisher": {
         "id": "test-pub-app-id",
         "name": "test-pub-app-name",
         "cat": [
            "IAB1"
         ]
      }
  },
  "device": {
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141",
      "ip": "192.168.1.1"
  },
  "user": {
      "id": "923123"
  },
  "ext": {
      "price_type": 1,
      "tracking_type": 0
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="adm" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0">
   <Ad id="50096" sequence="1">
      <InLine>
         <AdSystem version="2">MAN</AdSystem>
         <AdTitle><![CDATA[ 20160217_홈플러스_홈플러스_동영상_테스트 ]]></AdTitle>
         <Extensions>
            <requestID><![CDATA[ - ]]></requestID>
         </Extensions>
         <Error><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?d_err=[ERRORCODE]]]]></Error>
         <Impression id="man_server"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_tracking]]></Impression>
         <Creatives>
            <Creative id="25549" sequence="1">
               <Linear>
                  <Duration>00:00:30</Duration>
                  <TrackingEvents>
                     <Tracking event="start"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2]]></Tracking>
                     <Tracking event="firstQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2]]></Tracking>
                     <Tracking event="midpoint"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2]]></Tracking>
                     <Tracking event="thirdQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2]]></Tracking>
                     <Tracking event="complete"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:05"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:15"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2]]></Tracking>
                  </TrackingEvents>
                  <VideoClicks>
                     <ClickThrough><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=click&e_version=2]]></ClickThrough>
                     <ClickTracking></ClickTracking>
                     <Offset>00:00:05</Offset>
                  </VideoClicks>
                  <MediaFiles>
                     <MediaFile delivery="progressive" type="video/mp4" width="480" height="270" bitrate="350"><![CDATA[http://mtag.mman.kr/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=20161014150027&d_r=1&i_rs_t=3&d_p1=1]]></MediaFile>
                  </MediaFiles>
               </Linear>
            </Creative>
         </Creatives>
      </InLine>
   </Ad>
</VAST>
```

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

## &#x20;<a href="#skadnetwork-support-ios-14" id="skadnetwork-support-ios-14"></a>

## 3. SKAdNetwork Support (iOS 14+) <a href="#skadnetwork-support-ios-14" id="skadnetwork-support-ios-14"></a>

{% hint style="info" %}
This section describes support for campaigns where SKAdNetwork is enabled on iOS 14 or later.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>The DSP must be registered as an Ad Network in Apple’s SKAdNetwork API. (https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>A public key must be issued by Apple and a postback URL must be configured.</td></tr><tr><td>3</td><td>The SKAdNetwork ID issued by Apple must be shared with CJ MezzoMedia, which will request registration in the publisher’s info.plist.</td></tr><tr><td>4</td><td>When returning a response for SKAdNetwork-enabled campaigns, the DSP must include the SKAdNetwork ID and all related fields.</td></tr><tr><td>5</td><td>The advertiser app must register via registerAppForAdNetworkAttribution().</td></tr><tr><td>6</td><td>The DSP can receive install data via SKAdNetwork.</td></tr></tbody></table>

### Additional Fields in Ad Request (SKAdNetwork) <a href="#additional-fields-in-a-d-request-skadnetwork" id="additional-fields-in-a-d-request-skadnetwork"></a>

> BidRequest / imp / banner / ext / skadn

Prerequisites:

<table data-header-hidden><thead><tr><th width="85">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>The DSP’s SKAdNetwork ID must be registered in the publisher’s info.plist.</td></tr><tr><td>2</td><td>The user device must run iOS 14 or higher.</td></tr><tr><td>3</td><td>A version of the SDK that supports SKAdNetwork must be installed.</td></tr><tr><td>4</td><td>The DSP must comply with CJ MezzoMedia Bid Request specifications.</td></tr></tbody></table>

| Field      | Type   | Required | Description                                                                   | Example                                  |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y        | SKAdNetwork version (2.0 or higher)                                           | “version”:”2.0”                          |
| sourceapp  | string | Y        | Publisher app ID registered in Apple App Store. Matches BidRequest.app.bundle | “sourceapp”:”000000000”                  |
| skadnetids | string | Y        | SKAdNetwork IDs registered in publisher’s info.plist                          | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### Additional Fields in Ad Response (SKAdNetwork) <a href="#additional-fields-in-a-d-response-skadnetwork" id="additional-fields-in-a-d-response-skadnetwork"></a>

> BidResponse / imp / banner / ext / skadn

| Field      | Type   | Required | Description                                                             | Example                                         |
| ---------- | ------ | -------- | ----------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y        | SKAdNetwork version (2.0 or higher)                                     | “version”:”2.0”                                 |
| network    | string | Y        | Ad network identifier. Must match at least one skadnetid in the request | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y        | Campaign ID (integer between 1 and 100 per Apple spec)                  | “campaign”:”45”                                 |
| itunesitem | string | Y        | Advertiser app ID in App Store. Matches BidResponse.bid.bundle          | “itunesitem”:”123456789”                        |
| nonce      | string | Y        | Unique ID for each ad response                                          | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y        | Publisher app ID. Matches BidRequest.imp.ext.skad.sourceapp             | “sourceapp”:”000000000”                         |
| timestamp  | string | Y        | Unix time as a string                                                   | “timestamp”:”1234567890”                        |
| signature  | string | Y        | SKAdNetwork signature provided by Apple                                 | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **Example**

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

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