Online (single ad)
Offline playlist
verve-metadata
VAST 4.2 via GET /v1alpha2/ads.
v1alpha2 Player — online & offline
VAST 4.2 via GET /v1alpha2/ads.
This page is the reference player. The contract below is what the API
serves today; anything not listed here (the opaque
vrmt token, audience/pacing,
image/HTML5 creatives, X-Verve-Request-Id,
POST /adsignals, bulk drain) is planned and not emitted
yet.
1. Get ads — GET /v1alpha2/ads
GET /v1alpha2/ads?playerid=<id>&key=<retailer> # one targeted ad
GET /v1alpha2/ads?playerid=<id>&key=<retailer>&limit=N # N targeted ads
GET /v1alpha2/ads?playerid=<id>&key=<retailer>&offline=true # audience-agnostic playlist to cache
Returns VAST 4.2 (application/xml),
video/mp4 only. Empty <VAST/> =
no-fill, play from cache. dvactid is allowed only when
offline=false. Per-ad
<Extension type="verve-metadata"> carries
flight_id, campaign_id,
request_id, expires_at.
2. Play & fire tracking — GET /v1alpha2/adexposure
Fire every <Impression> and
<Tracking> URL
yourself, verbatim, appending
&ets=<RFC3339 UTC, e.g. 2026-05-28T14:32:05.1234Z>.
The token on the URL is the aid query param:
relay the whole URL, never parse it. Fire
ae=impression and ce=start at render, and
ce=complete at the end (plus any other
<Tracking> events the VAST carries).
3. Offline
Prefetch with offline=true, download the
<MediaFile> bytes locally, drop ads past
expires_at. While offline, buffer each fire (the full
URL + its ets); on reconnect replay them as GETs,
staggered. Same (aid, event, ets) replayed is safe.
No auth in v1alpha2 (a registered playerid+key
only). Full design-of-record: the partner integration reference.