VAST error codes: what they mean and how to fix them
Short answer
VAST error codes are runtime failure buckets emitted by players and ad servers. They are not the same as vastlint rule IDs. A code like 301 or 401 tells you where the failure happened; the vastlint rule pages tell you what in the XML actually broke.
Why this happens
Most players expose only a coarse numeric code because they do not ship a full validator or a structured diff of the XML they received. That means one code can hide several concrete failures: a missing wrapper URL, a malformed media URL, a deprecated VPAID creative on CTV, or a chain that never resolves inline.
The practical workflow is: use the runtime code to narrow the class of failure, then use the validator, tester, or inspector to find the exact broken element.
Common codes and likely root causes
| Code | Usually means | Where to look next |
|---|---|---|
100 | XML parsing failure | Malformed XML, broken CDATA, invalid nesting |
301 | Wrapper timeout / wrapper resolution failure | Missing <VASTAdTagURI>, timeout, or bad redirect target |
302 | Wrapper limit reached | Too many redirects in the chain |
401 | Media file not found or unreachable | Broken media URL, HTTP on HTTPS page, CDN issue |
403 | Unsupported media or player mismatch | Wrong format, deprecated VPAID, browser-only creative on CTV |
405 | Problem with mezzanine or high-quality source | CTV and SSAI trafficking requirements |
901 | General VPAID/SIMID interactive failure | Wrong type, empty URL, unsupported runtime |
902 | Interactive creative loaded but failed at runtime | SIMID or verification-layer mismatch |
Copyable fix example
A large share of player-side wrapper errors collapse down to one XML problem: the wrapper does not actually point to the next VAST response.
<!-- Copy this wrapper fix when the chain must continue -->
<VAST version="3.0">
<Ad>
<Wrapper>
<AdSystem>Example Ad Server</AdSystem>
<VASTAdTagURI><![CDATA[https://ads.example.com/final-inline.xml]]></VASTAdTagURI>
<Impression><![CDATA[https://tracker.example.com/wrapper-imp]]></Impression>
<Creatives />
</Wrapper>
</Ad>
</VAST>Exact rule pages
- VAST-2.0-wrapper-vastadtaguri
- VAST-2.0-wrapper-depth
- VAST-2.0-mediafile-url
- VAST-2.0-duration-format
- VAST-4.1-vpaid-in-interactive-context
Use 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.