> 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 %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.targetpick.io/targetpick_eng/for-ssp/video.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
