Display & Video 360

Display & Video 360 (DV360) is Google's demand-side platform. Google publishes the OpenRTB specification that exchanges and SSPs follow when they send DV360 bid requests.

Direction and version

Exchanges and SSPs send bid requests to DV360's endpoint, and DV360 answers as the buyer with a bid or a no-bid.

OpenRTB 2.6 JSON by default, with a 2.6 protobuf option offered as a beta on request. Flags are integers, consent strings are web-safe base64, and Native is supported only as version 1.2 in a JSON string in imp.native.request.

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

Rules beyond the OpenRTB spec

  • Requests need device, user, exactly one of site or app, a publisher ID, device.ua, and the device address in device.ip or device.ipv6.
  • For iOS apps, app.bundle must be the numeric App Store ID rather than a reverse-DNS bundle name.
  • source.schain is expected in almost every integration. An exemption depends on the account.
  • Each privacy signal (GDPR applicability, TCF consent, US Privacy) should be sent in one location only, either the 2.6 field or its legacy ext path.
  • Native versions 1.0 and 1.1 are not supported.
  • Video needs a non-empty protocols list. Sound-off playback must be classified as outstream, and plcmt takes precedence over the legacy placement.
  • Deal IDs must be unique within an impression. A fixed-price deal (at 3) needs a bidfloor, and DV360 accepts 0 for video placement, plcmt, and playbackmethod.
  • ext.disable_gma_format is allowed only together with ext.gdemsignals.
  • DV360 parses test, allimps, wlang, bapp, source.tid, source.pchain, and imp.metric but does not use them for bidding. Only the first impression is used, except for audio pods.
  • Banner bids always carry adm. A malformed request can receive HTTP 200 with nbr and an error description in ext.err.

Documented extensions

PathMeaning
ext.gdemsignalsSignals from the Google Mobile Ads SDK.
ext.disable_gma_formatOpts out of Google Mobile Ads SDK formats; valid only with ext.gdemsignals.
ext.purchTraffic source: 0 undefined, 1 purchased, 2 organic.
ext.schainLegacy supply chain location; source.schain is preferred.
source.ext.omidpnOpen Measurement partner name.
device.ext.truncated_ipSet when the IP address in the request has been truncated.
imp.ext.bcridCreative IDs to block for the impression.
imp.video.ext.rewardedRewarded video flag.
deal.ext.guaranteedLegacy guaranteed flag; deal.guar is preferred.
app.ext.inventorypartnerdomainInventory partner domain for authorization checks.
user.ext.consented_providers_settingsProviders the user consented to under Google's Additional Consent.
ext.errResponse-level description of a request error.

What the validator checks for this profile

Validate against this contract

Open the tester with the Display & Video 360 profile, or run:

rtblint validate --profile dv360 request.json

Similar integrations