SIMID interactive VAST ads
SIMID (Secure Interactive Media Interface Definition) is the IAB Tech Lab standard for interactive video ad creatives. It replaces VPAID, providing a secure, sandboxed communication protocol between a video player and an interactive HTML ad unit. SIMID is declared in VAST using the <InteractiveCreativeFile> element with apiFramework="SIMID".
Unlike VPAID, SIMID runs in a sandboxed iframe with no direct DOM access to the player or page. All communication happens via window.postMessage using the SIMID protocol. This makes SIMID safer for publishers and more portable across environments.
Quick reference
| VAST element | <InteractiveCreativeFile> inside <Linear> |
| apiFramework | SIMID |
| Communication | Sandboxed iframe via window.postMessage |
| VAST version | 4.1+ (InteractiveCreativeFile added in VAST 4.1) |
| Replaces | VPAID (deprecated) |
VAST structure for SIMID
A SIMID creative is a linear ad that includes both a standard video <MediaFile> (for the video component) and an <InteractiveCreativeFile> (for the interactive HTML overlay). The video plays as normal; the SIMID iframe loads alongside it and communicates with the player via the SIMID protocol.
<VAST version="4.2">
<Ad id="1">
<InLine>
<AdSystem>My Ad Server</AdSystem>
<AdTitle>Interactive SIMID Ad</AdTitle>
<Impression id="imp1"><![CDATA[https://track.example.com/impression]]></Impression>
<UniversalAdId idRegistry="Ad-ID">SIMD1234</UniversalAdId>
<Creatives>
<Creative id="creative1" sequence="1">
<Linear>
<Duration>00:00:30</Duration>
<TrackingEvents>
<Tracking event="start"><![CDATA[https://track.example.com/start]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[https://track.example.com/q1]]></Tracking>
<Tracking event="midpoint"><![CDATA[https://track.example.com/mid]]></Tracking>
<Tracking event="thirdQuartile"><![CDATA[https://track.example.com/q3]]></Tracking>
<Tracking event="complete"><![CDATA[https://track.example.com/complete]]></Tracking>
</TrackingEvents>
<VideoClicks>
<ClickThrough><![CDATA[https://example.com/landing]]></ClickThrough>
</VideoClicks>
<MediaFiles>
<!-- Standard video MediaFile — required alongside SIMID -->
<MediaFile delivery="progressive" type="video/mp4"
width="1920" height="1080" bitrate="2500">
<![CDATA[https://cdn.example.com/ad-1080p.mp4]]>
</MediaFile>
<MediaFile delivery="progressive" type="video/mp4"
width="1280" height="720" bitrate="1500">
<![CDATA[https://cdn.example.com/ad-720p.mp4]]>
</MediaFile>
<!-- SIMID interactive overlay — HTML file loaded in sandboxed iframe -->
<InteractiveCreativeFile
apiFramework="SIMID"
type="text/html">
<![CDATA[https://cdn.example.com/simid-interactive.html]]>
</InteractiveCreativeFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>InteractiveCreativeFile attributes
The <InteractiveCreativeFile> element has the following key attributes:
| Attribute | Required | Value |
|---|---|---|
apiFramework | Yes | SIMID |
type | Yes | MIME type of the file — typically text/html |
variableDuration | No | true if the interactive component may extend the ad duration. Default: false. |
→ vastlint rule: VAST-4.1-interactive-creative-file-api-framework
SIMID communication protocol
The SIMID creative HTML file runs inside a sandboxed iframe and communicates with the player using window.postMessage. The player and creative exchange messages following the SIMID protocol. Key message types:
| Message direction | Message type | Purpose |
|---|---|---|
| Player → Creative | SIMID:Player:init | Passes video metadata and environment data to the creative |
| Creative → Player | SIMID:Creative:ready | Creative signals it is loaded and ready to render |
| Player → Creative | SIMID:Player:startCreative | Player instructs the creative to start displaying |
| Creative → Player | SIMID:Creative:requestNavigate | Creative requests the player open a URL (click-through) |
| Creative → Player | SIMID:Creative:requestStop | Creative requests the ad stop (e.g. user closed it) |
| Player → Creative | SIMID:Player:adStopped | Player notifies the creative it has been stopped |
The full SIMID protocol specification is available from the IAB Tech Lab. Implementing SIMID requires writing the JavaScript inside your interactive HTML file to handle these messages.
VAST version requirement
<InteractiveCreativeFile> was introduced in VAST 4.1. Tags using SIMID must declare version="4.1" or higher. Declaring a lower version will cause spec-compliant parsers to ignore the element.
Fallback video is required
Always include a standard <MediaFile> MP4 alongside the <InteractiveCreativeFile>. Players that do not support SIMID will use the video MediaFile as a fallback. Without a video MediaFile, the ad will fail to deliver on any player that does not support SIMID — which includes all CTV platforms that have not implemented SIMID.
Platform SIMID support
| Platform | SIMID support |
|---|---|
| Google IMA SDK (web) | Supported |
| Google IMA SDK (Android / iOS) | Supported (limited) |
| Google IMA SDK (CTV) | Partial — check platform-specific IMA docs |
| JW Player | Supported via SIMID plugin |
| Roku RAF | Not supported |
| Amazon Fire TV | Not supported |
Common mistakes checklist
- VAST version below 4.1 —
<InteractiveCreativeFile>does not exist in VAST 3.0 or earlier. Declare version 4.1 or higher. - No video MediaFile fallback — without a standard video MediaFile, the ad will not deliver on platforms that do not support SIMID.
- Using apiFramework="VPAID" instead of "SIMID" — VPAID and SIMID are different protocols. A SIMID creative with
apiFramework="VPAID"will not initialize correctly. - Creative not implementing SIMID:Creative:ready — if the creative HTML file does not send
SIMID:Creative:readywithin the player's timeout, the ad will fail and fall back to the video-only experience. - Expecting SIMID on CTV — most CTV platforms do not support SIMID. Always provide a non-interactive video fallback.
Migrating from VPAID to SIMID? See the VPAID → SIMID migration guide.