VAST examples / Deprecated features
A VPAID creative trafficked to CTV
VAST 4.10 errors3 warningsVAST-4.1-vpaid-apiframework
The scenario
An agency reused an old interactive web creative — built on VPAID — for a connected-TV extension of a campaign, expecting the same interactivity to carry over to the living-room screen.
The broken tag
<?xml version="1.0" encoding="UTF-8"?>
<!-- WARNING: VAST-4.1-vpaid-apiframework — apiFramework="VPAID" deprecated in VAST 4.1
WARNING: VAST-2.0-flash-mediafile — Flash-based MediaFile type obsolete
INFO: VAST-4.0-mediafile-apiframework — apiFramework on MediaFile deprecated in 4.0+ -->
<VAST version="4.1">
<Ad id="ad-001">
<InLine>
<AdSystem>Test</AdSystem>
<AdTitle>Test Ad</AdTitle>
<AdServingId>test-serving-id-001</AdServingId>
<Impression><![CDATA[https://track.example.com/impression]]></Impression>
<Creatives>
<Creative>
<UniversalAdId idRegistry="ad-id.org">TEST-001</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<!-- VPAID is deprecated as of VAST 4.1 -->
<MediaFile delivery="progressive" type="application/javascript" width="1920" height="1080"
apiFramework="VPAID">
<![CDATA[https://cdn.example.com/vpaid-ad.js]]>
</MediaFile>
<!-- Flash MediaFile type is obsolete -->
<MediaFile delivery="progressive" type="application/x-shockwave-flash" width="640" height="480">
<![CDATA[https://cdn.example.com/ad.swf]]>
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>What the validator reports
Running this tag through vastlint produces the following. The primary failure for this example:
VAST-4.1-vpaid-apiframeworkIAB VAST 4.1 §2.3.5.1line 19apiFramework="VPAID" is deprecated as of VAST 4.1 — use SIMID or OMID instead
The same tag also surfaces these secondary findings — real tags rarely fail in isolation:
VAST-2.0-flash-mediafileIAB VAST 2.0 §2.3.5.2line 24Flash-based MediaFile type is no longer supported in modern browsers
VAST-2.0-linear-tracking-quartilesIAB VAST 4.1 §3.14.2line 15<Linear> has no standard quartile tracking events (start/firstQuartile/midpoint/thirdQuartile/complete) — ad will serve but measurement system receives no signal
VAST-4.1-mezzanine-recommendedIAB VAST 4.1 §3.9.2line 17<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts
Why it breaks
The creative declares apiFramework="VPAID" (and even includes a Flash-type MediaFile). VPAID was deprecated by IAB Tech Lab and is not supported on CTV; the industry replacement for interactivity is SIMID, and OMID covers measurement. CTV players have no VPAID runtime (and certainly no Flash), so the interactive layer cannot execute on the target devices at all.
What it costs
On CTV the VPAID unit does not run: depending on the player it either fails to render (blank slot, no-fill) or falls back to a base video with all interactivity stripped. The campaign's entire premise — interactive engagement on the big screen — collapses, budget is wasted on non-delivering impressions, and the Flash MediaFile will not play on any modern device either.
The fix
Drop VPAID and Flash. For interactivity use SIMID with an HTTPS InteractiveCreativeFile plus a standard MediaFile fallback; for measurement use OMID via <AdVerifications>. Never traffic VPAID to CTV inventory.
<!-- replace VPAID with SIMID + a real MediaFile fallback -->
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
<![CDATA[https://cdn.example.com/base-1080.mp4]]></MediaFile>
<InteractiveCreativeFile type="text/html" apiFramework="SIMID">
<![CDATA[https://cdn.example.com/simid/unit.html]]></InteractiveCreativeFile>VAST XML fragment only. This excerpt belongs inside a complete VAST document, so standalone validation will fail until it is wrapped in a full <VAST>response.
Check your own version of this tag
Paste the resolved XML to run the same spec check, test a live tag URL, or inspect the wrapper chain hop by hop.
Related examples
- Use of the deprecated conditionalAd attribute — VAST-4.0-conditionalad
- VPAID used where SIMID belongs in VAST 4.x — VAST-4.1-vpaid-in-interactive-context
- An InLine ad with no <Impression> element — VAST-2.0-inline-impression
- An InLine ad missing the <AdSystem> element — VAST-2.0-inline-adsystem