> 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-dsp/video.md).

# Video

## 1. **REQUEST**

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

CJ MezzoMedia SSP calls the DSP interface via HTTP POST, sending the request object in JSON format as defined below. The request object 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                                                                                            |
| cur    | string array | N        | ISO-4217 alpha currencies allowed in the auction (e.g., "KRW")                                               |
| test   | integer      | N        | Indicates whether the auction is in test mode (1) or live mode (0). Bidding is not allowed for test auctions |
| at     | integer      | Y        | <ul><li>0 : fixed price</li><li>1: first price</li><li>2: second price</li></ul>                             |
| tmax   | integer      | Y        | Maximum timeout in milliseconds (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        | Blocked advertiser categories based on IAB categories                                                        |
| badv   | string array | N        | Blocked advertiser domains                                                                                   |
| bapp   | string array | N        | Blocked 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 required to be considered valid (e.g., 4.12)                          |
| bidfloorcur       | string  | Y        | Currency (e.g., "KRW")                                                                  |
| secure            | integer | Y        | <ul><li>0 : http</li><li>1 : https</li></ul>                                            |
| video             | object  | Y        | Refer to the [`Video`](#video) object                                                   |
| instl             | integer | Y        | <p>Indicates whether the ad is interstitial (default: 0)</p><ul><li></li><li></li></ul> |
| displaymanager    | string  | Y        | SSP platform name or SDK name                                                           |
| displaymanagerver | string  | Y        | SSP platform or SDK version                                                             |

### **Video**

> [`Imp`](#imp) / video

| Field       | Type          | Required | Description                                                                                                                                                    |
| ----------- | ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| mimes       | string array  | Y        | MIME types. Example: “video/mp4”                                                                                                                               |
| w           | integer       | Y        | Video width                                                                                                                                                    |
| h           | integer       | Y        | Video height                                                                                                                                                   |
| minduration | integer       | Y        | Minimum duration the video must play (seconds)                                                                                                                 |
| maxduration | integer       | Y        | Maximum duration the video can play (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: in stream</li><li>2: out stream</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`](#imp) / video / ext

| Field    | Type    | Required | Description                                                           |
| -------- | ------- | -------- | --------------------------------------------------------------------- |
| rewarded | integer | N        | <p>Indicates rewarded ad </p><ul><li>0 = no</li><li>1 = yes</li></ul> |

### **App**

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

### **Publisher**

> [`App`](#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        | User Agent of the device                                                                      |
| dnt   | integer | N        | <p>Do Not Track flag </p><ul><li>0: tracking allowed</li><li>1: tracking restricted</li></ul> |
| ip    | string  | Y        | IPv4 address                                                                                  |
| model | string  | N        | Device model                                                                                  |
| os    | string  | Y        | Operating system (e.g., iOS, Android)                                                         |
| osv   | string  | Y        | OS version (e.g., 8.1, 9.2)                                                                   |
| js    | integer | N        | Defined as 1 in RTB protocol                                                                  |
| ifa   | string  | Y        | Apple IFA or Google ADID                                                                      |

### **User**

{% hint style="info" %}
CJ MezzoMedia Extension Field
{% endhint %}

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

### **Ext**

{% hint style="info" %}
CJ MezzoMedia Extension Field
{% endhint %}

| Field       | Type    | Required | Description                             |
| ----------- | ------- | -------- | --------------------------------------- |
| Price\_type | integer | N        | <ul><li>0: CPM</li><li>2: CPC</li></ul> |

### Example

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

```json
{
  "id": "eb713f5a-3773-4ae7-9a33-884164172255$1277830896$KKHSVVWN",
  "test": 1,
  "cur": [
    "USD"
  ],
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "eb713f5a-3773-4ae7-9a33-884164172255$1277830896$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 500,
  "at": 2,
  "imp": [
    {
      "tagid": "805010_com.test.mezzo",
      "secure": 0,
      "clickbrowser": 1,
      "displaymanager": "ManSDK",
      "displaymanagerver": "200",
      "instl": 0,
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "w": 1920,
        "h": 1080,
        "placement": 1,
        "skip": 1,
        "playbackmethod": [
          2
        ],
        "protocols": [
          2,
          3
        ],
        "delivery": [
          2
        ],
        "ext": {
          "rewarded": 0
        },
        "minduration": 7,
        "maxduration": 60,
        "startdelay": 1,
        "linearity": 1
      },
      "bidfloorcur": "USD",
      "bidfloor": 0.008411677387431964,
      "id": "166330732500"
    }
  ],
  "app": {
    "publisher": {
      "id": "31998",
      "name": "31998_%EC%9D%B4%EA%B2%83%EC%9D%B4 %ED%85%8C%EC%8A%A4%ED%8A%B8",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "805010_%EC%9D%B4%EA%B2%83%EC%9D%B4 %ED%85%8C%EC%8A%A4%ED%8A%B8",
    "bundle": "com.test.mezzo",
    "storeurl": "https://play.google.com/store/apps/details?id=com.mz.mezzomediaapp",
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "ifa": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
    "ip": "58.231.40.30",
    "make": "samsung",
    "os": "Android",
    "osv": "9",
    "model": "SM-G955N",
    "language": "ko",
    "js": 1,
    "devicetype": 1,
    "ext": {
      "gain": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
    }
  },
  "ext": {
    "limit_duration": 30,
    "price_type": 0
  }
}
```

{% endcode %}
{% endtab %}

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

```json
{
  "id": "b051cef2-cc87-4c31-9288-c1c8faec3c58$1277830694$KKHSVVWN",
  "test": 1,
  "cur": [
    "USD"
  ],
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "b051cef2-cc87-4c31-9288-c1c8faec3c58$1277830694$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 500,
  "at": 2,
  "imp": [
    {
      "tagid": "805010_com.test.mezzo",
      "secure": 0,
      "instl": 0,
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "w": 1080,
        "h": 1920,
        "placement": 1,
        "skip": 1,
        "playbackmethod": [
          2
        ],
        "protocols": [
          2,
          3
        ],
        "delivery": [
          2
        ],
        "ext": {
          "rewarded": 0
        },
        "minduration": 7,
        "maxduration": 60,
        "startdelay": 1,
        "linearity": 1
      },
      "bidfloorcur": "USD",
      "bidfloor": 0.008411677387431964,
      "id": "166330750000"
    }
  ],
  "site": {
    "publisher": {
      "id": "31998",
      "name": "31998_com.test.mezzo",
      "domain": "com.test.mezzo",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "805010_com.test.mezzo",
    "domain": "com.test.mezzo",
    "page": "http://mtagdev.mman.kr:9300/V2/video_step2.html",
    "ref": "http://mtagdev.mman.kr:9300/",
    "mobile": 1,
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "2ca990ef-7e72-4fc1-91bc-24cb11dc2b8d"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "2ca990ef-7e72-4fc1-91bc-24cb11dc2b8d",
    "ifa": "",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 10; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36",
    "ip": "203.248.117.195",
    "make": "",
    "os": "Android",
    "osv": "",
    "model": "",
    "language": "ko",
    "js": 1,
    "devicetype": 1
  },
  "ext": {
    "limit_duration": 30,
    "price_type": 0
  }
}
```

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

##

## **2. RESPONSE**

{% hint style="info" %}
DSP :arrow\_right: SSP
{% 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" %}
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 array | Y        | Currency used for bidding (e.g., KRW)                                    |
| seatbid | object array | Y        | Array of [`Bid`](#bid) objects. At least one is required for a valid bid |

### **Bid**

| Field   | Type         | Required | Description                                                                                         |
| ------- | ------------ | -------- | --------------------------------------------------------------------------------------------------- |
| id      | string       | Y        | ID managing the bid                                                                                 |
| price   | float        | Y        | Bid price                                                                                           |
| adm     | string (XML) | Y        | Refer to the [`ADM`](#adm) object                                                                   |
| nurl    | string       | N        | Win notice URL. The clearing price is substituted into the {AUCTION\_PRICE} macro                   |
| burl    | string       | N        | Billing notice URL. The clearing price is substituted into the {AUCTION\_PRICE} macro               |
| lurl    | string       | N        | Loss notice URL. The loss reason code is substituted into the {AUCTION\_LOSS} macro                 |
| 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`](https://docs.meba.kr/s-plus/api/ssp/delivery/video/#video_ext-response) object |

### **ADM**

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.

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

### **VAST**

> [`adm`](#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) elements                |

### **Ad**

> [`adm`](#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`](#adm) / [`Ad`](#a-d) / Inline

| Field      | Type          | Required | Description                                      |
| ---------- | ------------- | -------- | ------------------------------------------------ |
| AdSystem   | integer       | N        | Refer to the [`Adsystem`](#a-dsystem) element    |
| AdTitle    | integer       | N        | Ad title                                         |
| Extensions | element       | N        | Refer to the [`Extensions`](#extensions) element |
| 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`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / AdSystem

| Field   | Type    | Required | Description                                             |
| ------- | ------- | -------- | ------------------------------------------------------- |
| version | integer | N        | Ad engine version (element value is the ad engine name) |

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

### **Extensions**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Extensions

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

### **Creative**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / Creative

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

### **Linear**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) / Linear

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

### **Tracking**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#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="187">Event</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`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#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`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#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**&#x20;

{% tabs %}
{% tab title="Bid response" %}
{% code lineNumbers="true" %}

```json
{
   "id": "req-12345-abcde",
   "bidid": "5508",
   "cur": "KRW",
   "seatbid": [
      {
         "bid": [
            {
               "id": "147704390800",
               "price": "60",
               "adm": "%3CVAST+version%3D%223.0%22%3E%0D%0A%3CAd+id%3D%2250096%22+sequence%3D%221%22%3E%0D%0A%3CInLine%3E%0D%0A%3CAdSystem+version%3D%222%22%3EMAN%3C%2FAdSystem%3E%0D%0A%3CAdTitle%3E%0D%0A%3C%21%5BCDATA%5B+20160217_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%EB%8F%99%EC%98%81%EC%83%81_%ED%85%8C%EC%8A%A4%ED%8A%B8+%5D%5D%3E%0D%0A%3C%2FAdTitle%3E%0D%0A%3CExtensions%3E%0D%0A%3CrequestID%3E%0D%0A%3C%21%5BCDATA%5B+-+%5D%5D%3E%0D%0A%3C%2FrequestID%3E%0D%0A%3C%2FExtensions%3E%0D%0A%3CError%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fd_err%3D%5BERRORCODE%5D%5D%0D%0A%5D%5D%3E%0D%0A%3C%2FError%3E%0D%0A%3CImpression+id%3D%22man_server%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_tracking%0D%0A%5D%5D%3E%0D%0A%3C%2FImpression%3E%0D%0A%3CCreatives%3E%0D%0A%3CCreative+id%3D%2225549%22+sequence%3D%221%22%3E%0D%0A%3CLinear%3E%0D%0A%3CDuration%3E00%3A00%3A30%3C%2FDuration%3E%0D%0A%3CTrackingEvents%3E%0D%0A%3CTracking+event%3D%22start%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q1%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22firstQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q2%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22midpoint%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q3%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22thirdQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q4%26e_version%3D2%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22complete%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q5%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A05%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_video_tracking%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A15%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_view%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3C%2FTrackingEvents%3E%0D%0A%3CVideoClicks%3E%0D%0A%3CClickThrough%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dclick%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FClickThrough%3E%0D%0A%3CClickTracking%3E%3C%2FClickTracking%3E%0D%0A%3COffset%3E00%3A00%3A05%3C%2FOffset%3E%0D%0A%3C%2FVideoClicks%3E%0D%0A%3CMediaFiles%3E%0D%0A%3CMediaFile+delivery%3D%22progressive%22+type%3D%22video%2Fmp4%22+width%3D%22480%22+height%3D%22270%22+bitrate%3D%22350%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fvod.mezzo%2F%3Fe_version%3D2%26e_request_type%3Dvod%26i_video_name%3D20161014150027%26d_r%3D1%26i_rs_t%3D3%26d_p1%3D1%0D%0A%5D%5D%3E%0D%0A%3C%2FMediaFile%3E%0D%0A%3C%2FMediaFiles%3E%0D%0A%3C%2FLinear%3E%0D%0A%3C%2FCreative%3E%0D%0A%3C%2FCreatives%3E%0D%0A%3C%2FInLine%3E%0D%0A%3C%2FAd%3E%0D%0A%3C%2FVAST%3E",
               "nurl": "win url",
               "adomain": "http: //adver.co.kr",
               "cid": "2234",
               "crid": "2234",
               "cat": [
                  "IAB1"
               ]
            }
         ]
      }
   ]
}

```

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

###

## 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="69"></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.<br>(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="80">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="Untitled" %}
{% 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-dsp/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.
