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, andsource, useat1, settmax, and offer only USD incur. - Each impression carries
displaymanager,displaymanagerver,tagid,bidfloor,bidfloorcur,clickbrowser, andimp.ext.pcta, withimp.secureset to 1. - Banner MIME types are limited to
image/png,image/jpg,image/gif, andtext/html. Video offers use delivery 1 or 2, protocols 2, 3, 5, and 6, playback methods 1 to 4,minbitrate250, amaxbitrateof at most 15000, andboxingallowed1. - The device carries
ua,w,h,connectiontype, and an address iniporipv6. On iOS the IDFV appears in bothdevice.ext.ifvanddevice.ext.idfvwith the same value, and only when the IDFA is unavailable or zeroed. - Each bid needs
admandadomain. 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
id1, 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
sourceidentifiermay replace the campaign. - SKAdNetwork nonces use UUID syntax and timestamps are Unix milliseconds as strings. When SKOverlay
showis 0, no other SKOverlay attributes may be set.
Documented extensions
| Path | Meaning |
|---|---|
imp.ext.pcta | Whether the placement allows a persistent call to action. |
imp.ext.skadn | SKAdNetwork request data with sourceapp, skadnetids, and versions. |
imp.ext.gpid | Global placement ID. |
imp.video.ext.rewarded | Set to 1 for rewarded placements; banners use imp.banner.ext.rewarded. |
device.ext.ifv | iOS identifier for vendors; device.ext.idfv carries the same value. |
device.ext.atts | App Tracking Transparency status, 0 to 3. |
device.ext.app_set_id | Android App Set ID, with its scope in device.ext.app_set_id_scope. |
source.ext.omidpn | Open Measurement partner name, always vungle. |
source.ext.schain | Supply chain in its OpenRTB 2.5 extension location. |
regs.ext.gdpr | GDPR flag, 0 or 1; regs.ext.us_privacy carries the US Privacy string. |
user.ext.consent | Consent as 0 or 1, or a TCF consent string. |
bid.ext.crtype | Creative type of the markup. |
bid.ext.imptrackers | Impression tracker URLs. |
bid.ext.clicktrackers | Click tracker URLs. |
bid.ext.skadn | SKAdNetwork response, including fidelities and SKOverlay settings. |
What the validator checks for this profile
openrtb.profile.vungle.currency_ignoredVungle treats the response currency as USD, including a supplied non-USD value.openrtb.profile.vungle.idfv_contextVungle IDFV extensions are emitted only for iOS devices.openrtb.profile.vungle.idfv_mismatchVungle ext.ifv and ext.idfv must contain the same IDFV.openrtb.profile.vungle.macro_contextVungle minimum-bid-to-win macros are supported only in lurl.openrtb.profile.vungle.native_icon_sizeVungle Native app icons must be at least 80 by 80 pixels when supplied.openrtb.profile.vungle.native_image_extensionVungle Native image URL must have a supported image file extension before its query or fragment.openrtb.profile.vungle.native_main_imageVungle Native requires main-image asset id 1.openrtb.profile.vungle.native_unsupportedVungle does not support Native the field.openrtb.profile.vungle.native_versionVungle supports Native Ads version 1.2.openrtb.profile.vungle.skadn_campaignVungle SKAdNetwork campaign must be an integer string in the version-specific range (1 through 100 before 4.0, 0 through 9999 in 4.0 and later).openrtb.profile.vungle.skadn_mismatchVungle SKAdNetwork itunesitem must match the advertised bid.bundle when supplied.openrtb.profile.vungle.skadn_nonceVungle SKAdNetwork fidelity nonce must use UUID syntax.openrtb.profile.vungle.skadn_sourceidentifierVungle sourceidentifier is a four-digit integer string for SKAdNetwork 4.0 and later.openrtb.profile.vungle.skadn_timestampVungle SKAdNetwork timestamp is a Unix-milliseconds integer string.openrtb.profile.vungle.skadn_versionVungle request SKAdNetwork versions must be 2.0 or later; Vungle does not advertise 2.1.openrtb.profile.vungle.skoverlay_disabledVungle disallows other SKOverlay attributes when show is 0.openrtb.profile.vungle.type_invalidVungle user.ext.consent is an integer 0 or 1, or a configured TCF consent string.openrtb.profile.vungle.value_invalidVungle source.ext.omidpn is vungle when supplied.openrtb.profile.vungle.vast_prefixVungle VAST markup must start its VAST element within the first 100 bytes.
Validate against this contract
Open the tester with the Vungle Exchange profile, or run:
rtblint validate --profile vungle request.json
Similar integrations
- Adform OpenRTB handler
- AppLovin ALX DSP response
- BidSwitch buyer 5.7
- Digital Turbine Exchange
- Display & Video 360
- Equativ bidder contract
- Google Authorized Buyers
- Index Exchange DSP
- InMobi DSP
- Magnite DV+ xAPI
- Microsoft Monetize bidder
- MobileFuse in-app bidding
- MobileFuse SDK bidding
- Sovrn request
- Unity Exchange
- Yandex SDK bidding