VAST Integration

Full parameter reference for the Praevis VAST endpoint.

Endpoint: GET https://rtb.praevis.com/vast


Required parameters

ParameterTypeDescription
site_idstring (UUID)Your Publisher ID from the dashboard
wintPlayer width in pixels
hintPlayer height in pixels

Device and traffic parameters

ParameterTypeDefaultDescription
ipstringServer IPViewer IP address — pass via ad server macro
uastringRequest UAViewer user agent
didstring—Device identifier (IDFA, GAID)
ifastring—Advertising identifier (alias for did)
⚠️

Always pass ip and ua via your ad server macros. Without them, DSPs cannot geo-target and fill rate drops significantly.


Video parameters

ParameterTypeDefaultDescription
formatstringvastResponse format: vast or vmap
min_ad_durationint6Minimum creative duration (seconds)
max_ad_durationint120Maximum creative duration (seconds)
pod_durationint90Ad pod total duration (seconds, VMAP only)

Content metadata

Passing content metadata significantly improves fill rate. Genre-targeting DSPs only bid when they can match a content signal.

ParameterTypeDescription
content_genrestringContent genre: drama, sport, news, entertainment, comedy, documentary, reality, gaming, music
content_titlestringEpisode or video title
content_seriesstringSeries name
content_episodeintEpisode number
content_seasonintSeason number
content_idstringYour internal content ID
content_ratingstringContent rating: G, PG, PG-13, R
content_lengthintContent duration in seconds
content_livestreamint1 if live, 0 if VOD
content_categoriesstringIAB categories, comma-separated
content_keywordsstringKeywords, comma-separated

App / CTV parameters

Required for mobile and CTV inventory. DSPs use these for app targeting and brand safety.

ParameterTypeDescription
app_bundlestringBundle ID: com.example.app (Android) or 12345678 (iOS)
app_namestringApp display name
app_store_urlstringApp Store or Play Store URL
languagestringContent language (ISO 639-1, e.g. en, ar)
network_namestringTV network or channel name
channel_namestringChannel name within app

Session and GDPR

ParameterTypeDescription
session_idstringSession ID for frequency capping
gdprint1 if GDPR applies, 0 otherwise
gdpr_consentstringIAB TCF 2.2 consent string

Ad server macro reference

Ad ServerIP macroUA macroBundle macro
SpringServe%%IP%%%%UA%%%%APP_BUNDLE%%
Google Ad Manager%%CBIP%%%%UA%%%%APP_BUNDLE_ID%%
FreeWheel[IP][USERAGENT]—
AWS MediaTailor[playerconfig.ip][playerconfig.ua][playerconfig.bundle]

Response format

Praevis returns VAST 3.0 XML with a single <Linear> ad when a DSP wins the auction.

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0">
  <Ad id="auction-uuid">
    <InLine>
      <AdSystem>Praevis Exchange</AdSystem>
      <AdTitle>Ad</AdTitle>
      <Impression><![CDATA[https://rtb.praevis.com/track/impression?...]]></Impression>
      <Creatives>
        <Creative>
          <Linear>
            <Duration>00:00:30</Duration>
            <MediaFiles>
              <MediaFile type="video/mp4" width="1920" height="1080">
                <![CDATA[https://cdn.example.com/creative.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

When no DSP bids above the floor, an empty VAST is returned:

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0"/>

Your ad server will handle this as a passback to the next demand source.


AWS MediaTailor parameters

If you’re using AWS MediaTailor for server-side ad insertion (SSAI):

ParameterDescription
aw.userIdMediaTailor user ID
aw.correlatorCache-buster
aw.deviceMakeDevice manufacturer
aw.deviceModelDevice model
aw.deviceTypemobile, tablet, desktop, ctv
aw.limitAdTrackingiOS LAT flag (1 = limited tracking)

VMAP (ad pods)

For ad break / pod filling, use format=vmap:

https://rtb.praevis.com/vast?site_id={ID}&format=vmap&pod_duration=90&w=1920&h=1080

The response is a VMAP document with individual VAST URLs for each ad slot.