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
burland be priced in USD. The payment type must be one the impression offered inimp.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_macrostake string values of at most 550 characters and are replaced after the system macros. - DSA names in
bid.ext.dsa.behalfandbid.ext.dsa.paidare limited to 100 characters. - Video context in
imp.video.ext.appnexus.contextruns 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.slotinpodmay only claim a guaranteed position the seller offered. - The deal flags
deal.ext.appnexus.gtdanddeal.ext.appnexus.scare 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
| Path | Meaning |
|---|---|
ext.appnexus.seller_member_id | Member ID of the selling Monetize member. |
ext.appnexus.publisher_integration.is_header | Whether the request came through header bidding, sent as 0 or 1. |
imp.ext.appnexus.estimated_clear_price | Estimated price needed to win the impression. |
imp.ext.appnexus.predicted_view_rate | Predicted viewability rate of the impression. |
imp.ext.appnexus.allowed_payment_types | Payment types the impression accepts, such as per impression or per viewable impression. |
imp.video.ext.appnexus.context | Video context, such as pre-roll, mid-roll, post-roll, or outstream. |
source.ext.tidt | Transaction ID type: 1 globally unique, 2 not unique across supply paths. |
deal.ext.appnexus.gtd | Marks a programmatic guaranteed deal. |
deal.ext.appnexus.sizes | Creative sizes allowed on the deal. |
device.geo.ext.appnexus.timezone | The user's time zone. |
bid.ext.appnexus.custom_macros | Name and value pairs substituted into the creative. |
bid.ext.appnexus.bid_payment_type | Payment type and price the bid uses. |
What the validator checks for this profile
openrtb.profile.xandr.array_limitXandr sends at most 64 blocked advertiser domains.openrtb.profile.xandr.billing_url_requiredXandr non-impression payment bids require a billing notify URL in bid.burl.openrtb.profile.xandr.payment_currencyXandr viewable-impression payment bids support USD only.openrtb.profile.xandr.payment_not_offeredThe Xandr request does not offer this payment type for the referenced impression.openrtb.profile.xandr.pod_durationThis Xandr creative is longer than the entire offered dynamic pod.openrtb.profile.xandr.slot_not_offeredXandr bid.slotinpod may identify a guaranteed position only when the seller offered one.openrtb.profile.xandr.string_limitXandr custom macro values have a maximum length of 550 characters.openrtb.profile.xandr.type_invalidXandr the field has an invalid documented JSON type.
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
- 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
- MobileFuse in-app bidding
- MobileFuse SDK bidding
- Sovrn request
- Unity Exchange
- Vungle Exchange
- Yandex SDK bidding