Bidders - Deal buyer access service

This read-only service lets bidders view information about the negotiated deals they have with sellers on Xandr's platform. A deal may provide a buyer preferential pricing, access to exclusive inventory, reduced competition on inventory, or other opportunities. Each deal is valid for a single buyer, but note that inventory included in a deal may be encompassed by deals with other buyers as well.

REST API

Tip

When logged in with a member user, the following calls will return only deals available to that member. When logged in with a bidder user, the following calls will return deals available to all members or buyer seats under that bidder.

HTTP Method Endpoint Description
GET https://api.adnxs.com/deal-buyer-access View all deals you have with sellers.
GET https://api.adnxs.com/deal-buyer-access?seller_member_id=SELLER_MEMBER_ID View all deals you have with a specific seller.
GET https://api.adnxs.com/deal-buyer-access?id=DEAL_ID View a specific deal.
GET https://api.adnxs.com/deal-buyer-access?id=1,2,3 View multiple deals by ID using a comma-separated list.
GET https://api.adnxs.com/deal-buyer-access?search="Deal_ID, DEAL_NAME, or CODE Search for a deal by name, ID, or code.
GET https://api.adnxs.com/deal-buyer-access/meta Find out which fields you can filter and sort by.

JSON fields

Field Type (Length) Description
active boolean If true, the deal is active. Note that the deal will be available only when this field is true, start_date is in the past (or null), and end_date is in the future (or null).
ask_price int The price associated with the deal. This is the minimum amount the seller will accept for this inventory.
brands array of objects The brands of creatives that are eligible for the deal. For more details, see Brands below.
buyer object The buying bidder and member who can target this deal. For more details, see Buyer below.
buyer_bidders array of objects The buying bidder who can target this deal. For more details, see Buyer Bidders below.
buyer_members array of objects The buying bidder and members who can target this deal. For more details, see Buyer Members below.
buyer_seats array of objects The buying bidder and seats who can target this deal. For more details, see Buyer Seats below.
code string (100) The custom code for the deal.
currency enum The currency for the floor_price.
description string (65535) The description of the deal.
end_date timestamp The day and time when the deal stops being available to the buyer. Null corresponds to "indefinitely".
floor_price double Deprecated. Please refer to ask_price instead. The minimum CPM value that the bidder must bid to be eligible for the deal.
Note: If use_deal_floor is false, floor_price will be 0. In this case, note that although 0 is shown as the floor price, no deal floor is applied; if the seller has any other floors (in placements or yield management profiles), they will be applied, or if the seller does not have any other floors, the standard second-price auction mechanics will apply.
id int The ID of the deal. This is the field you will receive on the bid request. Note: If you set up a deal with an external seller and funnel it through Xandr, we will turn their code into this ID.
last_modified timestamp The date and time when the deal was last modified.
name string (255) The name of the deal.
seller object The selling member who is offering the deal. For more details, see Seller below.
sizes array of objects The sizes of creatives that are eligible for the deal. For more details, see Sizes below.
Note: If this array is not present in the response, there are no creative size requirements for the deal.
start_date timestamp The day and time when the deal starts being available to the buyer. Null corresponds to "immediately".
suggested_min_bid_price int The same amount as the ask_price.
Note: Your minimum bid should be higher than the ask_price to account for the auction service charges specified in your Xandr contract. For deals with external suppliers, your bid should also include additional margin to account for discrepancies. Bidding the more than the ask_price helps ensure that you are eligible for the deal but there is no guarantee that your bid will win.
type object The type of deal. A deal can be an open auction or a private auction. For more details, see Type below.
use_deal_floor boolean If true, the floor_price is applied for the deal.
Note: When use_deal_floor is true, the deal's floor price overrides any other floors the seller may have, i.e., in placements or yield management profiles.

Seller

The seller object contains the following fields.

Field Type Description
id int The member ID of the seller.
name string The member name of the seller.

Buyer

The buying bidder and member who can target this deal. For a seller who uses single-buyer deals, a deal will only ever use the buyer field or the buyer_seats field, not both. The buyer field supports a single member, not an array. The buyer field is not used by sellers who are enabled for multi-buyer deals. Since multi-buyer deals is still in beta for sellers, you can expect some sellers to continue using the buyer field for single-buyer deals for the time being.

The buyer field cannot be updated by the seller. Once a deal is created with a buyer field, it will not change.

The buyer object contains the following fields.

Field Type Description
bidder_id int The bidder ID of the member.
id int The member ID of the buyer.
name string The member name of the buyer.

Buyer members

The buying bidder and members who can target this deal. For a seller who uses multi-buyer deals, the buyer_members object can be set in combination with buyer_seats and buyer_bidders. They cannot be set in combination with buyer.

The buyer_members field is used by sellers who are enabled for multi-buyer deals. It functions like the buyer field except for two main differences: buyer_members supports an array of objects and can be edited after creation. Multi-buyer deals is still a beta feature so not all sellers will have access to set up deals using buyer_members.

A DSP should read this field if they:

  • Can accept deals where multiple buyers are eligible: in this case, they should read this field as an array of objects with potentially multiple objects.
  • Cannot accept deals where multiple buyers are eligible: read this field as an array of objects with one object. If a DSP cannot accept multiple buyers, they should read this field in the exact same way they read buyer. Even a DSP that has transitioned to seats might see old deals with a legacy member populated here.

The buyer object contains the following fields.

Field Type Description
bidder_id int The bidder ID of the member.
bidder_name string The name of the bidder.
id int The member ID of the buyer.
name string The member name of the buyer.

Buyer seats

The buying bidder and seats who can target this deal. For a seller who uses multi-buyer deals, the buyer_seats object can be set in combination with buyer_members and buyer_bidders. For a seller who uses single-buyer deals, the buyer_seats object can be set up on its own. The buyer_seats object cannot be set in combination with buyer.

All sellers, both ones setting up single buyer and multi-buyer deals, have the ability to set up deals using buyer_seats.

A DSP should read this field if they:

  • Are transitioned to using buyer seats.

  • Can accept deals where multiple buyers are eligible: in this case, they should read this field as an array of objects with potentially multiple objects.

  • Cannot accept deals where multiple buyers are eligible: read this field as an array of objects with one object.

The buyer_seats object contains the following fields.

Field Type Description
bidder_id int The bidder ID of the member.
bidder_name string The name of the bidder.
id int The member ID of the buyer.
name string The member name of the buyer.

Buyer bidders

The buying bidders who can target this deal. For a seller who uses multi-buyer deals, the buyer_bidders object can be set in combination with buyer_seats and buyer_members. They cannot be set in combination with buyer.

The buyer_bidders field is used by sellers who are enabled for multi-buyer deals. When this seat is used on a deal, all buyers within the DSP are eligible. This field corresponds to a deal being sent with a blank pmp.deals.wseat on the OpenRTB bid request. Multi-buyer deals is still a beta feature so not all sellers will have access to set up deals using buyer_bidders.

A DSP should read this field if:

  • Can accept a deal with a blank pmp.deals.wseat on the OpenRTB bid request.

The buyer_bidders object contains the following fields.

Field Type Description
bidder_name string Read-only. The name of the bidder.
bid int The bidder ID of the member.

Type

The type object contains the following fields.

Field Type Description
id int The ID representing the type of deal. Possible values:
- 1 = Open Auction
In an "Open Auction", buyers targeting the deals and buyers targeting the inventory via other means compete for the impression. If a buyer targeting a deal submits the highest bid and the bid clears the deal's floor, that buyer wins the auction, paying either the second-highest bid or the deal floor price, whichever is higher. If one of the non-deal buyers submits the highest bid, that buyer wins the auction, paying either the second-highest bid or ECP, whichever is higher.
- 2 = Private Auction
In a "Private Auction", buyers targeting the private deals compete for the impression first. Then, if none of the deal buyers win, the auction is opened to buyers targeting the inventory via other means. If a buyer targeting a deal submits a bid higher than the deal's floor and higher than any other private auction bids, that buyer wins the auction, paying either the second-highest bid from the private auction or the deal floor price, whichever is higher. If no private auction deals clear their floors, the highest bid in the open auction wins, paying either the second-highest bid from the open auction or ECP, whichever is higher.
For examples showing how these different types of auctions work, see Deal Auction Mechanics.
name string The name of the type of deal. Possible values: "Open Auction", "Private Auction", or "First Look".

Brands

Each brands object contains the following fields.

Field Type Description
id int The ID of the brand that is eligible for the deal. You can use the Brand Service to retrieve brand IDs.
name string The name of the brand that is eligible for the deal. You can use the Brand Service to retrieve brand names.

Sizes

Each object in the sizes array contains the following fields.

Field Type Description
width string The width of the creative.
height string The height of the creative.

Examples

View all deals you have with sellers

$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access'
{ 
    "response": {
        "status": "OK",
        "count": 6,
        "deals": [
            {
                "id": 62,
                "code": null,
                "name": "Private deal for buyer 1085 with floor of 2.5",
                "description": null,
                "active": false,
                "start_date": "2013-12-01 00:00:00",
                "end_date": "2013-12-31 23:59:59",
                "floor_price": 2.5,
                "currency": "USD",
                "use_deal_floor": true,
                "last_modified": "2013-12-04 20:15:38",
                "seller": {
                    "id": 1004,
                    "name": "Seller 1004"
                },
                "buyer": {
                    "id": 1005,
                    "bidder_id": 2,
                    "name": "Buyer 1005"
                },
                "type": {
                    "id": 2,
                    "name": "Private Auction"
                },
                "brands": [
                    {
                        "id": 1
                    }
                ],
                                "ask_price": 2.75,
                                "suggested_min_bid_price": 2.75,
                "sizes": [
                    {
                        "width": "300",
                        "height": "250"
                    }
                ],
            },
            {
                "id": 63,
                "code": null,
                "name": "Private deal for buyer 1085 with floor of $2.50",
                "description": null,
                "active": false,
                "start_date": "2013-12-01 00:00:00",
                "end_date": "2013-12-31 23:59:59",
                "floor_price": 2.5,
                "currency": "USD",
                "use_deal_floor": true,
                "last_modified": "2013-12-04 20:39:57",
                "seller": {
                    "id": 1006,
                    "name": "Seller 1006"
                },
                "buyer": {
                    "id": 1007,
                    "bidder_id": 2,
                    "name": "Buyer 1007"
                },
                "type": {
                    "id": 2,
                    "name": "Private Auction"
                },
                "brands": [
                    {
                        "id": 1
                    }
                ]
            },
            ...
        ]
    }
}

View all deals you have with a specific seller

$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access?seller_member_id=100006'
{
    "response": {
        "status": "OK",
        "count": 1,
        "deals": [
            {
                "id": 63,
                "code": null,
                "name": "Private deal for buyer 1085 with floor of $2.50",
                "description": null,
                "active": false,
                "start_date": "2013-12-01 00:00:00",
                "end_date": "2013-12-31 23:59:59",
                "floor_price": 2.5,
                "currency": "USD",
                "use_deal_floor": true,
                "last_modified": "2013-12-04 20:39:57",
                "seller": {
                    "id": 100006,
                    "name": "Seller 456"
                },
                "buyer": {
                    "id": 1007,
                    "bidder_id": 2,
                    "name": "Buyer 1007"
                },
                "type": {
                    "id": 2,
                    "name": "Private Auction"
                },
                "brands": [
                    {
                        "id": 1
                    }
                ],
                                "ask_price": 2.75,
                                "suggested_min_bid_price": 2.75,
            }
        ]
    }
}

View a specific deal

$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access?id=63'
{
    "response": {
        "status": "OK",
        "count": 1,
        "deal": 
        "deals": {
            "id": 63,
            "code": null,
            "name": "Private deal for buyer 1085 with floor of $2.50",
            "description": null,
            "active": false,
            "start_date": "2013-12-01 00:00:00",
            "end_date": "2013-12-31 23:59:59",
            "floor_price": 2.5,
            "currency": "USD",
            "use_deal_floor": true,
            "last_modified": "2013-12-04 20:39:57",
            "seller": {
                "id": 100006,
                "name": "Seller 456"
            },
            "buyer": {
                "id": 1007,
                "bidder_id": 2,
                "name": "Buyer 1007"
            },
            "type": {
                "id": 2,
                "name": "Private Auction"
            },
            "brands": [
                {
                    "id": 1
                }
            ],
                        "ask_price": 2.75,
                        "suggested_min_bid_price": 2.75
        }
    }
}

View a specific deal (w/ Seat Code)

$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access?id=689280'
{
        "response": {
                "count": 1,
                "dbg": {
                        "output_term": "deal",
                        "version": "1.18.1370",
                        "warnings": []
                },
                "deal": {
                        "active": false,
                        "adserver_lists": null,
                        "adserver_restrict": false,
                        "allow_creative_add_on_click": true,
                        "allow_creative_add_on_view": false,
                        "allowed_media_subtypes": null,
                        "allowed_media_types": null,
                        "ask_price": 1,
                        "auction_type": {
                                "id": 2,
                                "name": "Standard Price"
                        },
                        "audit_status_option": "none",
                        "bidder_guaranteed_deals_support_id": null,
                        "brand_restrict": false,
                        "brands": null,
                        "buyer": null,
                        "buyer_exposure": {
                                "id": 1,
                                "name": "Single buyer"
                        },
                        "buyer_seats": [{
                                "bidder_id": 100,
                                "bidder_name": "Buyer 100",
                                "bidder_supports_hashed_user_ids": true,
                                "code": "A123D",
                                "guaranteed_deals_support": "Disabled",
                                "name": "buyer seat id deal test"
                        }],
                        "categories": null,
                        "category_restrict": false,
                        "code": null,
                        "created_by": "seller",
                        "creatives": null,
                        "currency": "USD",
                        "data_protected": false,
                        "description": "Test Deal with seller 958",
                        "end_date": "2019-12-31 23:59:59",
                        "external_metadata": null,
                        "id": 689280,
                        "language_restrict": false,
                        "languages": null,
                        "last_modified": "2019-11-13 17:33:40",
                        "media_preference": "standard",
                        "name": "buyer seat test",
                        "package_id": null,
                        "payment_type": "default",
                        "priority": 10,
                        "seller": {
                                "bidder_id": 2,
                                "id": 958,
                                "name": "Member 958"
                        },
                        "size_preference": "standard",
                        "sizes": null,
                        "start_date": "2019-11-11 00:00:00",
                        "suggested_min_bid_price": 1,
                        "technical_attribute_restrict": false,
                        "technical_attributes": null,
                        "type": {
                                "id": 2,
                                "name": "Private Auction"
                        },
                        "use_deal_floor": true,
                        "version": 1,
                        "visibility_profile_id": null
                }
        }
}

View all deals that have not expired

In this example, assuming today is December 4, 2013, we want to find all deals that have not expired. To do this, we pass the min_end_date="2013-12-04 00:00:00" filter in the query string. Please note that however, that deals with no end date will not show up in the response.

$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access?min_end_date="2013-12-04 00:00:00"'
{
    "response": {
        "status": "OK",
        "count": 4,
        "deals": [
            {
                "id": 60,
                "code": null,
                "name": null,
                "description": null,
                "active": true,
                "start_date": "2013-12-01 00:00:00",
                "end_date": "2013-12-31 23:59:00",
                "floor_price": 3.2,
                "currency": "USD",
                "use_deal_floor": true,
                "last_modified": "2013-12-04 18:47:39",
                "seller": {
                    "id": 100006,
                    "name": "Seller 456"
                },
                "buyer": {
                    "id": 1007,
                    "bidder_id": 2,
                    "name": "Buyer 1007"
                },
                "type": {
                    "id": 2,
                    "name": "Private Auction"
                },
                "brands": null,
                                "ask_price": 3.5,
                                "suggested_min_bid": 3.5
            },
            {
                "id": 62,
                "code": null,
                "name": "Private deal for buyer 1085 with floor of 2.5",
                "description": null,
                "active": false,
                "seller_member_id": 1066,
                "start_date": "2013-12-01 00:00:00",
                "end_date": "2013-12-31 23:59:59",
                "profile_id": null,
                "floor_price": 2.5,
                "currency": "USD",
                "use_deal_floor": true,
                "last_modified": "2013-12-04 20:15:38",
                "seller": {
                    "id": 1006,
                    "name": "Seller 1006"
                },
                "buyer": {
                    "id": 1007,
                    "bidder_id": 2,
                    "name": "Buyer 1007"
                },
                "type": {
                    "id": 2,
                    "name": "Private Auction"
                },
                "brands": [
                    {
                        "id": 1
                    }
                ],
                                "ask_price": 3.5,
                                "suggested_min_bid_price": 3.5,
            },
            ...
        ]
    }
}