> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/generating-ads/banner-x-responsive/video-ads-banner-x.md).

# Banner X video ads

Advertisers and retailers can upload promotional videos to their banners, which are displayed directly on their website or app. These videos influence purchasing decisions by showcasing products in an engaging manner. Interactive videos enable consumers to explore and purchase products directly from the video, featuring **add to cart** or **buy now** options.

<figure><img src="/files/HEeyF0Sgq5nr0V0vKyvL" alt="" width="450"><figcaption></figcaption></figure>

## Why video ads for your site?

Onsite video allows your advertisers to engage more deeply with your shoppers on your website, creating more inviting shopper experiences and increasing the time shoppers spend on your site, exploring their options.

| Reasons                                | Description                                                                                                                                                                          |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Promote a brand story                  | High-engagement video ads showcase an engaging and relevant part of an advertiser’s overall or product-specific story, connecting them more deeply to your retail brand.             |
| New product launches                   | Advertisers can use video to introduce new products more deeply than they could with simple display. Video allows them to connect with shoppers on the value new products may bring. |
| Brand awareness                        | Advertisers looking to promote awareness in a new category or with new messaging can use video in key locations on your site to communicate directly with your shoppers.             |
| Deepen connection to your retail brand | Video can deepen the connection between an advertiser and your retail brand in the minds of shoppers.                                                                                |

## Video specifications

* **Maximum file size**: 300MB
* **Accepted file types**: Video/mp4, video/quicktime, video/x-msvideo
* **Optional codec validation**: H.264, H.265
* **Heights and widths**: Defined by the retailer in pixels
* **Duration limit**: None
* **Campaign review**: Mandatory for banner X campaigns that contain a video element
* **Tag support**: Standard VAST tag served as `adm` in the ad response

## Integrate video ads

You can create interactive banner X video ads that seamlessly integrate with [VAST 4.0](https://iabtechlab.com/wp-content/uploads/2016/05/VAST4.0_Updated_April_2016.pdf) compatible video players, providing retailers with an interactive advertising format that streamlines deployment with minimal effort.

Banner X video ads adhere to the Digital Video Ad Serving Template (VAST) 4.0 standard, ensuring smooth and compatible integration with supported video players.

When incorporating video ads into campaigns, the ad response includes a field named `adm`. This field contains the XML tags required for VAST 4.0 compliance, allowing easy embedding in video players.

### Integration Requirements

#### Ad request

You will need to send an ad request to our Banner X endpoint. Video and other banner content will only be served for campaigns that have videos and banner content configured. You will need to ensure there are campaigns that are configured with video assets before you will receive ads with the `adm` object provided.

You can see more about how to request ads in [Generate banner X ads](/retail-media-interface/integration/integration/bannerx.md)

#### Video player (ad rendering)

Epsilon Retail Media serves a VAST tag (Video Ad Server Template) in our ad response as the `adm` object of the banner X response. As such, you will likely need a video player to parse the VAST tag and render the video ad.

{% hint style="info" %}
**Don't have a video player?** A variety of open-source video players can be used. We recommend to review available paid as well as open source options such as Video JS or Clappr. Note that additional plugins may be required to parse VAST tags.
{% endhint %}

#### Banner X previewer

Update your banner x previewer to ensure ad previewing is correctly rendered when creating, managing, and reviewing campaigns. See [Banner X previewer](/retail-media-interface/integration/generating-ads/banner-x-responsive/integrating-your-banner-x-previewer.md).

#### Tracking & reporting

A variety of tracking (impressions, clicks, progress, and interaction) are all possible, please refer to the guide in [Banner X Video Interaction Reporting](/retail-media-interface/integration/data-api/api-overview/ad-interaction-events-reporting/integrate-banner-x-video-interaction-reporting.md)

### Tracking elements

Uses the [Video Ad Serving Template](https://iabtechlab.com/standards/vast/) (VAST) for tracking purposes. The VAST tag includes several tracking mechanisms:

* Impression tracking
* Click tracking
* Progress tracking (start, firstQuartile, midpoint, thirdQuartile, complete)
  * **First quartile (25% Watched)**: Early indicator of initial engagement
  * **Midpoint (50% Watched)**: Indicates sustained viewer interest halfway through the content
  * **Third quartile (75% Watched)**: Shows strong viewer commitment to the content
  * **Complete (100% Watched)**: Confirms viewer watched the entire video, indicating maximum engagement
* Interaction tracking (mute, unmute, pause, resume, fullscreen)
  * **Mute**: The user has muted the video audio
  * **Unmute**: The user has unmuted the video audio
  * **Pause**: The user has paused video playback
  * **Resume**: The user has resumed video playback after pausing

{% hint style="info" %}
**View the integration guide for tracking interactions** Please refer to the guide in [Banner X Video Interaction Reporting](/retail-media-interface/integration/data-api/api-overview/ad-interaction-events-reporting/integrate-banner-x-video-interaction-reporting.md)
{% endhint %}

### Example ad response for video ads

Here is a snippet of how the video ad response would look like including VAST-related information:

```
{
  "ads": [
    {
      "contentStandardId": "00000000-0000-0000-0000-000000000001",
      "slotId": "Double_Tile",
      "banners": [
        {
          "citrusAdId": "example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789",
          "citrusCampaignName": "Example-Campaign-Name",
          "citrusContentStandardId": "00000000-0000-0000-0000-000000000001",
          "citrusSlotId": "Double_Tile",
          "citrusExpiry": "2026-12-31T00:00:00.000000000Z",
          "headingText": "Example heading text",
          "bannerText": "Example banner text",
          "bannerTextColour": "000000",
          "tags": {},
          "gtins": [
            "00000000000000"
          ],
          "sellerId": "",
          "position": 1,
          "metadata": {},
          "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<VAST version=\"4.0\">
    <Ad id=\"1\">
        <InLine>
            <AdSystem>CitrusAd</AdSystem>
            <Impression><![CDATA[https://example.com/v1/resource/first-i/example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789]]></Impression>
            <ViewableImpression>
                <Viewable><![CDATA[https://example.com/v1/resource/first-i/example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789]]></Viewable>
                <NotViewable></NotViewable>
                <ViewUndetermined></ViewUndetermined>
            </ViewableImpression>
            <AdTitle>example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789</AdTitle>
            <Creatives>
                <Creative>
                    <UniversalAdId
                        idRegistry=\"citrusad.com\"
                        idValue=\"00000000-0000-0000-0000-000000000002\">
                        00000000-0000-0000-0000-000000000002
                    </UniversalAdId>
                    <Linear>
                        <Duration></Duration>
                        <MediaFiles>
                            <ClosedCaptionFiles>
                                <ClosedCaptionFile type=\"text/vtt\" language=\"en\">
                                    <![CDATA[https://example.com/media/example-transcript.vtt]]>
                                </ClosedCaptionFile>
                            </ClosedCaptionFiles>
                            <Mezzanine>
                                <![CDATA[https://example.com/media/example-video-1.mp4]]>
                            </Mezzanine>
                            <MediaFile
                                delivery=\"progressive\"
                                type=\"video/mp4\"
                                width=\"160\"
                                height=\"128\"
                                bitrate=\"3552\"
                                codec=\"h264\">
                                <![CDATA[https://example.com/media/example-video-1.mp4]]>
                            </MediaFile>
                        </MediaFiles>
                        <VideoClicks>
                            <ClickTracking>
                                <![CDATA[https://example.com/v1/resource/second-c/example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789]]>
                            </ClickTracking>
                            <ClickThrough></ClickThrough>
                        </VideoClicks>
                    </Linear>
                </Creative>

                <Creative>
                    <UniversalAdId
                        idRegistry=\"citrusad.com\"
                        idValue=\"00000000-0000-0000-0000-000000000003\">
                        00000000-0000-0000-0000-000000000003
                    </UniversalAdId>
                    <Linear>
                        <Duration></Duration>
                        <MediaFiles>
                            <Mezzanine>
                                <![CDATA[https://example.com/media/example-video-2.mp4]]>
                            </Mezzanine>
                            <MediaFile
                                delivery=\"progressive\"
                                type=\"video/mp4\"
                                width=\"1920\"
                                height=\"1080\"
                                bitrate=\"832398\"
                                codec=\"h264\">
                                <![CDATA[https://example.com/media/example-video-2.mp4]]>
                            </MediaFile>
                        </MediaFiles>
                        <VideoClicks>
                            <ClickTracking>
                                <![CDATA[https://example.com/v1/resource/second-c/example_ad_id_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789]]>
                            </ClickTracking>
                            <ClickThrough></ClickThrough>
                        </VideoClicks>
                    </Linear>
                </Creative>
            </Creatives>
        </InLine>
    </Ad>
</VAST>",
          "videoTranscriptFiles": [
            {
              "videoFileId": "00000000-0000-0000-0000-000000000002",
              "format": "txt",
              "url": "https://example.com/media/example-transcript.txt",
              "language": "en"
            }
          ]
        }
      ]
    }
  ]
}
```

<br>


---

# 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://help.citrusad.com/retail-media-interface/integration/generating-ads/banner-x-responsive/video-ads-banner-x.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.
