VAST examples / SIMID
A SIMID variableDuration with an invalid value
VAST 4.10 errors2 warningsSIMID-1.0-simid-variable-duration-value
The scenario
A brand ran a SIMID unit that could extend its runtime if the viewer engaged with it — a variable-duration interactive ad. The variableDuration flag tells the player and the pod scheduler that the ad may run longer than its base Duration.
The broken tag
<?xml version="1.0" encoding="UTF-8"?>
<!-- Fixture: SIMID InteractiveCreativeFile with invalid variableDuration value
Expected rule: SIMID-1.0-simid-variable-duration-value (Warning)
Per SIMID §5, the only valid value is "true". -->
<VAST version="4.1">
<Ad id="1">
<InLine>
<AdSystem>Test AdServer</AdSystem>
<AdServingId>simid-vardur-test-01</AdServingId>
<AdTitle>SIMID Variable Duration Test</AdTitle>
<Impression><![CDATA[https://track.example.com/imp]]></Impression>
<Creatives>
<Creative id="1">
<UniversalAdId idRegistry="ad-id.org">simid-vardur-01</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
<![CDATA[https://cdn.example.com/ad.mp4]]>
</MediaFile>
<!-- variableDuration="yes" is not a valid value (only "true" is allowed) -->
<InteractiveCreativeFile apiFramework="SIMID" type="text/html" variableDuration="yes">
<![CDATA[https://creative.example.com/simid.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:
SIMID-1.0-simid-variable-duration-valueIAB SIMID 1.0 §5line 22<InteractiveCreativeFile apiFramework="SIMID"> variableDuration must be "true" when present per SIMID §5
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 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 InteractiveCreativeFile sets variableDuration to a value that is not a valid boolean (true/false). SIMID uses variableDuration as a true/false signal so the player and SSAI scheduler know whether to allow the ad to extend. A non-boolean value leaves that decision undefined; strict consumers reject it and lenient ones guess.
What it costs
Pod scheduling breaks at the edges: if the scheduler cannot tell whether the ad may extend, it either refuses to let an engaging viewer keep interacting (cutting the ad short and losing the engagement the unit was built for) or over-reserves time and leaves dead air in the break. Either way the variable-duration feature — the reason for the SIMID build — does not work as intended.
The fix
Set variableDuration to a valid boolean (true when the ad may extend on engagement, false otherwise), and make sure the base <Duration> reflects the minimum runtime.
<!-- boolean: true | false -->
<InteractiveCreativeFile type="text/html" apiFramework="SIMID" variableDuration="true">
<![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
- An <InteractiveCreativeFile> with no apiFramework — VAST-4.0-interactive-creative-no-api