Magnite DV+ xAPI

Magnite, formerly the Rubicon Project, runs the DV+ sell-side platform, and xAPI is DV+'s server API for requesting bids. Magnite publishes the xAPI OpenRTB extensions as a public protobuf model on GitHub. Magnite Streaming and SpringServe use separate protocols.

Direction and version

A calling ad server or platform sends requests to Magnite's DV+ xAPI endpoint, and Magnite returns the bid response. Some request extensions are passed on to DSPs.

A proto2 extension model on top of the IAB OpenRTB 2.x protobuf (com.iabtechlab.openrtb.v2), used in JSON with Magnite fields mostly under ext.rp. The JSON integration guide is behind a login, so flags are accepted as JSON booleans or as 0 and 1 integers.

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

Rules beyond the OpenRTB spec

  • Supplied xAPI extensions must match the public model's field types and integer widths, including the nested window, floor, proxy demand, and targeting messages.
  • Request lists are bounded: ext.rp.badvid (blocked advertiser IDs) holds at most 20 entries and ext.rp.baindid (blocked industry IDs) at most 50.
  • Impression trackers in bid.ext.rp.imptrackers must use HTTPS when the impression is secure.
  • A returned creative must match what the impression offered: its media format, API framework, banner MIME type, and DV+ size ID from imp.banner.ext.rp.size_id or imp.banner.ext.rp.alt_size_ids.
  • Banner ext.rp.mime is application/javascript or text/html.
  • Proxy bids in imp.ext.rp.proxydemand are USD CPM, gross by default, and are recorded as house bids without revenue.
  • pmptier 3 means PMP and 4 means First Right; 1 and 2 are reserved.
  • The response time in ext.rp.time is rounded up to a multiple of 10 milliseconds.
  • The model marks several fields deprecated, including banner usenurl, floor dpf, the video skip and skipdelay extensions, and the DigiTrust user.ext.dt identifier.

Documented extensions

PathMeaning
ext.rp.zone_idDV+ zone ID for the request.
imp.ext.rp.zone_idDV+ zone ID for the impression.
imp.ext.rp.floorsFloors with price, PMP tier, and priority.
imp.ext.rp.proxydemandHouse or proxy bids with a market rate.
imp.ext.rp.targetKey-value targeting for the impression.
imp.ext.gpidGlobal placement ID.
imp.banner.ext.rp.size_idDV+ size ID of the primary banner size.
imp.banner.ext.rp.alt_size_idsAlternate DV+ size IDs the slot accepts.
site.ext.rp.site_idDV+ site ID.
site.publisher.ext.rp.account_idDV+ account ID of the publisher.
device.ext.ipmaskAsks Magnite to mask the IP address before sending it to DSPs.
regs.ext.s22580Flag for California Business and Professions Code section 22580.
source.ext.ssreqMarks a server-side ad insertion request.
bid.ext.rp.advidDV+ advertiser ID of the creative.
bid.ext.rp.size_idDV+ size ID of the returned banner.

What the validator checks for this profile

Validate against this contract

Open the tester with the Magnite DV+ xAPI profile, or run:

rtblint validate --profile magnite request.json

Similar integrations