Unity Exchange
Unity Exchange is Unity's programmatic exchange for in-app inventory. DSPs receive its bid requests and bid in a first-price auction.
Direction and version
Unity Exchange sends bid requests to DSP bidders over HTTPS, and bidders return bid responses to Unity.
Unity's pages mix OpenRTB 2.6 integration guidance with OpenRTB 2.5 field descriptions. Flags are 0 or 1 integers, and Native is not documented.
The RTBlint profile unity checks requests and responses against the published contract.
Rules beyond the OpenRTB spec
- Each request carries exactly one impression whose
imp.idis the string "1".atis 1 (first price) andimp.secureis 1. - Video requests use
minduration5,maxduration30,pos7, andplacement1 or 5. Banner-only impressions setinstlto 0, and video impressions set it to 1. - Responses need
cur,seatbid.seat,adm,cat, andbid.ext.crtype. The creative type is a case-insensitive name such as VAST 3.0, MRAID 2.0, BANNER, or HTML. pricemust be above zero with at most three decimal places.adomainholds exactly one root domain with no protocol, path, orwwwprefix. Other subdomains are allowed.- Tracking needs
burl, ornurltogether withbid.ext.imptrackers. Unity returns loss code 1011 when both are missing. - App ads need
bid.bundleandbid.ext.storeurl, and banner bids needwandh. - A
dealidmust match a deal offered on the impression. - SKAdNetwork responses must match the impression's
sourceappand one of itsskadnetids, andbid.ext.skadn.itunesitemmust matchbid.bundle. Versions 2 and 3 use campaign strings from 1 to 100, and version 4 uses a four-digitsourceidentifier. - Unity publishes its own loss codes from 1000 upward in
${AUCTION_LOSS}, such as 1004 for a missingcrtype.
Documented extensions
| Path | Meaning |
|---|---|
imp.ext.skadn | SKAdNetwork data, sent only when the DSP's network ID is in the app's list. |
imp.ext.skadn.skoverlay | Whether SKOverlay is allowed. |
imp.ext.skadn.productpage | Whether custom product pages are allowed. |
imp.ext.skadn.ext.ask | Whether Auto StoreKit is allowed. |
source.ext.omidpn | Open Measurement partner name, Unity3d. |
source.ext.header_bidding | 1 for bidding traffic, 0 for waterfall. |
device.ext.ifv | iOS identifier for vendors. |
device.ext.atts | App Tracking Transparency status, 0 to 3. |
bid.ext.crtype | Required creative type of the markup. |
bid.ext.storeurl | App store URL of the advertised app. |
bid.ext.imptrackers | Impression tracker URLs. |
bid.ext.skadn | SKAdNetwork response, including SKOverlay settings and the product page ID. |
What the validator checks for this profile
openrtb.profile.unity.advertiser_domainUnity accepts exactly one advertiser domain.openrtb.profile.unity.creative_typeUnity ext.crtype must be a documented creative type (case-insensitive).openrtb.profile.unity.deal_not_offeredUnity response dealid must match a deal ID offered by the referenced impression.openrtb.profile.unity.impression_countUnity emits exactly one impression per request.openrtb.profile.unity.impression_idUnity's sole impression has the string id 1.openrtb.profile.unity.price_invalidUnity bid price must be greater than zero.openrtb.profile.unity.price_precisionUnity accepts at most three decimal places in bid price.openrtb.profile.unity.skadn_campaignUnity SKAdNetwork 2.x and 3.x campaign is an integer string from 1 through 100.openrtb.profile.unity.skadn_mismatchUnity SKAdNetwork sourceapp must identify the publisher app.bundle.openrtb.profile.unity.skadn_sourceidentifierUnity SKAdNetwork sourceidentifier is a four-digit string.openrtb.profile.unity.skadn_timestampUnity SKAdNetwork timestamp must be a Unix-milliseconds integer string.openrtb.profile.unity.type_invalidUnity SKAdNetwork fidelities entries must be objects.openrtb.profile.unity.value_invalidUnity video placement is 1 or 5.
Loss and status codes
Validate against this contract
Open the tester with the Unity Exchange profile, or run:
rtblint validate --profile unity 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
- Vungle Exchange
- Yandex SDK bidding