VAST macros / Playback and timing
[ASSETURI] VAST macro
Short answer: The URI of the media asset currently being played. Introduced in VAST 3.0.
What it means
Resolves to the URL of the selected MediaFile that the player is rendering. Must be percent-encoded when nested inside another URL.
Example value
After the player substitutes the macro, [ASSETURI] becomes something like:
https%3A%2F%2Fcdn.example.com%2Fad.mp4Where it is valid
Tracking and error URLs.
Macros are case-sensitive and substituted only inside URL fields. A macro written in the wrong case, or placed where it has no defined value, is sent to the server as literal text instead of a value.
Using it in a tag
<Impression><![CDATA[https://t.example.com/i?val=[ASSETURI]&cb=[CACHEBUSTING]]]></Impression>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.
Related vastlint rules
- VAST-2.0-macro-unknown: URL contains a [MACRO] that is not a recognised IAB VAST macro
- VAST-2.0-macro-lowercase: Recognised macro is not uppercase — players match macro names case-sensitively
- VAST-2.0-macro-uri-unencoded: Macro-bearing URL contains characters that must be percent-encoded per RFC 3986
Related macros
- [MEDIAMIME]: The MIME types the player can render.
- [CONTENTURI]: The URI of the content the ad plays alongside.
- [ADPLAYHEAD]: The current playhead position within the ad creative.
Validate your macros
vastlint flags unknown, mis-cased, deprecated, out-of-context, and unencoded macros in any tracking, click, error, impression, or media URL:
# CLI: exits non-zero on errors, ideal for pipelines
vastlint check creative.xmlUse the right tool for this failure
If you already have the resolved XML, run a pure spec check. If you only have a live tag URL, test that endpoint first. If the failure happens in the wrapper chain, inspect each hop.