VAST Error 408: Conditional ad rejected
The ad declared conditionalAd="true" — meaning it might not pay — and the placement doesn't accept conditional ads.
Conditional ads (mostly programmatic VPAID-era constructs) reserve the right to not show anything after inspecting the impression — effectively bidding without committing. VAST 4.1 lets ads declare this via the conditionalAd attribute, and lets publishers reject them wholesale with 408.
A 408 means the enforcement worked: demand that might have rendered nothing was refused up front.
Why error 408 happens
VPAID-style decisioning demand on inventory that forbids it
The buyer's unit wants to run code and decide later whether to fill; the publisher requires committed ads only.
Honest labeling meeting strict supply
Demand correctly declaring conditionality gets filtered by placements that opted out — both sides working as intended.
How to fix VAST error 408
- 1
Buy-side: commit before responding
Move decisioning server-side so the ad returned is guaranteed to render, and drop the conditionalAd flag.
- 2
Sell-side: keep the restriction
Accepting conditional ads reintroduces render-rate uncertainty. If fill matters more, accept them knowingly on specific placements.
Seeing error 408 on a live tag?
Paste the tag URL or XML — the validator resolves the full wrapper chain, validates the schema, downloads every media file, and shows exactly which stage fails.
Validate your VAST tagVAST error 408 — frequently asked questions
Why do conditional ads exist at all?+
Legacy VPAID workflows let buyers run measurement code inside the ad slot and abandon impressions that didn't meet criteria. Conditional declaration made that behavior visible so publishers could refuse it.