VAST examples / SIMID
An <InteractiveCreativeFile> with no apiFramework
VAST 4.10 errors2 warningsVAST-4.0-interactive-creative-no-api
The scenario
A creative team delivered an interactive video unit using VAST 4.x's <InteractiveCreativeFile>, expecting players to load it through the SIMID interactive API on the big screen.
The broken tag
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.1">
<Ad id="1">
<InLine>
<AdSystem>Test AdServer</AdSystem>
<AdTitle>Test Ad</AdTitle>
<AdServingId>TEST-SERVING-ID-001</AdServingId>
<Impression><![CDATA[https://example.com/impression]]></Impression>
<Creatives>
<Creative>
<UniversalAdId idRegistry="ad-id.org">TEST-1234</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
<![CDATA[https://example.com/video.mp4]]>
</MediaFile>
<!-- InteractiveCreativeFile with no apiFramework -->
<InteractiveCreativeFile type="text/html">
<![CDATA[https://example.com/interactive.html]]>
</InteractiveCreativeFile>
</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.0-interactive-creative-no-apiIAB VAST 4.0 §2.3.5.4line 12<InteractiveCreativeFile> should have an apiFramework attribute (e.g. "SIMID")
The same tag also surfaces these secondary findings — real tags rarely fail in isolation:
VAST-2.0-linear-tracking-quartilesIAB VAST 4.1 §3.14.2line 12<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 14<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts
Why it breaks
The <InteractiveCreativeFile> provides a resource and a type but no apiFramework attribute. apiFramework declares which interactive framework the file uses — for modern interactivity that is SIMID. Without it, the player has an interactive resource but no idea which runtime to load it into, so it cannot initialize the interactive layer.
What it costs
The interactive unit does not run. The player falls back to the base video (if one is present) or leaves the interactive slot inert, so the engagement the campaign was built around never happens — yet base-video delivery keeps reporting impressions, hiding the failure. Without a fallback MediaFile the slot can blank out entirely on supporting devices.
The fix
Declare apiFramework="SIMID" (with the correct type) on every InteractiveCreativeFile, and always pair it with a standard MediaFile fallback for players that do not support the framework.
<InteractiveCreativeFile type="text/html" apiFramework="SIMID">
<![CDATA[https://cdn.example.com/simid/unit.html]]>
</InteractiveCreativeFile>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
- A SIMID interactive resource served over HTTP — SIMID-1.0-simid-url-https
- A SIMID creative with no fallback <MediaFile> — VAST-2.0-linear-mediafiles
- A SIMID InteractiveCreativeFile with no type — SIMID-1.0-simid-type-required
- A SIMID variableDuration with an invalid value — SIMID-1.0-simid-variable-duration-value