Vertical Video

What is Vertical Video?

MoPub now supports portrait oriented interstitial and rewarded video (supported as of September 2018) through VAST 2.0 or VAST 3.0 + OpenRTB 2.3! The video is “true” portrait and takes up the entire screen space in portrait orientation (320x480, 768x1024).

Please find an example of a vertical/portrait video here as well as an image below.

Vertical Video Example

Bid Response Changes

In order to respond correctly for vertical interstitial and rewarded video, DSP’s need to add an extention in the VAST XML for for ‘device’ or ‘portrait’ MoPubForceOrienation.

  • Device: Selecting “Device” (recommended) will deliver the creative based on what orientation the user is in, at the time of the request. This is the best practice because if portrait-oriented apps are targeted properly, then the ad will render in portrait and will be dynamic if the user turns the device.
    <Extensions>
      <Extension type="MoPub">
        <MoPubForceOrientation>Device</MoPubForceOrientation>
      </Extension>
    </Extensions>
    
  • Portrait: Selecting “Portrait” will deliver and lock the creative in portrait, regardless of the app’s orientation at the time of the request.
    <Extensions>
      <Extension type="MoPub">
        <MoPubForceOrientation>Portrait</MoPubForceOrientation>
      </Extension>
    </Extensions>
    
  • Be sure to include a portrait 320×480 or 768×1024 companion banner (depending on the bid request size).
  • As a MoPub best practice, please do not send both landscape and portrait companion banner types in the same video creative, because our SDK will always choose the landscape one first.

FAQ - General (Interstitial + Rewarded Vertical Video)

Is there any vertical video inventory available today?

  • Yes! Any video-enabled interstitial inventory can be targeted for portrait videos.

How can I pull avails for vertical video in MetaMarkets (MMX)?

  • Android Tablet Avails (note: Android only available on SDKs 3.9+)
    • OS: Android
    • Video Format Enabled: Interstitial Video, Rewarded Video
    • SDKv: 3.9+ (will need to manually select)
    • Ad Size: 768×1024
  • Android Phone Avails (note: Android only available on SDKs 3.9+)
    • OS: Android
    • Video Format Enabled: Interstitial Video, Rewarded Video
    • SDKv: 3.9+ (will need to manually select)
    • Ad Size: 320×480
  • iOS Tablet Avails
    • OS: iOS
    • Video Format Enabled: Interstitial Video, Rewarded Video
    • Ad Size: 768×1024
  • iOS Phone Avails
    • OS: iOS
    • Video Format Enabled: Interstitial Video, Rewarded Video
    • Ad Size: 320×480

How should DSP’s target vertical inventory on MPX?

  • Use OpenRTB 2.3
  • Read width “w” and height “h” values. Choose w < h values
    • Note: partners should target 320 (w) x 480 (h) for phone, or 768 (w) x 1024 (h) for tablet requests, as we know those are from portrait oriented apps. For example, think Zynga – WWF
  • Serve to only SDKs 3.9.0+ (Android), iOS OK on all versions

What should the dimensions of the vertical video be?

  • Phone 9:16 (portrait) 360x640 720x1280

  • Tablet 3:4 (portrait) 768x1024

What is the maximum number of media files (video + end cards) that a DSP can send in one VAST XML?

  • MoPub does not place a limit on the number of mediafiles in the VAST XML. However, keep in mind that adding a large number of mediafiles may contribute to increased latency. We also recommend mediafiles are 2mb (max 5mb).

How does MoPub’s SDK determine if the impression opportunity is portrait or landscape? Is the placement explicitly set by the publisher in their SDK for every ad unit?

  • The publisher determines the ad size dimensions (portrait or landscape) that gets passed to MoPub via the SDK. MoPub then passes those dimensions in the bid request.

Which creative types are supported for vertical video placement?

  • VAST and MRAID playables ads are allowed to run in the vertical inventory.

Which creative types are supported for vertical video placement?

  • VAST along with MRAID playables ads are allowed to run in the vertical inventory.

Which video protocols are supported?

  • MoPub supports VAST 2.0, VAST 2.0 wrappers, VAST 3.0, and VAST 3.0 wrappers; however, this is dependent on SDK version. Please defer to the bid_request.imp.video.protocols field.

Which mime types are supported?

  • The video player supports the same mime types supported for interstitial videos. Please defer to the bid_request.imp.video.mimes field

How does MoPub charge the billable event for vertical video? Does the publisher still setup a price floor as a CPM? How does the DSP come into play?

  • Billed impressions remain cleared impressions like all other MoPub supported formats on a CPM basis. MoPub will charge DSP’s when the player appears on screen, just like interstitial VAST video.

FAQ - Rewarded Vertical Video Specific (Supported as of September 2018)

Do DSP’s need to opt-in for of vertical rewarded video?

  • No, all DSP’s are automatically opted in. DSP’s should simply respond to a portrait request with a portrait creative, similarly how you would respond to a landscape request with a landscape creative.

How much vertical rewarded inventory will be available to DSP’s?

  • All publishers that use MoPub Rewarded Video mediation today and also support vertical rewarded inventory will automatically be included. Example publishers include Voodoo, Zynga, Scopley, EasyBrain, PeopleFun, CQgaming, etc. We cannot share concrete figures at this time.

Will DSP’s see a decline in landscape rewarded video requests once support is added for verticle rewarded video?

  • While the total amount of requests will stay the same, they will now reflect the true orientation, which may result in a slight decline of landscape rewarded video. Landscape video is supported and served in landscape irrespective of orientation.

How long should the vertical rewarded videos be?

  • The duration should be less than or equal to 30 seconds and skipoffset is not supported.

Bid Request/Response Examples

Bid Request Examples

  • Device: Note device.w and device.h
{
   "app": {
      "bundle": "553834731",
      "cat": [
         "IAB3",
         "business"
      ],
      "id": "a422f9bf94df0c59389d5beff67f8821",
      "name": "App_Name",
      "publisher": {
         "id": "04241e0b1cc98976858ce16377c7eef4",
         "name": "Publisher_Name"
      },
      "storeurl": "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8",
      "ver": "1.0"
   },
   "at": 2,
   "bcat": [
      "IAB25",
      "IAB26",
      "IAB7-39",
      "IAB8-18",
      "IAB8-5",
      "IAB9-9",
      "IAB3-7"
   ],
   "device": {
      "carrier": "310-260",
      "connectiontype": 2,
      "devicetype": 4,
      "dnt": 0,
      "geo": {
         "country": "USA",
         "lat": 30.7387,
         "lon": -24.0037
      },
      "h": 1920,
      "hwv": "iPhone 6+",
      "ifa": "e785aa3f-0b58-4ff1-8758-74ae56a9b2d9",
      "ip": "8.25.196.26",
      "js": 1,
      "language": "en",
      "make": "Apple",
      "model": "iPhone",
      "os": "iOS",
      "osv": "8.1",
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411",
      "w": 1080
   },
   "id": "e25af195-2a43-4499-b4cd-60519c1915df",
   "imp": [
      {
         "bidfloor": 0.12,
         "displaymanager": "mopub",
         "displaymanagerver": "4.4.0",
         "ext": {
            "brsrclk": 1,
            "dlp": 1
         },
         "id": "1",
         "instl": 1,
         "secure": 1,
         "tagid": "441fb971540fd4bbc364b83397721b5e",
         "video": {
            "battr": [
               3,
               7,
               8,
               9,
               10,
               14
            ],
            "companiontype": [
               1,
               2,
               3
            ],
            "h": 320,
            "linearity": 1,
            "maxduration": 30,
            "mimes": [
               "video/3gpp",
               "video/3gpp2",
               "video/mp4",
               "video/quicktime",
               "video/x-m4v"
            ],
            "minduration": 0,
            "protocols": [
               2,
               5,
               3,
               6
            ],
            "w": 480,
            "ext": {
               "videotype": "rewarded"
            }
         }
      }
   ]
}
  • Portrait: Note the imp.video.w and imp.video.h
    {
     "app": {
        "bundle": "553834731",
        "cat": [
           "IAB3",
           "business"
        ],
        "id": "a422f9bf94df0c59389d5beff67f8821",
        "name": "App_Name",
        "publisher": {
           "id": "04241e0b1cc98976858ce16377c7eef4",
           "name": "Publisher_Name"
        },
        "storeurl": "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8",
        "ver": "1.0"
     },
     "at": 2,
     "bcat": [
        "IAB25",
        "IAB26",
        "IAB7-39",
        "IAB8-18",
        "IAB8-5",
        "IAB9-9",
        "IAB3-7"
     ],
     "device": {
        "carrier": "310-260",
        "connectiontype": 2,
        "devicetype": 4,
        "dnt": 0,
        "geo": {
           "country": "USA",
           "lat": 30.7387,
           "lon": -24.0037
        },
        "h": 1920,
        "hwv": "iPhone 6+",
        "ifa": "e785aa3f-0b58-4ff1-8758-74ae56a9b2d9",
        "ip": "8.25.196.26",
        "js": 1,
        "language": "en",
        "make": "Apple",
        "model": "iPhone",
        "os": "iOS",
        "osv": "8.1",
        "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411",
        "w": 1080
     },
     "id": "e25af195-2a43-4499-b4cd-60519c1915df",
     "imp": [
        {
           "banner": {
              "api": [
                 3,
                 5
              ],
              "battr": [
                 3,
                 8,
                 9,
                 10,
                 14,
                 7
              ],
              "btype": [
                 4
              ],
              "h": 480,
              "pos": 1,
              "w": 320
           },
           "bidfloor": 0.1,
           "displaymanager": "mopub",
           "displaymanagerver": "5.2.0",
           "ext": {
              "brsrclk": 1,
              "dlp": 1,
              "metric": [
                 {
                    "type": "viewability",
                    "vendor": "ias"
                 },
                 {
                    "type": "viewability",
                    "vendor": "moat"
                 }
              ]
           },
           "id": "1",
           "instl": 1,
           "secure": 1,
           "tagid": "b3866acdc6424a29900fcf8c19a02317",
           "video": {
              "battr": [
                 3,
                 8,
                 9,
                 10,
                 14,
                 7
              ],
              "companiontype": [
                 1,
                 2,
                 3
              ],
              "ext": {
                 "skip": 0,
                 "videotype": "rewarded"
              },
              "h": 480,
              "linearity": 1,
              "maxduration": 30,
              "mimes": [
                 "video/3gpp",
                 "video/3gpp2",
                 "video/mp4",
                 "video/quicktime",
                 "video/x-m4v"
              ],
              "minduration": 0,
              "protocols": [
                 2,
                 5,
                 3,
                 6
              ],
              "w": 320
           }
        }
     ]
    }
    

Bid Response Examples

  • Device: Note <MoPubForceOrientation>Device</MoPubForceOrientation>
    {
     "bidid": "ZMer7lSd-NmfyhWCegvQP9tjArU",
     "id": "406bacbd-a0af-493e-b25b-7643fa808956",
     "seatbid": [
        {
           "bid": [
              {
                 "adid": "911655",
                 "adm": "<VAST version=\"3.0\">\n    <Ad id=\"911655\">\n        <InLine>\n            <AdSystem version=\"1.0\">Manage.com<\/AdSystem>\n            <AdTitle><![CDATA[911655]]><\/AdTitle>\n            \n            \n            <Creatives>\n                <Creative sequence=\"1\" id=\"911655\">\n                    <Linear>\n                        <Duration>00:00:15<\/Duration>\n                        <TrackingEvents>\n        <Tracking event=\"firstQuartile\">\n        <![CDATA[https://bidder.example.com/event?type=firstQuartile]]>\n    <\/Tracking>    <Tracking event=\"midpoint\">\n        <![CDATA[https://bidder.example.com/event?type=midpoint]]>\n    <\/Tracking>    <Tracking event=\"thirdQuartile\">\n        <![CDATA[https://bidder.example.com/event?type=thirdQuartile]]>\n    <\/Tracking>    <Tracking event=\"complete\">\n        <![CDATA[https://bidder.example.com/event?type=complete]]>\n    <\/Tracking>\n<\/TrackingEvents>\n                        <VideoClicks>\n                            <ClickThrough><![CDATA[https://bidder.example.com/click]]><\/ClickThrough>\n                        <\/VideoClicks>\n                        <MediaFiles>\n                            <MediaFile delivery=\"progressive\" bitrate=\"416\" width=\"480\" height=\"360\" type=\"video/mp4\"><![CDATA[https://cdn.example.com/videos/some-video-640x360.mp4]]><\/MediaFile>\n                        <\/MediaFiles>\n                    <\/Linear>\n                <\/Creative>\n                <Creative>\n    <CompanionAds>\n        <Companion width=\"480\" height=\"320\">\n            <StaticResource creativeType=\"image/jpeg\">\n                <![CDATA[https://cdn.example.com/images/some-image-480x320.jpeg]]>\n            <\/StaticResource>\n            <CompanionClickThrough>\n                <![CDATA[https://bidder.example.com/2/click]]>\n            <\/CompanionClickThrough>\n        <\/Companion>\n    <\/CompanionAds>\n<\/Creative>\n            <\/Creatives>\n            <Extensions>\n    <Extension type=\"MoPub\">\n        <MoPubForceOrientation>Device<\/MoPubForceOrientation>\n        <MoPubCtaText>Install Now<\/MoPubCtaText>\n    <\/Extension>\n<\/Extensions>\n        <\/InLine>\n    <\/Ad>\n<\/VAST>",
                 "adomain": [
                    "example.com"
                 ],
                 "attr": [
                    6
                 ],
                 "bundle": "530621395",
                 "cat": [
                    "IAB22"
                 ],
                 "cid": "1271",
                 "crid": "911655",
                 "ext": {
                    "crtype": "VAST 3.0",
                    "duration": 15,
                    "imptrackers": [
                       "https://bidder.example.com/event?type=impression&auction_id=${AUCTION_ID}"
                    ]
                 },
                 "id": "ZMer7lSd-NmfyhWCegvQP9tjArU",
                 "impid": "1",
                 "iurl": "https://cdn.example.com/images/some-image-480x320.jpeg",
                 "price": 17.55
              }
           ],
           "seat": "manage"
        }
     ]
    }
    
  • Portrait: Note the <MoPubForceOrientation>Portrait</MoPubForceOrientation>
    {
     "bidid": "CKzXy84JEN8fGOHw4fnM9NoC",
     "cur": "USD",
     "id": "0d08c47d83b750779aa983be39c24c0670f09c93_43",
     "seatbid": [
        {
           "bid": [
              {
                 "adid": "1234",
                 "adm": "<VAST version=\"2.0\">   <Ad id=\"1\">      <InLine>         <AdSystem>MoPub<\/AdSystem>         <AdTitle>Wooga iOS Ad<\/AdTitle>         <Impression />         <Creatives>            <Creative>               <Linear>                  <Duration>00:00:17<\/Duration>                  <VideoClicks>                     <ClickThrough><![CDATA[https://bidder.example.com/click]]><\/ClickThrough>                  <\/VideoClicks>                  <MediaFiles>                     <MediaFile delivery=\"progressive\" type=\"video/mp4\" bitrate=\"325\" width=\"640\" height=\"360\"><![CDATA[https://cdn.example.com/videos/some-video-360x640.mp4]]><\/MediaFile>                  <\/MediaFiles>               <\/Linear>            <\/Creative>            <Creative>               <CompanionAds>                  <Companion width=\"360\" height=\"640\">                     <StaticResource creativeType=\"image/jpeg\"><![CDATA[https://cdn.example.com/images/some-image-360x640.png]]><\/StaticResource>                     <CompanionClickThrough><![CDATA[https://bidder.example.com/click]]><\/CompanionClickThrough>                  <\/Companion>               <\/CompanionAds>            <\/Creative>         <\/Creatives>         <Extensions>            <Extension type=\"MoPub\">               <MoPubForceOrientation>Portrait<\/MoPubForceOrientation>            <\/Extension>         <\/Extensions>      <\/InLine>   <\/Ad><\/VAST>",
                 "adomain": [
                    "example.com"
                 ],
                 "attr": [
                    6
                 ],
                 "cat": [
                    "IAB9-25"
                 ],
                 "cid": "5",
                 "crid": "pocketgems-3",
                 "ext": {
                    "crtype": "VAST 2.0",
                    "duration": 25,
                    "imptrackers": [
                       "https://bidder.example.com/event?type=impression&auction_id=${AUCTION_ID}"
                    ]
                 },
                 "h": 0,
                 "id": "1234567890",
                 "impid": "1",
                 "iurl": "https://cdn.example.com/images/some-image-360x640.png",
                 "price": 100.001,
                 "w": 0
              }
           ],
           "seat": "Mopub"
        }
     ]
    }
    

Last updated October 10, 2018

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2018 MoPub Inc.