Microsoft Monetize bidder

Microsoft Monetize is Microsoft's sell-side ad platform, earlier branded Xandr and before that AppNexus. Its extensions still live under ext.appnexus, and the bidder documentation remains on Microsoft Learn under the Xandr name.

Direction and version

The Monetize impression bus sends bid requests to external bidders, and bidders return responses to Monetize. Supplier ingest is a separate contract that this profile does not cover.

Microsoft's bidder pages describe OpenRTB 2.4 JSON sent with an x-openrtb-version header, and a companion page covers bidders on OpenRTB 2.6. Native requests are JSON strings, and Native 1.1 and 1.2 are supported.

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

Rules beyond the OpenRTB spec

  • Every bidder response needs seatbid.seat: the Monetize member ID or a registered buyer seat code, which may be nonnumeric.
  • A request lists at most 64 blocked advertiser domains in badv.
  • A bid that uses a viewable-impression payment type (2, 6, 8, or 9) must carry burl and be priced in USD. The payment type must be one the impression offered in imp.ext.appnexus.allowed_payment_types, and the feature needs enablement.
  • Notify URLs may use only the documented macros, such as ${AUCTION_PRICE}, ${AUCTION_ID}, and ${AN_PAYMENT_TYPE}. They are limited to 2000 characters after expansion.
  • Custom macros in bid.ext.appnexus.custom_macros take string values of at most 550 characters and are replaced after the system macros.
  • DSA names in bid.ext.dsa.behalf and bid.ext.dsa.paid are limited to 100 characters.
  • Video context in imp.video.ext.appnexus.context runs from 0 to 10. Values 8, 9, and 10 describe video that accompanies content.
  • A creative may not be longer than an entire offered dynamic pod, and bid.slotinpod may only claim a guaranteed position the seller offered.
  • The deal flags deal.ext.appnexus.gtd and deal.ext.appnexus.sc are sent only with the value 1.
  • Monetize publishes the loss reason codes it returns. The list is a subset of the OpenRTB table, with no codes at 500 or above.

Documented extensions

PathMeaning
ext.appnexus.seller_member_idMember ID of the selling Monetize member.
ext.appnexus.publisher_integration.is_headerWhether the request came through header bidding, sent as 0 or 1.
imp.ext.appnexus.estimated_clear_priceEstimated price needed to win the impression.
imp.ext.appnexus.predicted_view_ratePredicted viewability rate of the impression.
imp.ext.appnexus.allowed_payment_typesPayment types the impression accepts, such as per impression or per viewable impression.
imp.video.ext.appnexus.contextVideo context, such as pre-roll, mid-roll, post-roll, or outstream.
source.ext.tidtTransaction ID type: 1 globally unique, 2 not unique across supply paths.
deal.ext.appnexus.gtdMarks a programmatic guaranteed deal.
deal.ext.appnexus.sizesCreative sizes allowed on the deal.
device.geo.ext.appnexus.timezoneThe user's time zone.
bid.ext.appnexus.custom_macrosName and value pairs substituted into the creative.
bid.ext.appnexus.bid_payment_typePayment type and price the bid uses.

What the validator checks for this profile

Loss and status codes

Validate against this contract

Open the tester with the Microsoft Monetize bidder profile, or run:

rtblint validate --profile xandr request.json

Similar integrations