On 13 October 2026, Pixalate shipped Ad Fraud API 3.0 with named invalid-traffic reason codes, including SSAI Misrepresentation for requests that claim server-side insertion but fail metadata checks. That is progress on the bid object. It is not proof that the VAST the stitcher pulls next carries playable media. Court TV and other publishers are rolling out Yospace-style SSAI while buyers still QA tags with XSD and a green dashboard. The gap between those two checks is where CTV revenue quietly disappears.
Creative readiness means the tag matches the environment that was bought: SSAI transcode paths, HTTPS-only players, pod clocks, and identity fields on the deal. A document can validate and still never serve. These nine mistakes show up in production more often than hard XML syntax errors.
Treating SSAI Misrepresentation clearance as VAST clearance. A pre-bid block or allow on reason code SSAI Misrepresentation runs on request metadata, not on the stitched response. The same operator can pass the filter and still forward wrappers whose inline never collapses to a servable
MediaFile. We wrote up that split in SSAI misrepresentation reason codes versus VAST proof.Shipping only a progressive
MediaFilewhen the stitcher expects a mezzanine. VAST 4.1+ recommends a mezzanine file for downstream transcoding. SSAI operators often ingest mezzanine and emit renditions. A tag with a single MP4 and no mezzanine can validate while the transcode queue has nothing to work with. See mezzanine rules and attributes.Mezzanine present but missing delivery, type, width, or height. Stitchers skip files that look like URLs without the attributes their packager reads. Demo tags copied from IAB samples often include the shape; production swaps the URL and drops dimensions during CMS export.
HTTP media on HTTPS-only CTV surfaces. Schema checks rarely enforce TLS on every
MediaFileand tracking URL. Living-room players and many SSAI edges refuse mixed content. The tag fetches in a desktop validator and dies on device.VPAID or legacy interactive flags on a live CTV stitch. Interactive creatives belong in a controlled player context. Server-side insertion paths on CTV commonly block VPAID outright. An
InteractiveCreativeFilewithapiFramework="VPAID"can pass XSD and fail at stitch time. VPAID on CTV blocked documents the environment rule. If you replace VPAID with SIMID, handshake QA belongs in the independent IAB-style VAST tester fork (not an IAB Tech Lab product).Durationlonger than the ad break slot. VMAP and pod logic use declared duration to schedule slots. A 60-secondDurationinside a 30-second break does not always fail validation; it fails scheduling and yields an empty pod or a skipped ad.Durationthat disagrees with the encoded asset. Players that trust the XML clock can cut off early or hold black frames. Billing and quartile trackers desync from what the viewer saw. Pod guides cover how sequence and duration interact in VAST ad pods.Missing or empty
UniversalAdIdon a deal that requires ACIF identity. Registration frameworks and buyer macros assume a registry and value pair. A blank id or wrong registry validates structurally and fails clearance, so the impression never bills.QAing the client-side wrapper while SSAI ingests a different hop. Trafficking pastes a VAST URL into a DSP; the stitcher resolves a wrapper chain on the server. Impression nodes on outer wrappers, missing
InLinehandoff, or depth limits bite on the path the stitcher walks, not the path someone opened in a browser. Rules such as wrapper impression placement matter on the chain SSAI actually follows.
How you catch it
Start with the live tag URL in the VAST tag tester: fetch, preview the creative, and confirm tracking and click URLs resolve. When the tag is a wrapper, open the VAST inspector and walk hops until you hit the InLine the stitcher must collapse to.
After that, run the same XML through vastlint (cargo install vastlint or npm install vastlint) in CI or on the saved response. An LLM or agent can emit VAST that looks plausible and still miss mezzanine, HTTPS, duration, or identity rules. vastlint checks the creative payload the buy claimed. It is independent of IAB Tech Lab and of AgenticAdvertising.org; it is not an official harness and the spec does not require it.
Where to go next
- Mezzanine file requirements for SSAI transcode paths.
- VAST ad pods when duration and sequence must fit the break.
- SSAI misrepresentation versus VAST proof when fraud filters and tag QA disagree.
- Wrapper impression rules on chains the server resolves.
- Start tracking event semantics once media actually plays.
Top comments (0)