> 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                                                                                   |
| ----- | ------- | -------- | --------------------------------------------------------------------------------------------- |
| adid  | string  | Y        | Device ADID                                                                                   |
| make  | string  | Y        | Device make (e.g., “samsung”).                                                                |
| 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": "test-pub-app-name",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "test-pub-app-name",
    "bundle": "com.test.mezzo",
    "storeurl": "https://play.google.com/store/apps/details?id=com.test.mezzo",
    "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": "test-pub-site-name",
      "domain": "com.test.mezzo",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "test-pub-site-name",
    "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": "samsung",
    "os": "Android",
    "osv": "Android",
    "model": "9",
    "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 %}
