Vungle Exchange

Vungle Exchange is the in-app programmatic exchange from Vungle, which is now part of Liftoff. Vungle publishes an OpenRTB 2.5 integration guide for DSPs and a separate Native integration guide.

Direction and version

Vungle Exchange sends bid requests to DSPs, and DSPs return bid responses to Vungle.

OpenRTB 2.5 JSON with integer flags. Native requests use Native Ads 1.2.

The RTBlint profile vungle checks requests and responses against the published contract.

Rules beyond the OpenRTB spec

  • Requests always carry app, device, and source, use at 1, set tmax, and offer only USD in cur.
  • Each impression carries displaymanager, displaymanagerver, tagid, bidfloor, bidfloorcur, clickbrowser, and imp.ext.pcta, with imp.secure set to 1.
  • Banner MIME types are limited to image/png, image/jpg, image/gif, and text/html. Video offers use delivery 1 or 2, protocols 2, 3, 5, and 6, playback methods 1 to 4, minbitrate 250, a maxbitrate of at most 15000, and boxingallowed 1.
  • The device carries ua, w, h, connectiontype, and an address in ip or ipv6. On iOS the IDFV appears in both device.ext.ifv and device.ext.idfv with the same value, and only when the IDFA is unavailable or zeroed.
  • Each bid needs adm and adomain. Vungle treats the response currency as USD, even when another code is sent.
  • VAST markup must open its VAST element within the first 100 bytes of adm.
  • Minimum-bid-to-win macros are substituted only in lurl.
  • Native responses need a main image asset with id 1, image URLs that end in a supported image file extension, and app icons of at least 80 by 80 pixels.
  • SKAdNetwork versions start at 2.0. Campaigns are integer strings from 1 to 100 before 4.0 and from 0 to 9999 from 4.0, where a four-digit sourceidentifier may replace the campaign.
  • SKAdNetwork nonces use UUID syntax and timestamps are Unix milliseconds as strings. When SKOverlay show is 0, no other SKOverlay attributes may be set.

Documented extensions

PathMeaning
imp.ext.pctaWhether the placement allows a persistent call to action.
imp.ext.skadnSKAdNetwork request data with sourceapp, skadnetids, and versions.
imp.ext.gpidGlobal placement ID.
imp.video.ext.rewardedSet to 1 for rewarded placements; banners use imp.banner.ext.rewarded.
device.ext.ifviOS identifier for vendors; device.ext.idfv carries the same value.
device.ext.attsApp Tracking Transparency status, 0 to 3.
device.ext.app_set_idAndroid App Set ID, with its scope in device.ext.app_set_id_scope.
source.ext.omidpnOpen Measurement partner name, always vungle.
source.ext.schainSupply chain in its OpenRTB 2.5 extension location.
regs.ext.gdprGDPR flag, 0 or 1; regs.ext.us_privacy carries the US Privacy string.
user.ext.consentConsent as 0 or 1, or a TCF consent string.
bid.ext.crtypeCreative type of the markup.
bid.ext.imptrackersImpression tracker URLs.
bid.ext.clicktrackersClick tracker URLs.
bid.ext.skadnSKAdNetwork response, including fidelities and SKOverlay settings.

What the validator checks for this profile

Validate against this contract

Open the tester with the Vungle Exchange profile, or run:

rtblint validate --profile vungle request.json

Similar integrations