How to send Protected Audience fields in bid responses to Index

DSPs
Last Updated: February 12, 2026

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:

  • Make sure to include Index's seller origin domains to your allowed list of domains. This could include any domain with *.indexww.com or *.casalemedia.com. For example, the domain could be cdn.indexww.com or privacysandbox.casalemedia.com.

  • Include the igbid array of objects field in the Response.ext field. The igbid includes the information for running an in-browser interest group auction. This is sent in the perBuyerSignals object in the bid response to the Media Owner. For more information about the igbid array of objects field, see List of supported OpenRTB bid response fields for DSPs.

    • Index recommends that you include the following fields in the generateBid() function that the browser uses to run an auction. For more information about the generateBid() function, see Google's Buyer guide: join interest groups and generate bids documentation.

      FieldTypeDescription

      ad

      Object

      The ad object metadata includes information about the ad, which this interest group wants to show. The browser uses this information in its auction and decision logic. There are required and optional (but recommended) attributes that you should include in the ad object metadata. For a list of these fields, see the generateBid(): ad object metadata fields reference section below.

      bid

      Float

      The bid price expressed as CPM, although the actual transaction is for a unit impression only.

      bidCurrency

      String

      The bid currency. This should always be USD.

      render

      String

      The creative's URL that should be rendered if this bid wins the auction.

      allowComponentAuction

      Boolean

      A boolean specifying if you want to participate in multi-seller auctions. Make sure to set this value to true or the Protected Audience API will not include your on-device interest group bids.

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 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 TypeDescription

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.curBidResponse.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, as per the standard creative attributes list.

ad.cid

Bid.cid

String; recommended

The campaign 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 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 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"
            }
        }
    }
}