SpringServe VAST validator guide
Short answer: SpringServe is Magnite's streaming ad server. A connected TV supply tag is VAST only, and the response version is VAST 2.0 or VAST 3.0. Validate the XML the tag returns, and fill the CTV macros before you judge an empty response. Desktop and mobile web are the environments that default to JavaScript VPAID.
Need a SpringServe VAST validator?
Paste the vid.springserve.com URL with the macros filled, or paste the XML it returned.
Quick reference
| Role | Ad server for Magnite streaming |
| Response versions | VAST 2.0 or VAST 3.0 |
| CTV response | VAST only. VPAID demand is blocked. |
| CTV size | 1920 by 1080, hard-coded on the tag |
| Endpoint shape | vid.springserve.com/vast/{id} |
The environment picks VAST or VPAID
SpringServe's supply documentation says every managed supply tag has an environment: desktop, mobile web, in-app, or connected TV. Desktop and mobile web return JavaScript VPAID. Connected TV and in-app tags are VAST only. Response type can be overridden in the advanced section, and the same page says JavaScript VPAID responses are generally unsupported for the CTV environment. The VAST version setting chooses VAST 2.0 or VAST 3.0.
On a CTV tag, VPAID none is the default, and VPAID demand is not allowed to serve. If a demand response is still VPAID, SpringServe says it ignores that response on a VPAID-none tag. An opportunity is defined as a VPAID initialization, so CTV tags do not record opportunities. Validate a CTV creative as VAST with a media file. A VPAID document will not get a play on that supply.
Fill the CTV macros before you call the tag empty
The connected TV page lists the default macros and marks width, height, cache buster, IP, user agent, and device id as required. App bundle and app name are recommended. The same page says hard-coding width to 1920 and height to 1080 improves CTV tag performance, and its example is vid.springserve.com/vast/{id}?w=1920&h=1080&cb={{CACHEBUSTER}} plus the IP, user agent, app, and device id parameters. User agent must be present for detection even though SpringServe can detect it. Device id is what frequency capping uses, with IP as the failover when the id is missing.
The demand-tag macros page describes a tag validation tool that can call the endpoint as written or with macros replaced. An empty VAST from a tag that still contains {{WIDTH}} is a macro problem, not yet a creative problem. Replace the macros, fetch again, then validate the XML.
What the CTV creative should be
SpringServe's CTV guidelines say to use VAST and a high quality MP4, and they list VPAID, MRAID, FLV, and WebM as formats that are not accepted on CTV. Creative guidance on that table is a non-skippable ad up to 30 seconds. Skippable ads and creatives longer than 30 seconds are in the do-not column of the same table. Size guidance repeats 1920 by 1080.
SpringServe also publishes VAST error codes: the IAB set, plus custom codes for web and VPAID and for server-side VAST. Code 102 is a VAST version the response does not support, which is the check to make when a 4.x document is sent to a tag set to 2.0 or 3.0. The exchange side of the same company is covered in the Magnite guide.
Pre-flight checklist
- The supply environment matches the player. CTV and in-app are VAST only.
- The VAST version setting is 2.0 or 3.0, and the response uses that version.
- Width and height are 1920 and 1080, and the required macros are filled.
- The creative is a progressive MP4, 30 seconds or shorter, without a skip offset.
- The returned XML passes the validator.