VAST SSP Integration

Integrating with the RTB-Stack platform using the Video Ad Serving Template (VAST) involves a few steps to ensure that your video ad requests are correctly formatted and successfully processed. This guide provides an overview of the necessary configurations and parameters for VAST SSP integration.

The RTB-Stack platform supports VAST version 3.0 and higher.

VAST URL Configuration

The VAST URL used for sending bid requests for video ads typically looks like this:

Web:

https://your-adx-domain/vast?client=123&endpoint=123&ssp=123&isp=[ISP]&lmt=[LMT]&os=[OS]&dnt=[DNT]&connection=[CONNECTION]&page=[PAGE]&cat=[IAB_CATEGORY]&sectioncat=[SEC_IAB_CATEGORY]&pagecat=[PAGE_IAB_CATEGORY]&gdpr=[GDPR]&yob=[YOB]&gender=[GENDER]&width=[WIDTH]&height=[HEIGHT]&skipafter=[SKIP_AFTER]&skip=[SKIP]&skipmin=[SKIP_MIN]&protocols=[PROTOCOLS]&schain=[SCHAIN]&mindur=[MIN_DURATION]&maxdur=[MAX_DURATION]&pubcat=[PUB_IAB_CATEGORY]&contentcat=[CONT_IAB_CATEGORY]&lat=[LAT]&lon=[LON]&consent=[CONSENT]&coppa=[COPPA]&language=[LANG]&user_agent=[UA]&geo_type=[GEOTYPE]&ip=[IP]&rwdd=[REWARDED]&instl=[INTERSTITIAL]&pubid=[PUBLISHER_ID]&domain=[DOMAIN]

InApp:

https://your-adx-domain/vast?client=123&endpoint=123&ssp=123&isp=[ISP]&lmt=[LMT]&ifa=[IFA]&model=[MODEL]&ifa_type=[IFA_TYPE]&os=[OS]&osv=[OSV]&make=[MAKE]&dnt=[DNT]&connection=[CONNECTION]&storeurl=[STOREURL]&appname=[APP_NAME]&bundle=[BUNDLE]&cat=[IAB_CATEGORY]&gdpr=[GDPR]&yob=[YOB]&gender=[GENDER]&network_name=[NETWORK_NAME]&content_id=[CONTENT_ID]&content_rating=[CONTENT_RATING]&channel_name=[CHANNEL_NAME]&width=[WIDTH]&height=[HEIGHT]&skipafter=[SKIP_AFTER]&skip=[SKIP]&skipmin=[SKIP_MIN]&protocols=[PROTOCOLS]&schain=[SCHAIN]&mindur=[MIN_DURATION]&maxdur=[MAX_DURATION]&pubcat=[PUB_IAB_CATEGORY]&contentcat=[CONT_IAB_CATEGORY]&lat=[LAT]&lon=[LON]&consent=[CONSENT]&coppa=[COPPA]&language=[LANG]&user_agent=[UA]&geo_type=[GEOTYPE]&ip=[IP]&rwdd=[REWARDED]&instl=[INTERSTITIAL]&pubid=[PUBLISHER_ID]

Key Components of the VAST URL:

  • Client, SSP, and Endpoint Identifiers: These are essential for routing the request correctly.
  • Macros: These placeholders (e.g., [ISP], [MODEL], [OS]) should be replaced with real values when the bid request is made.
  • Required Parameters: Certain parameters are mandatory, such as domain/bundle, IP and user agent. Ensure these are included to avoid request rejections. A complete list of supported VAST macros by the platform can be found below.
Expand to see the table with supported VAST macros.

Here’s a table of supported VAST macros, their expected values, corresponding OpenRTB fields, and descriptions. Please note that the required ones are highlighted in red. It is required to include either the [BUNDLE] or [DOMAIN] macro in the VAST URL:

PARAMETER MACRO Expected Value OpenRTB Description
domain [DOMAIN] string site.domain Domain of the site where the ad will be displayed.
bundle [BUNDLE] string app.bundle Bundle ID of the application.
ip [IP] decimal device.ip IP address of the device.
user agent [UA] string device.ua User agent string of the device.
width [WIDTH] int imp.video.width Width of the video ad in device independent pixels (DIPS).
height [HEIGHT] int imp.video.height Height of the video ad in device independent pixels (DIPS).
isp [ISP] string device.carrier Internet Service Provider name associated with the device.
lmt [LMT] 1/0 device.lmt Limit ad tracking flag (1 for limited, 0 for not limited).
ifa [IFA] string device.ifa Identifier for Advertising, a unique device identifier.
model [MODEL] string device.model Model of the device.
ifa_type [IFA_TYPE] string device.ext.ifatype Type of the identifier for advertising.
os [OS] string device.os Operating system of the device.
osv [OSV] string device.osv Operating system version.
make [MAKE] string device.make Manufacturer of the device.
dnt [DNT] 1/0 device.dnt Do Not Track flag (1 for DNT enabled, 0 for not enabled).
connection [CONNECTION] int device.connectiontype Type of network connection: 1 – Ethernet, 2 – WIFI, 3 – Unknown cellular, 4 – 2G, 5 – 3G, 6 – 4G, 7 - 5G
page [PAGE] string site.page URL of the page where the ad will be displayed (encoded).
storeurl [STOREURL] string app.storeurl URL of the app store where the app is available.
appname [APP_NAME] string app.name Name of the application.
cat [IAB_CATEGORY] comma separated strings app.cat or site.cat IAB content categories of the app or site.
gdpr [GDPR] 1/0 regs.gdpr GDPR compliance flag (1 for GDPR applicable, 0 for not applicable).
yob [YOB] int user.yob Year of birth of the user.
gender [GENDER] M / F / O user.gender Gender of the user (M for male, F for female, O for other).
network_name [NETWORK_NAME] string content.network.name Name of the network providing the content.
content_id [CONTENT_ID] int content.id Unique identifier for the content.
content_rating [CONTENT_RATING] string content.contentrating Rating of the content (e.g., PG, G, R).
channel_name [CHANNEL_NAME] string content.channel.name Name of the channel broadcasting the content.
skipafter [SKIP_AFTER] int imp.video.skipafter Time in seconds after which the ad can be skipped.
skip [SKIP] 1/0 imp.video.skip Flag indicating if the ad is skippable (1 for skippable, 0 for not skippable).
skipmin [SKIP_MIN] int imp.video.skipmin Minimum time in seconds before the ad can be skipped.
protocols [PROTOCOLS] comma separated ints imp.video.protocols Supported video protocols (e.g., VAST, VPAID).
schain [SCHAIN] string object source.ext.schain Supply chain object for tracking supply sources.
mindur [MAX_DURATION] int imp.video.maxduration Minimum duration of the video ad in seconds.
maxdur [MIN_DURATION] int imp.video.minduration Maximum duration of the video ad in seconds.
pubcat [PUB_IAB_CATEGORY] comma separated strings app.publisher.cat or site.publisher.cat IAB categories for the publisher of the app or site.
lat [LAT] decimal device.geo.lat Latitude of the device's location.
lon [LON] decimal device.geo.lon Longitude of the device's location.
consent [CONSENT] string user.consent User's consent string for data processing.
coppa [COPPA] 1/0 regs.coppa Flag indicating if COPPA regulations apply (1 for yes, 0 for no).
language [LANG] string device.language Language setting of the device.
geo_type [GEOTYPE] int device.geo.type Type of geographical data (e.g., GPS, IP-based).
rwdd [REWARDED] 1/0 imp.rwdd 1 if the ad is rewarded, otherwise 0.
instl [INTERSTITIAL] 1/0 imp.instl 1 if the ad is interstitial, otherwise 0.
pubid [PUBLISHER_ID] string - Unique identifier for the publisher.
pagecat [PAGE_IAB_CATEGORY] string site.pagecat IAB category of the page where the ad will be displayed.
sectioncat [SEC_IAB_CATEGORY] string site.sectioncat IAB category of the section of the app or site where the ad will be displayed.
contentcat [CONT_IAB_CATEGORY] string content.cat IAB category of the content within which the ad is displayed.

All VAST requests to the RTB-Stack platform should be made using the POST or GET method. All parameters should be included directly in the request URL. Ensuring that all required parameters are present is essential for the request to be processed correctly. Missing parameters can lead to request rejections or filtering by the platform.

Handling Invalid Requests

For any requests that are invalid or do not meet the platform's requirements, the RTB-Stack platform will return a JSON response containing a NoBidReason ("nbr") code. These NBR codes help identify the specific reason why a bid was not placed. You can find detailed descriptions and meanings of these NBR codes in the corresponding article.

VAST URL Sample:

https://your-adx-domain/vast?client=test&endpoint=test&ssp=test&isp=TestISP&lmt=1&ifa=test-ifa&model=TestModel&ifa_type=test&os=TestOS&osv=TestVersion&make=TestMake&dnt=0&connection=TestConnection&page=http%3A%2F%2Ftest.vast.com&storeurl=http%3A%2F%2Ftest.store.com&appname=TestApp&bundle=test.bundle&cat=IAB1,IAB2&gdpr=1&yob=2000&gender=M&network_name=TestNetwork&content_id=123&content_rating=PG&channel_name=TestChannel&width=640&height=360&skipafter=10&skip=1&skipmin=5&protocols=3,5,6&schain=test-schain&mindur=10&maxdur=60&pubcat=IAB22&lat=12.34&lon=56.78&consent=T&coppa=0&language=en&user_agent=TestUA&geo_type=1&ip=192.0.2.1&rwdd=1&instl=0&pubid=test-pub&domain=test.domain
Updated on October 23, 2024