How to send Protected Audience fields in bid responses to Index

Info: Starting in June 2025, Index is pausing support for the Protected Audience API. After this date, any Protected Audience fields included in bid responses to Index will no longer be processed for on-device auctions.

The Protected Audience API, which is a part of Google's Privacy Sandbox, is an in-browser API available on Chrome for web banner ads. It allows DSPs to create and target interest groups without relying on third-party cookies, while protecting users from cross-site tracking. A Protected Audience API runs on the user's device to choose an ad.

What do Protected Audience bid requests include?

How to participate in an on-device auction?

If you want to be able to participate in an on-device auction using the Protected Audience API, Index Exchange (Index) recommends that you do the following:

generateBid(): ad object metadata fields reference

The following table lists the Protected Audience API fields that can be sent in the ad object. You must include all the required fields. The other fields are optional, but highly recommended. As a reference, the corresponding OpenRTB An open industry standard for communication between buyers and sellers of online advertising in real-time bidding auctions. It's published by the IAB. fields are included as a comparison to what you would typically send to Index, which contain the same information as the Protected Audience fields:

Protected audience attribute OpenRTB attribute Type Description

ad.seat

seatBid.seat

String; required

The buyer seat ID on whose behalf the bid is made.

ad.adomain

Bid.adomain

Array of Strings; required

The domain/landing page/brand to identify the advertiser; limited to 128 characters.
Note: This field should follow the format of domain.com and must not begin with https://.

ad.w

Bid.w

Integer; required

Width of the creative in device-independent pixels.

ad.h

Bid.h

Integer; required

Height of the creative in device-independent pixels.

ad.id

Bid.id

String; recommended

A unique identifier for this request, as indicated in the id field of the Bid Request Object.

ad.cur BidResponse.cur

String; recommended

Bid currency using ISO-4217 alpha codes (default USD).

ad.mtype

Bid.mtype

Integer; recommended

The creative markup type, where:

  • 1 = Banner

  • 2 = Video

  • 3 = Audio

  • 4 = Native

ad.attr

Bid.attr

Array of Integers; recommended

The creative type A classification of ads based on behavior. Describes the properties of the advertisement creative. Available formats include: standard, expandable, overlay/voken, in-banner video, survey, audio, and video., as per the standard creative attributes list.

ad.cid

Bid.cid

String; recommended

The campaign A collection of multiple ads in different formats. ID to assist with ad quality checking.

ad.crid

Bid.crid

String; recommended

The creative ID to assist with ad quality checking.

ad.language

Bid.language

String; recommended

The language of the creative using ISO-639-1-alpha-2. You can send either the language attribute or langb attribute, but not both.

ad.langb

Bid.langb

String; recommended

Content language using IETF BCP 47. You can send either the language attribute or langb attribute, but not both.

ad.cattax

Bid.cattax

Integer; recommended

The taxonomy in use for bcat. Refer to the AdCOM 1.0 list List: Category Taxonomies for values.

ad.dealid

Bid.dealid

String; recommended

A unique identifier for the direct deal A private auction that allows publishers to offer specific inventory directly to selected buyers identified by a deal ID. Terms are negotiated and are agreed upon before the auction occurs. associated with this bid.

Example

The following code is an example of the generateBid() JavaScript function that is used by the browser:

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  ...
  return {'ad': adObject,          
          'bid': bidValue,
          'bidCurrency': 'USD',
          'render': renderURL,          
          'allowComponentAuction': true};          
}

The following code includes example values returned in the generateBid() function when the browser makes a call to run an on-device auction:

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  ...
    return {
        'ad':
        {
            w: 200
            h: 300,
            seat: "99",
            adomain: ["example.com"]
            // other ad-meta data
        }        
        'bid': 1.99,
        'bidCurrency': 'USD',
        'render': https://www.example-dsp.com/ad/123.jpg,
        'allowComponentAuction': true};
    }

Note: The Prebid.js An open-source library for publishers to implement header bidding on their websites and manage multiple header bidding partners. fledgeForGpt module adds the auctionSignals.prebid object, which includes the auctionSignals.prebid.ortb2 and auctionSignals.prebid.ortb2Imp objects.

The following code is an example of the auctionSignals object added by the Prebid.js fledgeForGpt module:

"auctionSignals": {
    "prebid": {
        "ortb2": {
            "source": {},
            "site": {
                "domain": "example.com",
                "publisher": {
                    "domain": "example.com"
                },
                "page": "https://www.example.com/page?key=value"
            },
            "device": {
                "w": 1920,
                "h": 431,
                "dnt": 0,
                "ua": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
                "language": "en",
                "sua": {
                    "source": 1,
                    "platform": {
                        "brand": "Linux"
                    },
                    "browsers": [
                        {
                            "brand": "Google Chrome",
                            "version": [
                                "122"
                            ]
                        }
                    ],
                    "mobile": 0
                }
            }
        },
        "ortb2Imp": {
            "ext": {
                "ae": 1,
                "data": {
                    "adserver": {
                        "name": "gam",
                        "adslot": "privacy-sandbox-adunit"
                    },
                    "pbadslot": "privacy-sandbox-adunit"
                },
                "gpid": "privacy-sandbox-adunit"
            }
        }
    }
}