VAST Error Codes
When a video ad fails, the player reports a number. This is what each one means, what actually produces it in production, and what to do about it — codes are from the IAB Tech Lab VAST 4.3 specification, the causes are from working with them.
The single most useful thing to know about these codes: a moderate rate of error 303 is not a fault. It is what no-fill looks like from the player's side, and chasing it wastes time that belongs on the 40x codes, which are real playback failures.
Document
Trafficking
- 200Trafficking errorThe player received an ad type it was not expecting, so the creative could not be used in the slot it was served into.
- 201Video player expecting different linearityThe player expected a linear ad and received a non-linear one, or vice versa.
- 202Video player expecting different durationThe duration of the creative does not match what the player expected for the slot.
- 203Video player expecting different sizeThe dimensions of the creative do not match what the player expected for the slot.
Wrapper
- 300General wrapper errorSomething went wrong resolving a wrapper that does not fall into the more specific 30x codes.
- 301Timeout of VAST URIThe player requested the URI in a wrapper and the response did not arrive within its timeout.
- 302Wrapper limit reachedThe chain contained more wrapper redirects than the player allows, so resolution was abandoned.
- 303No ads returned after one or more wrappersThe chain resolved successfully but the final response contained no ad.
Linear
- 400General linear errorThe player could not play the linear creative, for a reason that does not fall into the more specific 40x codes.
- 401Media file not foundThe media file URI returned a 404 or was otherwise unreachable.
- 402Timeout of media file URIThe media file began loading but did not arrive within the player's timeout.
- 403Could not find a supported media fileThe player examined the media files offered and could not use any of them.
- 405Problem displaying media fileThe file was retrieved and accepted but failed during rendering or playback.
Other
How a player reports these
A VAST tag can declare an <Error> element containing a URL with an [ERRORCODE] macro. When playback fails, the player substitutes the numeric code into that macro and fires the URL. That is the whole reporting mechanism — which means a tag with no Error element fails completely silently, and you will see the missing revenue without ever learning why. Declaring one costs nothing and is the difference between a diagnosable failure and a mystery.
To check a tag before it runs, the VAST validator reads the XML and reports which of these conditions it would hit.