Protected Audience API

This initiative was formally known as TURTLEDOVE, then FLEDGE, and now Protected Audiences API (PAAPI). As part of Privacy Sandbox, Chrome proposed this in-browser API that lets advertisers and ad tech companies show interest-group targeted ads without relying on third-party cookies.

Bid requests

Requests may not contain any User Object for website traffic. All other standard fields should be present. The following new extension fields are being used when testing PAAPI.

  • imp.ext.ae int (Optional) Specifies the auction environment.

    • 0 (Default) all on the server-side, i.e traditional auction.

    • 1 Requests with Protected Audience API support, in which a contextual auction runs on the exchange’s servers and the interest group bidding and the final auction runs in the browser.

{
  "imp":[
    {
      "ext":{
        "ae":1
      }
    }
  ]
}

Bid responses

Responses must contain the following Interest Group Bid details to be able to participate in an in-browser auction:

  • ext.igbid array of objects (Optional) Interest group bids.

  • ext.igbid.id string (Optional) Refers to the adslot being bid on, the ID should match original request imp.id field.

  • ext.igbid.igbuyer.origin str (Required) Should match the origins where the generateBid() functions are hosted.

  • ext.igbid.igbuyer.buyerdata Any JSON (Optional) Buyer-specific signals used by the buyer’s interest group bidding function. Can be left empty if perBuyerSignals are not required by the buyer bidding function.

  • ext.igbid.igbuyer.seat string (Required) The seat ID of the bidder on whose behalf this bid is made.

Example PAAPI Ext Response
{
  "ext":{
    "igbid":[
      {
        "id":"adslot ID",
        "igbuyer":[
          {
            "seat":"34"
            "origin":"https://fledge.example.com",
            "buyerdata":{
              "custom_field_1":"value_1"
            }
          },
          {
            "origin":"https://paapi.example.com",
            "buyerdata":{
              "custom_field_2":"value_ABC"
            },
            "maxbid":3.21
          }
        ]
      }
    ]
  }
}

Impression counting

Impression counting on BidSwitch side is required for multiple areas crucial for trading through BidSwitch, such as:

  • reporting

  • troubleshooting

  • budget and traffic optimization

  • Buyers discrepancy

The most important element in how BidSwitch counts impressions is the ext.igbid.ig_nurl bid response field. This field contains an impression notification URL sent by BidSwitch in bid response; this URL is to be called by Suppliers upon being notified of an impression. The impression notification URL contains two macros that need to be replaced by the Supplier:

  • ${IG_ AUCTION_PRICE}: the clearing price of the Interest Group auction, defined as CPM

  • ${IG_SEAT}: the winner Buyer seat ID provided in the ext.igbid.igbuyer.seat field in the bid response

Impression Notification URL Example
https://example.bidswitch.net/imp_paapi/${IG_AUCTION_PRICE}/${IG_SEAT}/_HsPFfA4ea_O5Gpq_0KlrFEZ

Please refer to the Response Ext Object section for details and response code examples.