VAST-2.0-root-has-ad-or-error
VAST-2.0-root-has-ad-or-error
<VAST> must contain at least one <Ad> or <Error>
ErrorRequired fieldsIAB VAST 2.0 §2VAST 2.0 and later (all versions)
Short answer
A valid VAST response must contain at least one <Ad> element or a root-level <Error> element. An empty <VAST> tag is not a legal response — players will treat it as a no-fill.
Why this matters in production
This rule is usually a delivery blocker. Many players, SDKs, and ad servers will discard the response or skip the affected creative once this condition is hit. Required-field failures usually stop validation early because the platform cannot determine the basic shape of the ad, the creative metadata, or the mandatory tracking payload. Affected scope: VAST 2.0 and later (all versions).
How to fix
Add at least one <Ad> child to <VAST>, or add a root-level <Error> element to signal no-fill.
Invalid
<VAST version="4.0">
</VAST>Valid
<VAST version="4.0">
<Error><![CDATA[https://track.example.com/error]]></Error>
</VAST>Check your VAST tag for
VAST-2.0-root-has-ad-or-error and other issues instantly.Validate a tag →Other Required fields rules
VAST-2.0-root-elementRoot element must be <VAST>VAST-2.0-root-version<VAST> must have a version attributeVAST-2.0-root-version-valueVAST version attribute must be a recognised version stringVAST-4.0-wrapper-root-error<VAST> root contains both <Ad> and <Error> elements (invalid per VAST 4.0)VAST-2.0-ad-has-inline-or-wrapperEach <Ad> must contain exactly one <InLine> or <Wrapper>VAST-2.0-inline-adsystem<InLine> must contain <AdSystem>VAST-2.0-inline-adtitle<InLine> must contain <AdTitle>VAST-2.0-inline-impression<InLine> must contain at least one <Impression>