VAST examples / Pricing & metadata
A <Category> with no authority attribute
VAST 4.01 error2 warningsVAST-4.0-category-authority
The scenario
A publisher's brand-safety system filters ads by content category to keep, say, alcohol creatives off family programming. It reads the InLine <Category> to know what the ad is, then applies the channel's allow/block rules.
The broken tag
<?xml version="1.0" encoding="UTF-8"?>
<!-- Category missing authority — VAST-4.0-category-authority -->
<VAST version="4.0">
<Ad id="1">
<InLine>
<AdSystem>Test</AdSystem>
<AdTitle>Test</AdTitle>
<AdServingId>SRV-001</AdServingId>
<Impression><![CDATA[https://example.com/imp]]></Impression>
<Category>IAB1</Category>
<Creatives>
<Creative>
<UniversalAdId idRegistry="ad-id.org">UAID-001</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="640" height="360">
<![CDATA[https://example.com/video.mp4]]>
</MediaFile>
</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:
VAST-4.0-category-authorityIAB VAST 4.0 §2.3.3line 10<Category> is missing required authority attribute
The same tag also surfaces these secondary findings — real tags rarely fail in isolation:
VAST-2.0-version-mismatchIAB VAST 2.0 §2.1VAST version attribute does not match structural signals in the document
VAST-2.0-linear-tracking-quartilesIAB VAST 4.1 §3.14.2line 14<Linear> has no standard quartile tracking events (start/firstQuartile/midpoint/thirdQuartile/complete) — ad will serve but measurement system receives no signal
Why it breaks
The <Category> element carries a code value but no authority attribute. The authority names the taxonomy the code belongs to (for example an IAB content taxonomy URL), and it is required because a bare code is meaningless without knowing which classification system issued it. The brand-safety engine cannot map an unscoped code to a real category.
What it costs
Unable to interpret the category, the safety system either fails open (letting a potentially non-compliant ad run next to sensitive content, a brand-safety incident) or fails closed (blocking the ad and causing no-fill). Both outcomes are bad: one risks reputation and regulatory exposure, the other wastes delivery, and neither is visible until something slips through.
The fix
Add the authority attribute pointing at the taxonomy that defines the code, and use a code that actually exists in that taxonomy. Keep the pairing consistent with what your supply partners expect.
<Category authority="iabtechlab.com">
<![CDATA[IAB7]]>
</Category>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 <Pricing> element missing model and currency — VAST-3.0-pricing-model
- A <BlockedAdCategories> with no authority attribute — VAST-4.1-blockedadcategories-no-authority
- An InLine ad with no <Impression> element — VAST-2.0-inline-impression
- An InLine ad missing the <AdSystem> element — VAST-2.0-inline-adsystem