Get your VAST tag

Build the VAST or VMAP address for an approved channel, learn what each parameter does, and test it before your player uses it.

Your player asks LtvAdx for an ad by calling a VAST address. The VAST Tag Generator builds that address for one of your channels. Use it when a channel is approved and you are wiring up your player.

Before you start

The channel must be APPROVED on Channels & Apps. The generator lists only approved channels and says *No approved channels. Submit a channel for review first.* if you have none. See Channel review.

Steps

  1. Open VAST Tag Generator.
  2. Choose your channel under Channel.
  3. Choose the Platform and Break Type.
  4. Set Max Duration (seconds) to the longest ad your break can hold.
  5. Select Copy beside the VAST 4.2 Tag.
  6. Replace {HOUSEHOLD_ID} with the household or device ID from your own app. If you have none, replace {VIEWER_ID} with your own ID for the viewer or device and drop householdId. Remove both if you have neither. The channel ID is already filled in.
  7. Select Test VAST in browser to check the answer.

The page also gives you a VMAP playlist address and the details for opening an SSAI session.

What you get back

The answer is always a normal successful response. A filled answer contains an ad. When there is no ad, you get an empty <VAST version="4.2"/>. Both carry an X-Request-Id header. Quote it if you contact support about a particular request. A filled answer also carries an X-Ad-Decision header.

An empty answer does not say why. No ads on my channel walks through the causes in the order they are most likely.

Parameters

ParameterWhat it does
channelIdRequired. Without it the answer is empty.
breakTypePRE_ROLL (the default), MID_ROLL, POST_ROLL or BUMPER. A campaign that targets other break types is skipped.
platformROKU, FIRE_TV, APPLE_TV, SAMSUNG_TIZEN, LG_WEBOS, ANDROID_TV and the others in the generator. A request without it matches any platform targeting. A value that disagrees with the device's user agent is still served, but counted.
durationSeconds available in the break. Ads longer than this are skipped. Leave it out or use 0 for no limit.
householdIdA stable ID for the household or device. Household targeting, frequency caps and consent decisions use it. Without it the request is treated as an anonymous viewer.
viewerIdYour own first-party ID for the viewer or device, for when you have no household ID, for example a web player called from your own ad server. Used only to count frequency caps on your channels: never used for targeting, never sent to anyone, and stored only as a one-way hash. Not used when the viewer's privacy signals rule identification out (see below).
podDuration or pmxd, maxAds or pmadAsk for a pod of several ads for one break. podDuration is in seconds and pmxd in milliseconds. The default is 4 ads and the most is 10. Use this when your own stitcher builds the stream.
ifa, ifa_type, operatorId, subscriberId, ppidOther ways to identify a household: a device advertising ID, an operator's subscriber, or your own ID.
gdpr, gdpr_consent, us_privacy, gpp, gpp_sid, coppa, dnt, lmtThe viewer's privacy signals. Pass what your consent tool gives you.
ip, uaThe viewer's address and browser. Only believed from a stitcher LtvAdx has vetted for your account. Ignored from anyone else.

Anything else on the address is ignored. For the full protocol, including the response, see VAST tag integration.

Things that change what you get

  • Call the tag from the viewer's device. LtvAdx reads the viewer's country from the address that makes the request. If your own server fetches the tag, it sees your server's location, and campaigns that target a country may skip it. An X-Forwarded-For header is ignored unless it comes from a stitcher LtvAdx has registered for your account.
  • Frequency caps need an ID. A campaign's frequency cap counts per household, or per viewerId when there is no household. A request with neither can't be capped. When most of a channel's requests in the last 7 days carried neither, the generator shows Frequency capping inactive: no viewer id. above the tag.
  • Privacy signals. If a viewer says do-not-track, limit ad tracking or COPPA, or a viewer in the EU, UK or Switzerland has no valid consent string, the request is served contextually. Their household is not used, so campaigns that target households can't match. A kids channel is always served this way.
  • Don't change tracking addresses. The impression and quartile addresses in the answer are signed. An address your player edits is recorded but never billed, so you are not paid for it. Fire them exactly as given. See VCR and impression tracking.
  • Partner networks that have their own live ad domain see that domain in the generated address instead.

VMAP playlist

The VMAP address returns a playlist of the breaks on your Ad Breaks list for the channel: pre-rolls and bumpers at the start, each mid-roll at its start time, post-rolls at the end, each asking for an ad (or a pod) no longer than the break's length. A mid-roll at or past the contentDurationSeconds you give it (3600 if you omit it) is left out. A channel with no breaks gets three: a pre-roll, one mid-roll halfway through and a post-roll. Each break points to a VAST address for your channel.

If players report errors

If players report VAST errors on at least 20% of plays and there are at least 50 errors in a day, you get a Player errors alert. It names the most common error code. The codes are the standard IAB VAST error codes, so match them against your player's documentation. Common fixes are a player that can't play the media file format, a blocked network call to the ad address, or an ad slot too short for the ad.

If the Integration problem alert says more than 50% of your requests carried no household ID, add the householdId to your tag. See No ads on my channel.

Last reviewed 2026-11-08

Related guides

Contact support