Video Object

Note

Fields marked with an asterisk (*) are optional.

Video Object Properties

Value

Type

Description

mimes

array of strings

Content MIME types supported.

minduration

integer

Minimum video ad duration in seconds, for example, 2

maxduration

integer

Maximum video ad duration in seconds, for example, 15

linearity*

integer

Indicates if the impression must be linear or nonlinear, for example, 1. If none is specified, it is assumed all are allowed.

  • 1: Linear

  • 2: Non-Linear/Overlay

This corresponds to the required type of VAST response, where a linear response is VAST containing video assets, and non-linear is a VAST response (typically) containing a banner/overlay. Whether a placement is instream, out-stream, etc. For that, see placement.

plcmt*

integer

Placement type for the impression, for example 2. Note: Though not required, this is an important field for some Buyers, not explicitly setting it will result in lower demand. This field can take the following values:

  • 1: In-stream. Pre-roll, mid-roll, and post-roll ads that are played before, during or after the streaming video content that the consumer has requested. Instream video must be set to “sound on” by default at player start, or have explicitly clear user intent to watch the video content. While there may be other content surrounding the player, the video content must be the focus of the user’s visit. It should remain the primary content on the page and the only video player in-view capable of audio when playing. If the player converts to floating/sticky subsequent ad calls should accurately convey the updated player size.

  • 2: Accompanying Content. Pre-roll, mid-roll, and post-roll ads that are played before, during, or after streaming video content. The video player loads and plays before, between, or after paragraphs of text or graphical content, and starts playing only when it enters the viewport. Accompanying content should only start playback upon entering the viewport. It may convert to a floating/sticky player as it scrolls off the page.

  • 3: Interstitial. Video ads that are played without video content. During playback, it must be the primary focus of the page and take up the majority of the viewport and cannot be scrolled out of view. This can be in placements like in-app video or slideshows.

  • 4: No Content/Standalone. Found in content, social, or product feeds.

To be considered In-stream, impressions must be set to Sound On by default at start. “Sound On” by default must be signaled within the playbackmethod field. Values of 1, 3, 4, and 5 all qualify.

All impressions with Default Sound Off (playbackmethod value of 2, 6, or null) must signal an out-stream placement of type of 2, 3, or 4. Additional signals such as Player Size, Placement Type, Linearity, etc. can be used to differentiate between these various out-stream placements.

playbackend*

integer

The event that causes playback to end, for example 2. This field can take the following values:

  • 1: On Video Completion or when Terminated by User.

  • 2: On Leaving Viewport or when Terminated by User.

  • 3: On Leaving Viewport Continues as a Floating/Slider Unit until Video Completion or when Terminated by User.

protocols

array of integers

Accepted video bid response protocols as defined in OpenRTB, for example [6,8]. As BidSwitch only serves video using VAST wrappers, the valid response integers are 5, 6, 8, 12 and 14 for the request to be eligible for bidding.

pos*

integer

Ad Position as defined in OpenRTB, for example 1

w*

integer

Width of the player in pixels, for example, 600

h*

integer

Height of the player in pixels, for example 400

startdelay*

integer

Indicates the start delay in seconds. If the start delay value is greater than 0, then the position is mid-roll and the value indicates the start delay.

  • > 0: Mid-Roll (value indicates start delay in second)

  • 0: Pre-roll

  • -1: Generic mid-roll

  • -2: Generic post-roll

maxseq*

integer

Indicates the maximum number of ads that may be served into a “dynamic” video ad pod (where the precise number of ads is not predetermined by the seller).

poddur*

integer

Indicates the total amount of time in seconds that advertisers may fill for a “dynamic” video ad pod, or the dynamic portion of a “hybrid” ad pod. This field is required only for the dynamic portion(s) of video ad pods. This field refers to the length of the entire ad break, whereas minduration/maxduration/rqddurs are constraints relating to the slots that make up the pod.

podid*

integer

Unique identifier indicating that an impression opportunity belongs to a video ad pod. If multiple impression opportunities within a bid request share the same podid, this indicates that those impression opportunities belong to the same video ad pod.

podseq*

integer

The sequence (position) of the video ad pod within a content stream. The following values are supported:

  • -1: Last pod in the content stream

  • 0: Any pod in the content stream

  • 1: First pod in the content stream

rqddurs*

array of integers

Precise acceptable durations for video creatives in seconds. This field specifically targets the Live TV use case where non-exact ad durations would result in undesirable ‘dead air’. This field is mutually exclusive with maxduration.

slotinpod*

integer

For video ad pods, this value indicates that the seller can guarantee delivery against the indicated slot position in the pod. The following values are supported:

  • -1: Last ad in the pod

  • 0: Any ad in the pod

  • 1: First ad in the pod

  • 2: First or last ad in the pod

mincpmpersec*

float

Minimum CPM per second. This is a price floor for the “dynamic” portion of a video ad pod, relative to the duration of bids an advertiser may submit.

battr*

array of integers

Blocked creative attributes as defined in OpenRTB, for example, [6]

minbitrate*

integer

Minimum bit rate in Kbps, for example 680

maxbitrate*

integer

Maximum bit rate in Kbps, for example 990

api*

array of integers

List of supported API frameworks for this impression as defined in OpenRTB, for example, [1,2]. If an API is not explicitly listed, it is assumed not to be supported.

maxextended*

integer

Maximum extended video ad duration if extension is allowed.

  • Blank or 0, extension is not allowed.

  • -1, extension is allowed, and there is no time limit imposed.

  • Greater than 0, then the value represents the number of seconds of extended play supported beyond the maxduration value.

boxingallowed*

integer

Indicates if letter-boxing of 4:3 content into a 16:9 window is allowed:

  • 0 = no

  • 1 = yes.

playbackmethod*

array of integers

Allowed playback methods as defined in the OpenRTB, for example [1, 2]. If none are specified, it is assumed all are allowed. This field can take the following values:

  • 1: Initiates on Page Load with Sound On

  • 2: Initiates on Page Load with Sound Off by Default

  • 3: Initiates on Click with Sound On

  • 4: Initiates on Mouse-Over with Sound On

  • 5: Initiates on Entering Viewport with Sound On

  • 6: Initiates on Entering Viewport with Sound Off by Default

delivery*

array of integers

Supported delivery methods (e.g., streaming, progressive) as defined in OpenRTB. If none specified, assume all are supported, for example, [1, 2]

sequence*

integer

If multiple ad impressions are offered in the same bid request, the sequence number will allow for the coordinated delivery of multiple creatives, for example, 2.

companionad*

object array

Array of Banner objects if companion ads are available. See the Banner Object section for more information.

companiontype*

array of integers

List of allowed companion ad types, for example [1, 2] Possible values:

  • 1: Static Resource

  • 2: HTML Resource

  • 3: iframe Resource

skip*

integer

Indicates if the player will allow the video to be skipped, where 0 = no, 1 = yes.

skipmin*

integer

Videos of a total duration greater than this value (seconds) can be skippable; only applicable if the ad is skippable.

skipafter*

integer

Number of seconds a video must play before skipping is enabled; only applicable if the ad is skippable.

ext*

object

Video extension object

Video Ext Object

Video Ext Object Properties

Value

Type

Description

rewarded*

integer

Indicates whether the ad is being rendered as part of a rewarded / incentivised user experience, where:

  • 0 = non-rewarded

  • 1 = rewarded

  • If omitted, non-rewarded can be assumed

Video Object Example

{
   "id":"1",
   "bidfloor":0.03,
   "video":{
      "w":640,
      "h":480,
      "pos":1,
      "startdelay":0,
      "minduration":5,
      "maxduration":30,
      "maxextended":30,
      "minbitrate":300,
      "maxbitrate":1500,
      "skip":1,
      "api":[
         1,
         2
      ],
      "protocols":[
         6,
         8
      ],
      "mimes":[
         "video/x-flv",
         "video/mp4",
         "application/x-shockwave-flash",
         "application/javascript"
      ],
      "linearity":1,
      "boxingallowed":1,
      "playbackmethod":[
         1,
         3
      ],
      "delivery":[
         2
      ],
      "battr":[
         13,
         14
      ],
      "companionad":[
         {
            "id":"1234567893-1",
            "w":300,
            "h":250,
            "pos":1,
            "battr":[
               13,
               14
            ],
            "expdir":[
               2,
               4
            ]
         },
         {
            "id":"1234567893-2",
            "w":728,
            "h":90,
            "pos":1,
            "battr":[
               13,
               14
            ]
         }
      ],
      "companiontype":[
         1,
         2
      ],
      "ext":{
         "rewarded": 1
      }
   }
}