Call LtvAdx from your own ad server (VAST wrapper)
Point a VAST wrapper in your own ad server at your channel's tag. Which parameters are required, what each optional one changes, and what comes back.
Many publishers already run an ad server of their own. You can add LtvAdx to it as one more source: your ad server returns a VAST wrapper that points at your channel's LtvAdx tag, the viewer's player follows the wrapper, and LtvAdx answers with the ad. Your player plays it as it plays any other.
Before you start
The channel must be APPROVED on Channels & Apps. A request for any other channel gets an empty answer. See Channel review.
Steps
- Open VAST Tag Generator.
- Choose your channel under Channel.
- Set Platform to the kind of player that will show the ad. For a player in a web page, choose
WEB. - Choose the Break Type and set Max Duration (seconds).
- Select Copy beside the VAST 4.2 Tag.
- Replace
{HOUSEHOLD_ID}with your ad server's per-viewer ID, or remove the wholehouseholdIdparameter if it has none. Never leave the placeholder in: every viewer would then count as one household. - In your ad server, create a VAST wrapper whose ad tag address is the address you copied.
Parameters
Only channelId is required. Everything else is optional and can be left off. Anything the tag does not list here is ignored, so your ad server can add a cache-buster or its own parameters without harm.
| Parameter | Required | What it changes |
|---|---|---|
channelId | Yes | Which channel the request is for. Without it the answer is always empty. |
breakType | No | PRE_ROLL (the default), MID_ROLL, POST_ROLL or BUMPER. Campaigns that target other break types are skipped. |
platform | No | The player's platform, such as WEB, ROKU or ANDROID_TV. Left off, the request matches campaigns for every platform. A value that disagrees with the viewer's browser or device is still served, but counted. |
duration | No | Seconds available in the break. The longest ad that fits is chosen. Left off or 0, there is no limit. |
householdId | No | A stable ID for the viewer's household, from your own system. With it, household targeting and frequency caps can apply. Without it, the viewer is served as anonymous. |
viewerId | No | Your own first-party ID for the viewer, for when you have no household ID. Used only to count frequency caps on your channels: never for targeting, never sent to anyone, stored only as a one-way hash. Not used when the viewer's privacy signals rule identification out. |
podDuration or pmxd, maxAds or pmad | No | Ask for several ads for one break. See Ad pods. |
ifa, ifa_type | No | The device's advertising ID and its type, when your player has one. Also used to find the household. |
gdpr, gdpr_consent, us_privacy, gpp, gpp_sid, coppa, dnt, lmt | No | The viewer's privacy signals. For viewers in Europe, see EU consent and TCF strings. |
ip, ua | No | The viewer's address and browser. Believed only from a stitching server LtvAdx has vetted for your account, ignored from anyone else. |
When your ad server can't send a viewer ID
A wrapper is the same for every viewer unless your ad server fills a value per request. If it sends no householdId, every request is served as an anonymous viewer: campaigns that target households can't match it, and it is not counted in reach. Ads still play.
If your ad server or player has any stable ID of its own for the viewer, such as a first-party cookie or login ID, pass it as viewerId. Frequency caps then work. With neither ID, caps can't apply, and the VAST tag page for the channel shows Frequency capping inactive: no viewer id.
If more than 50% of a channel's requests carry no household ID, you get an Integration problem alert. On this kind of integration that is expected until you can pass an ID.
Who makes the request
The viewer's player fetches the LtvAdx address after it reads your wrapper. LtvAdx reads the viewer's country from the address that makes the request, so campaigns that target a country work, and so does the consent check for viewers in Europe.
If your ad server fetches the LtvAdx tag itself, on its own servers, LtvAdx sees your server's address and location instead. Countries are then wrong, and every request from Europe may be served contextually. Let the player follow the wrapper, or ask LtvAdx to vet your server so it can pass ip and ua.
Calling from a web page
The tag answers cross-origin requests from any website, with or without credentials, so a player on your own domain can read it. The player can also read the X-Request-Id, X-Ad-Decision and X-Pod-Ads headers. LtvAdx sets no cookies on ad requests.
What comes back
The answer is always a successful response with VAST 4.2.
- An ad: a VAST document with one
<Ad>, or several for a pod. It carriesX-Request-IdandX-Ad-Decisionheaders. - No ad: an empty document with no
<Ad>in it:
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.2" xmlns="http://www.iab.com/VAST"/>Your player treats that as no ad. If you want your ad server to try another source when LtvAdx has none, allow fallback on the wrapper you created (VAST 4 fallbackOnNoAd). An empty answer does not say why. See No ads on my channel.
The answer can itself be a wrapper, when the ad comes from an advertiser's own ad server. Make sure your player's wrapper limit allows one more step than your own chain.
Media files
A video uploaded to LtvAdx is converted before it serves. Its answer lists one MP4 file per size, using H.264 video and AAC audio, with each file's size, bitrate and codecs, plus an HLS stream of the same ad. A player that plays only MP4 with H.264 can pick any of these MP4 files.
LtvAdx does not convert ads it does not host. An ad from an advertiser's own VAST tag, or from an outside buyer, carries that party's media files. An ad whose advertiser linked to their own video file lists that one file, as given.
Ad pods
To fill a whole break with one request, add podDuration (seconds) or pmxd (milliseconds), and maxAds or pmad.
- A pod holds at most 10 ads. If you give a length but no number, it holds up to 4.
- Ads are added until the length is used up, the number is reached or nothing else is eligible. A pod stops when less than 5 seconds are left.
- The same campaign or advertiser never appears twice in one pod.
- A pod can be shorter than you asked for. The
X-Pod-Adsheader says how many ads it holds.
Without any of these parameters, the answer holds one ad.
Tracking
The impression, quartile and error addresses in the answer are signed. Your player must fire them exactly as given, from the viewer's device. An address that was changed on the way is recorded but never billed, so you are not paid for it. See Get your VAST tag and VCR and impression tracking.