VAST

Video Ad Serving Template

We support VAST 2.0 - Vast 4.1 for Web, Apps & CTV.

Example tags and required macros are listed below, and our account managers ([email protected]) will help you with the final ad code.

Video:-

For Apps -

https://aex.ingage.tech/tag/video?screenSize=1920x1080&adUnitId=[AD_UNIT_ID]&publisherId=[PUB_ID]&mimes=video/mp4&mimes=video/ogg&mimes=video/webm&mimes=application/javascript&w=[WIDTH]&h=[HEIGHT]&pageUrl=[Page_URL]&bidFloor=0.5&bundleId=[BUNDLE_ID]&uid=[IFA_TYPE_MACRO]&plcmt=[PLCMT]&placement=[PLACEMENT]&minduration=1&maxduration=120&minbitrate=1&maxbitrate=10000

For Web -

https://ex.ingage.tech/tag/video?screenSize=1920x1080&adUnitId=[AD_UNIT_ID]&publisherId=[PUB_ID]&mimes=video/mp4&mimes=video/ogg&mimes=video/webm&mimes=application/javascript&w=[WIDTH]&h=[HEIGHT]&bidFloor=0.5&pageUrl=[PAGE_URL]&plcmt=[PLCMT]&uid=[UUID]&placement=[PLACEMENT]&minduration=1&maxduration=120&minbitrate=1&maxbitrate=10000

Audio:-

For Apps -

https://aex.ingage.tech/tag/audio?screenSize=1920x1080&adUnitId=[AD_UNIT_ID]&publisherId=[PUB_ID]&bundleId=[BUNDLE_ID]&ifa=[IFA]&mimes=audio/mp4&mimes=audio/mpeg&mimes=audio/aac&pageUrl=[Page_URL]&bidFloor=0.5&minduration=5&maxduration=60&minbitrate=32&maxbitrate=320&startdelay=0&delivery=1&delivery=2&feed=[FEED]&stitched=0&nvol=1

For Web -

https://ex.ingage.tech/tag/audio?screenSize=1920x1080&adUnitId=[AD_UNIT_ID]&publisherId=[PUB_ID]&pageUrl=[PAGE_URL]&mimes=audio/mp4&mimes=audio/mpeg&mimes=audio/aac&bidFloor=0.5&minduration=5&maxduration=60&minbitrate=32&maxbitrate=320&startdelay=0&delivery=1&delivery=2&feed=[FEED]&stitched=0&nvol=1

Except adUnitId and PublisherId, all other values can be inserted dynamically. Our Publisher success team will help you with adUnitId & PublisherId

Additionally, please ensure that the &pageUrl parameter contains the full URL, including https://. The final root URL should be formatted as https://www.domain.com/. If the value sent to our server is already in this format, you may disregard this instruction.

Required & Recommended Macros

KeyMedia TypeSupported InventoryMacro TypeRequiredRecommendedDescription
adUnitIdVideo, AudioWeb, AppstringYesYesInsticator ad unit identifier for the placement, passed through to bidders on the impression's ext.insticator object.
publisherIdVideo, AudioWeb, AppstringYesYesExchange-specific publisher ID. Every ID maps to a single entity that is paid for inventory transacted via that ID.
idVideo, AudioWeb, AppstringYesYesExchange-specific site or app ID.
bundleIdVideo, AudioAppstringYesYesThe store ID of the app in an app store. For the Google Play Store this is the bundle or package name (e.g. com.foo.mygame); for the Apple App Store it is a numeric ID.
pageUrlVideo, AudioWebstringYesYesURL of the page where the impression will be shown.
domainVideo, AudioWebstringYesYesDomain of the site (e.g., "mysite.foo.com").
isAppVideo, AudioWeb, AppintegerMarks the request as app inventory rather than web inventory, so the exchange describes it with an App object instead of a Site object. Accepted values are 1 and true.
mimesVideo, AudioWeb, Appstring[]YesYesContent MIME types supported (e.g., "video/mp4", "audio/mp4"). Repeat the parameter once per MIME type. Audio tags fall back to a default set when it is omitted.
wVideoWeb, AppintegerYesYesWidth of the video player in device-independent pixels (DIPS). The OpenRTB Audio object defines no width, so audio tags omit it.
hVideoWeb, AppintegerYesYesHeight of the video player in device-independent pixels (DIPS). The OpenRTB Audio object defines no height, so audio tags omit it.
plcmtVideoWeb, AppintegerYes, unless placement or instl=1YesVideo placement type for the impression: 1 = instream, 2 = accompanying content, 3 = interstitial, 4 = no content/standalone, 5 = pause, 6 = screensaver, 7 = overlay, 8 = squeezeback, 9 = in-scene.
placementVideoWeb, AppintegerYes, unless plcmt or instl=1YesVideo placement type for the impression, deprecated as of OpenRTB 2.6 in favour of plcmt.
protocolsVideo, AudioWeb, Appinteger[]YesYesSupported VAST protocol versions, where 1 = VAST 1.0, 2 = VAST 2.0, 3 = VAST 3.0, 4 = VAST 1.0 wrapper, 5 = VAST 2.0 wrapper, 6 = VAST 3.0 wrapper, 7 = VAST 4.0, 8 = VAST 4.0 wrapper, 11 = VAST 4.1, 12 = VAST 4.1 wrapper, 13 = VAST 4.2, 14 = VAST 4.2 wrapper, 15 = VAST 4.3, 16 = VAST 4.3 wrapper. Repeat the parameter once for each value.
mindurationVideo, AudioWeb, AppintegerYesYesMinimum video or audio ad duration in seconds. This field is an alternative to rqdDurs; only one of minduration and rqdDurs may be sent.
maxdurationVideo, AudioWeb, AppintegerYesYesMaximum video or audio ad duration in seconds. This field is an alternative to rqdDurs; only one of maxduration and rqdDurs may be sent.
rqdDursVideo, AudioWeb, Appinteger[]Precise acceptable creative durations in seconds, comma separated. An alternative to minduration and maxduration.
startdelayVideo, AudioWeb, AppintegerYesStart delay for the ad placement, where 0 = pre-roll, -1 = generic mid-roll, -2 = generic post-roll; any value greater than 0 is a mid-roll and indicates the start delay in seconds.
linearityVideoWeb, AppintegerIndicates whether the impression must be linear or non-linear, where 1 = linear, 2 = non-linear (overlay). Describes the expected VAST response, not the type of video player inventory.
deliveryVideo, AudioWeb, Appinteger[]Supported delivery methods, where 1 = streaming, 2 = progressive, 3 = download. If none are specified, assume all are supported. Repeat the parameter for each value.
apiVideo, AudioWeb, Appinteger[]YesList of supported API frameworks for this impression, per List: API Frameworks in AdCOM 1.0. An API not explicitly listed is assumed not to be supported. Repeat the parameter for each value.
minbitrateVideo, AudioWeb, AppintegerYesMinimum bit rate in Kbps (kilobits per second).
maxbitrateVideo, AudioWeb, AppintegerYesMaximum bit rate in Kbps (kilobits per second).
maxextendedVideo, AudioWeb, AppintegerMaximum extended ad duration in seconds if extension is allowed. If blank or 0, extension is not allowed; if -1, extension is allowed with no time limit imposed; if greater than 0, the value is the number of seconds of extended play supported beyond maxduration.
sequenceVideo, AudioWeb, AppintegerSequence number of the impression within a content stream. Deprecated in OpenRTB 2.6 in favour of slotInPod.
skipVideoWeb, AppintegerIndicates whether the player allows the video to be skipped, where 0 = the player does not allow skipping, 1 = the player allows the ad to be skipped.
skipminVideoWeb, AppintegerCreatives of total duration greater than this number of seconds may be skippable; only applicable if the ad is skippable.
skipafterVideoWeb, AppintegerNumber of seconds of playback before the skip control becomes available; only applicable if the ad is skippable.
playbackmethodVideoWeb, Appinteger[]YesPlayback methods that may be in use: 1 = initiates without user interaction, sound on; 2 = initiates without user interaction, sound off by default; 3 = initiates on click, sound on; 4 = initiates on mouse-over, sound on; 5 = initiates on entering viewport, sound on; 6 = initiates on entering viewport, sound off by default; 7 = continuous playback; 8 = initiated by user pausing content, sound on; 9 = initiated by user pausing content, sound off; 10 = initiated by idling (e.g. screensaver), sound on; 11 = initiated by idling, sound off. Repeat the parameter once per value.
playbackendVideoWeb, AppintegerThe event that causes playback to end: 1 = on video completion or when terminated by user, 2 = on leaving viewport or when terminated by user, 3 = on leaving viewport, continuing as a floating/slider unit until video completion or termination by user.
posVideoWeb, AppintegerYesAd position on screen, where 0 = unknown, 1 = above the fold, 3 = below the fold, 4 = header, 5 = footer, 6 = sidebar, 7 = full screen.
boxingallowedVideoWeb, AppintegerIndicates if letter-boxing of 4:3 content into a 16:9 window is allowed, where 0 = no, 1 = yes.
podIdVideoWeb, AppstringUnique identifier indicating that an impression opportunity belongs to an ad pod. Impression opportunities sharing the same podId belong to the same pod.
podDurVideoWeb, AppintegerYesTotal amount of time in seconds that advertisers may fill in a dynamic ad pod. Refers to the length of the entire ad break, as opposed to the individual slots that make up the pod.
podSeqVideoWeb, AppintegerThe sequence (position) of the ad pod within a content stream, where -1 = last pod, 0 = any pod, 1 = first pod.
maxSeqVideoWeb, AppintegerYesIndicates 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.
slotInPodVideoWeb, AppintegerSlot position in the ad pod that the seller can guarantee delivery against, where -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.
minCpmPerSecVideoWeb, AppfloatMinimum 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.
feedAudioWeb, AppintegerYesYesType of audio feed, where 1 = music streaming service, 2 = FM/AM broadcast, 3 = podcast, 4 = catch-up radio, 5 = web radio, 6 = video game, 7 = text to speech.
stitchedAudioWeb, AppintegerYesYesIndicates whether the ad is stitched with the audio content or delivered independently, where 0 = no, 1 = the ad is stitched with the audio content.
nvolAudioWeb, AppintegerYesYesVolume normalization mode: 0 = none, 1 = ad volume average normalized to content, 2 = ad volume peak normalized to content, 3 = ad loudness normalized to content, 4 = custom volume normalization.
companiontypeAudioWeb, Appinteger[]YesSupported companion ad types, where 1 = static resource, 2 = HTML resource, 3 = iframe resource. Repeat the parameter for each value.
bidFloorVideo, AudioWeb, AppfloatYesYesMinimum bid for this impression expressed in CPM.
bidfloorcurVideo, AudioWeb, AppstringCurrency for the bid floor, using ISO-4217 alpha codes. Bids are transacted in USD.
curVideo, AudioWeb, Appstring[]Allowed currencies for bids on this request, using ISO-4217 alpha codes. Bids are transacted in USD.
tmaxVideo, AudioWeb, AppintegerYesMaximum time in milliseconds the exchange allows for bids to be received, including Internet latency, to avoid timeout.
instlVideo, AudioWeb, AppintegerWhether the ad is interstitial, where 0 = not interstitial, 1 = interstitial or full screen.
secureVideo, AudioWeb, AppintegerFlag indicating whether the impression requires secure HTTPS creative assets and markup, where 0 = non-secure, 1 = secure.
ssaiVideo, AudioWeb, AppintegerIndicates whether server-side ad insertion is in use and its impact on asset and tracker retrieval, where 0 = status unknown, 1 = all client-side, 2 = assets stitched server-side but tracking fired client-side, 3 = all server-side.
gpIdVideo, AudioWeb, AppstringGlobal Placement ID for the ad slot, passed through to buyers as the impression's placement identifier.

Preferences & Protection rules:

We support blocklist at advertiser domain and ad category level.
We support minimum bid floor on the adUnitId level.

Please contact the Account Management team at [email protected] to apply the blocklist or minimum bid floor. We recommend keeping it empty by default for the maximum yield.

GDPR compliance:

_If the users are from GDPR or any other privacy-regulated area, it is required to have a CMP with TCF v2.2 in place and enable the below vendor ids (Consent & Legitimate Interest) for optimized performance. We can provide a CMP support if required, but if publisher is using own CMP we are requesting to ensure the following IAB vendors are granted Vendor Consent rights:

Vendor IDVendor Name
5833Across
617Onfocus (Adagio)
50Adform A/S
793Amazon Advertising
32Xandr, Inc.
143Connatix Native Exchange Inc.
24Epsilon
91Criteo SA
84Eskimi
755Google Advertising Products
10Index Exchange Inc.
333InMobi Pte Ltd
910Insticator
131ID5 Technology SAS
109LoopMe Limited
241OneTag Limited
69OpenX
76Pubmatic, Inc
1043TypeA Holdings Ltd
52Magnite, Inc
157Seedtag Advertising S.L
80Sharethrough, Inc
104Sonobi, Inc
13Sovrn, Inc
23Nexxen Inc.
36Nexxen Group LLC
45Equativ
1126Microsoft Advertising
128BIDSWITCH GmbH
528Kayzen
130NextRoll, Inc.
82Smaato, Inc.
512Verve Group Europe GmbH

Supported Countries (as of Jan 2026):

Country NameAlpha-2 codeAlpha-3 code
AlbaniaALALB
ArgentinaARARG
AustraliaAUAUS
AustriaATAUT
AzerbaijanAZAZE
BahrainBHBHR
BelgiumBEBEL
Bosnia and HerzegovinaBABIH
BotswanaBWBWA
BrazilBRBRA
BulgariaBGBGR
CanadaCACAN
ChileCLCHL
ColombiaCOCOL
Costa RicaCRCRI
CroatiaHRHRV
CyprusCYCYP
CzechiaCZCZE
DenmarkDKDNK
EcuadorECECU
El SalvadorSVSLV
EstoniaEEEST
FinlandFIFIN
FranceFRFRA
GeorgiaGEGEO
GermanyDEDEU
GreeceGRGRC
GuatemalaGTGTM
HondurasHNHND
Hong KongHKHKG
HungaryHUHUN
IndiaININD
IndonesiaIDIDN
IrelandIEIRL
IsraelILISR
ItalyITITA
JapanJPJPN
KuwaitKWKWT
LatviaLVLVA
LithuaniaLTLTU
LuxembourgLULUX
MalaysiaMYMYS
MaldivesMVMDV
MaltaMTMLT
MexicoMXMEX
MoldovaMDMDA
MongoliaMNMNG
MoroccoMAMAR
NetherlandsNLNLD
New ZealandNZNZL
NorwayNONOR
OmanOMOMN
PanamaPAPAN
PeruPEPER
PhilippinesPHPHL
PolandPLPOL
PortugalPTPRT
Puerto RicoPRPRI
QatarQAQAT
RomaniaROROU
Saudi ArabiaSASAU
SerbiaRSSRB
SingaporeSGSGP
SlovakiaSKSVK
SloveniaSISVN
South AfricaZAZAF
South KoreaKRKOR
SpainESESP
SwedenSESWE
SwitzerlandCHCHE
TaiwanTWTWN
ThailandTHTHA
TurkeyTRTUR
United Arab EmiratesAEARE
United KingdomGBGBR
United StatesUSUSA
UruguayUYURY
UzbekistanUZUZB
Viet NamVNVNM

Quality guidance:

We recommend following the quality guidance to improve monetization outcomes.

Additional resources:

Reporting: https://documentation.insticator.com/docs/analytics-date-range
How to establish the appropriate format specifications for CTV bundles. - https://iabtechlab.com/wp-content/uploads/2020/08/IAB-Tech-Lab-OTT-store-assigned-App-Identification-Guidelines-2020.pdf


Did this page help you?