VAST-2.0-ctv-portfolio-creative-id-required
<Extension type="ctv_ad_portfolio"> needs <CreativeId> when the ad has multiple creatives
Short answer
VAST 2.0 hangs <Extensions> off <InLine>, not off <Creative>, so this extension has no inherent binding to the creative it describes. <CreativeId> is that binding, and it is required whenever the response carries more than one <Creative>. Omitting it is not a parse error: the media files, duration, format signal and creative attributes get applied to whichever creative the platform picks, and the tag validates everywhere else.
Why this matters in production
This rule is usually a delivery blocker. Many players, SDKs, and ad servers will discard the response or skip the affected creative once this condition is hit. The CTV Ad Portfolio standardises Pause, Screensaver, Overlay, Squeezeback and In-Scene ads, which ran for years on bespoke per-publisher integrations. These rules cover the VAST side of that contract: the NonLinear MediaFiles delivery model, the AdCOM signals round-tripped into Extensions so stitchers can validate the experience without the bid object, and the QR code block. The signaling guidance is final; the VAST 4.4 schema that accompanies it is still a working-group draft, so anything sourced only from the schema is reported as a warning or a note. Affected scope: VAST 2.0 and later (all versions).
Invalid
<Creatives>
<Creative id="creative-a">...</Creative>
<Creative id="creative-b">...</Creative>
</Creatives>
<Extensions>
<Extension type="ctv_ad_portfolio">
<plcmt>5</plcmt>
</Extension>
</Extensions>Valid
<Extensions>
<Extension type="ctv_ad_portfolio">
<CreativeId>creative-a</CreativeId>
<plcmt>5</plcmt>
</Extension>
</Extensions>VAST-2.0-ctv-portfolio-creative-id-required and other issues instantly.Open the VAST tag validator →