A real-time bidding interaction begins when Google sends a bid request to
your application. This guide explains how to code your application to
process the bid request.

## Parse request

Google sends a bid request serialized in either OpenRTB JSON or Protobuf
formats, attached as the payload of an HTTP POST request. The format received
depends on the configuration of your
[endpoint](https://developers.google.com/authorized-buyers/apis/guides/rtb-api/endpoints.md.txt). See
[Example bid request](https://developers.google.com/authorized-buyers/rtb/get-started/request-guide.md.txt#example-bid-request) for an example.

You must parse this request to receive the serialized
`BidRequest`. If you are using the Protobuf format, you must
download `openrtb.proto` and `openrtb-adx.proto` from the
[reference data](https://developers.google.com/authorized-buyers/rtb/data.md.txt) page, and use them to
generate a library that can be used to parse the `BidRequest`
message. For example, the following C++ code parses a request given a POST
payload in a string:

```
string post_payload = /* the payload from the POST request */;
BidRequest bid_request;
if (bid_request.ParseFromString(post_payload)) {
  // Process the request.
}
```

Once you have the `BidRequest` you can then work with it as an
object, extracting and interpreting the fields you need. For example, in
C++ iterating through deals in an OpenRTB \`BidRequest\` could look like
the following:

```
for (const BidRequest::Imp::Pmp::Deal& deal : pmp.deals()) {
  DoSomething(deal.id(), deal.wseat());
}
```

### Billing IDs

You receive a bid request when a publisher's ad inventory is targeted by
one or more of your [pretargeting configurations](https://support.google.com/authorizedbuyers/answer/2961277). `BidRequest.imp.ext.billing_id`
will be populated with the billing IDs of any eligible buyers, and relevant
pretargeting configurations. Additionally, for
[deal
inventory](https://support.google.com/authorizedbuyers/answer/6224755), you can find billing IDs associated with the relevant buyers
using `BidRequest.imp.pmp.deal.ext.billing_id`. Only billing IDs of
buyers included in the bid request may be specified when placing a bid.

If multiple billing IDs are included in the bid request, you must specify
the billing ID of the buyer you intend to attribute your bid to with the
`BidResponse.seatbid.bid.ext.billing_id` field.

```
imp {
  ext {
    // The billing IDs of all of your matching pretargeting configs and eligible child seats are
    // stored in a flat list here.
    billing_id: 123
    billing_id: 456
    billing_id: 789
  }
  pmp {
    // All eligible deals are stored in a single flat list.
    deal {
      id: 1000
      ext {
        // The specific billing IDs eligible to bid on this deal are indicated here.
        billing_id: 789
      }
      ...
    }
    deal {
      id: 2000
      ext {
        billing_id: 123
        billing_id: 456
      }
      ...
    }
  }
  ...
}
...
```

### Determine blocked categories

When you place a bid, the included creative must not have detected categories that the publisher
blocked. Otherwise the bid is filtered from the auction.

You can find the blocked categories for an impression by reviewing the
`BidRequest.bcat` field, which is populated with categories in the
[taxonomy](https://developers.google.com/authorized-buyers/rtb/openrtb-guide.md.txt#select-an-ad-category-taxonomy)
configured for your account.

The following example shows blocked categories based on a configured ad category taxonomy:

#### IAB Content Taxonomy 1.0

```
// Bid request
{
  // Indicates the blocked categories using IAB Content 1.0 Taxonomy.
  "bcat": [
    "IAB9-9",  // Cigars
    "IAB8-18"  // Wine
  ]
  "imp": {
    ...
  }
}
      
```

#### Google Ad Category Taxonomy

```
// Bid request
{
  // Indicates the blocked categories using Google Ad Category Taxonomy.
  "bcat": [
    "10138",  // Cigar and tobacco collecting
    "10080",  // Tobacco
    "11649",  // Wine
    "10674",  // Wine collecting
    "13008"   // Wine clubs
  ]
  "imp": {
    ...
  }
}
      
```

> [!IMPORTANT]
> **Important:** To determine which categories are detected for your creatives, use the `creatives` resource in the Real-time Bidding API. For details on detected categories, see [REST Resource: bidders.creatives](https://developers.google.com/authorized-buyers/apis/realtimebidding/reference/rest/v1/bidders.creatives.md.txt#Creative.CreativeServingDecision.FIELDS.detected_categories).

### Determine contextual categories

Bid requests can include contextual category fields that describe the website or app where an
impression takes place. These fields also use ad category taxonomies, but represent the
context of the impression, rather than restrictions on the creative. These fields might not use the
same taxonomy as the `BidRequest.bcat` field. Google or the publisher can provide
these contextual categories. Using contextual categories might improve your impression
evaluation, contextual targeting, and brand safety.

#### Google-detected contextual categories

Google populates the following fields with detected IAB content categories for the
site, app, or page:

| Field | Description |
|---|---|
| `BidRequest.site.cat` | An array of content category IDs describing the site. |
| `BidRequest.site.pagecat` | An array of content category IDs describing the current page or view of the site. |
| `BidRequest.app.cat` | An array of content category IDs describing the app. |
| `BidRequest.app.pagecat` | An array of content category IDs describing the current page or view of the app. |

You can find the exact taxonomy used for these fields for a given bid request in the
`BidRequest.site.cattax` or `BidRequest.app.cattax` fields. Contextual
category fields might not always be populated due to publisher preferences or regulatory concerns.
For more information, see
[OpenRTB contextual
categories in Google Ad Manager](https://support.google.com/authorizedbuyers/answer/18080947).

#### Publisher-provided signals

In addition to Google-detected contextual categories, bid requests might also contain
publisher-provided signals, which also describe the context of an impression. Unlike
Google-detected contextual categories, these signals are only populated when provided by the
publisher. These signals are sent in the `BidRequest.site.content` and
`BidRequest.app.content` objects, such as `content.data.segment` and
`content.genre`. The taxonomy used for `content.data.segment`
entries is reported in `content.data.ext.segtax`. For more information, see
[Publisher provided signals
(PPS) for Real-time Bidding (RTB)](https://support.google.com/authorizedbuyers/answer/14934703).

### Dictionary files

The bid request uses identifiers defined in dictionary files, which are
available on the [reference data](https://developers.google.com/authorized-buyers/rtb/data.md.txt)
page.

### Bidder URL macros

Optionally, some information from the `BidRequest` can be
inserted into bidding endpoint URLs using macros. If you configure an endpoint
URL with one or more macros, they will be expanded if that information is
present in the bid request. This can be useful, for example, if you would like
to perform load balancing based on information in the `BidRequest`.
Contact your account manager to request support for new macros.

| Macro | Description |
|---|---|
| `%%GOOGLE_USER_ID%%` | Replaced with the Google User ID found in `BidRequest.user.id`. For example, the bidder URL `http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%%` will be replaced with something like `http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl` at request time. If the Google User ID is unknown, the empty string is substituted, with a result similar to ``` http://google.bidder.com/path?gid= ``` |
| `%%HAS_MOBILE%%` | Replaced with `1` to indicate that the bid request is from a mobile device, or `0` otherwise. This is based on the value of `BidRequest.device.devicetype`, where mobile devices are indicated by `HIGHEND_PHONE` (`4`) or `Tablet` (`5`). |
| `%%HAS_VIDEO%%` | Replaced with `1` to indicate that the bid request contains video inventory, or `0` otherwise. This is based on whether `BidRequest.imp.video` is populated in the bid request. |
| `%%IS_CTV%%` | Replaced with `1` to indicate that the bid request is from a CTV device, or `0` otherwise. This is based on the value of `BidRequest.device.devicetype`. For Protobuf, CTV devices are `CONNECTED_TV`, `CONNECTED_DEVICE`, or `SET_TOP_BOX`, which correspond to integer values `3`, `6`, or `7` for JSON. |
| `%%HOSTED_MATCH_DATA%%` | Replaced with a value based on `BidRequest.user.buyeruid`. |
| `%%MOBILE_IS_APP%%` | Replaced with `1` to indicate that the bid request is for mobile app inventory, or `0` otherwise. This is based on whether `BidRequest.app` is populated. |

### Find mobile app ID from transaction URL

Mobile application transactions will report URLs that look like this:

```
mbappgewtimrzgyytanjyg4888888.com
```

Use a base-32 decoder to decode the portion of the string in bold
(`gewtimrzgyytanjyg4888888`).

You can use an [online
decoder](https://www.simplycalc.com/base32-decode.php), but you'll have to capitalize the letters and replace trailing
`8`s with `=` values.

So decoding this value:

```
GEWTIMRZGYYTANJYG4======
```
results in:

```
1-429610587
```
The string `429610587` is the app ID for the iOS app **iFunny** .

<br />

Here's another example. The reported URL is:

```
mbappgewtgmjug4ytmmrtgm888888.com
```
Decoding this value:

```
GEWTGMJUG4YTMMRTGM======
```
results in:

```
1-314716233
```
The result `314716233` is the app ID for the iOS app **TextNow** .

<br />

### Find mobile app name from transaction URL

Here's an example of getting the app name. The reported URL is as follows:

```
mbappMFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q888.com
```
Decoding this value:

```
MFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q===
```
results in:

```
air.com.hypah.io.slither
```
The result equates to the Android app [slither.io](https://play.google.com/store/apps/details?id=air.com.hypah.io.slither).

<br />

### Open Bidding fields

Bid requests sent to exchange and network bidders participating in Open
Bidding are similar to those of Authorized Buyers participating in standard
real-time bidding. Open Bidding customers will receive a small number of
additional fields, and a few existing fields may have alternative uses. These
include the following:

| OpenRTB | Details |
|---|---|
| `BidRequest.imp.ext.dfp_ad_unit_code` | Contains the publisher's Ad Manager network code followed by the ad unit hierarchy, separated by forward slashes. As an example, this would appear with formatting similar to: `/1234/cruises/mars`. |
| `BidRequest.user.data.segment` | Repeated key-value pairs sent from publisher to exchange bidder. You can determine that the values are key-value pairs sent by the publisher when `BidRequest.user.data.name` is set to `"Publisher Passed"`. **Note:** This field is currently only sent to closed beta participants. |

## Declare allowed vendors

Technology vendors which provide services such as research, remarketing, and
ad serving may play a role in the interaction between buyers and sellers. Only
vendors which Google has vetted for participation in Authorized Buyers
interactions are allowed.

To understand the `BidRequest` and create your
`BidResponse`, you need to be aware of the two different
possibilities for declaring technology vendors:

1. Some vendors don't need to be declared; these vendors are listed in [Ad Manager Certified External
   Vendors](https://developers.google.com/third-party-ads/adx-vendors).
2. Other vendors can only participate if they are declared in the `BidRequest`:
   - In the `BidRequest`, the `BidRequest.imp.ext.allowed_vendor_type` field specifies which vendors the seller allows. Vendors that will be sent in the `allowed_vendor_type` are listed in the [`vendors.txt`](https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt) dictionary file.

## Example bid request

The following examples represent human-readable samples of the Protobuf and
JSON requests.

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_html_snippet_ad_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    pos: ABOVE_THE_FOLD
    api: MRAID_1
    api: MRAID_2
    format {
      w: 320
      h: 50
    }
    format {
      w: 300
      h: 50
    }
    [com.google.doubleclick.banner_ext] {
      flexslot {
        wmin: 241
        wmax: 360
        hmin: 42
        hmax: 56
      }
    }
  }
  displaymanager: "GoogleMobileAds-Android"
  displaymanagerver: "25.2.0"
  tagid: "1087180971"
  bidfloor: 4.0
  bidfloorcur: "JPY"
  secure: true
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.0006611673161387444
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.0
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 47329549763
    billing_id: 93434328916
    publisher_settings_list_id: 5038409325655482128
    publisher_settings_list_id: 8244945310049778846
    allowed_vendor_type: 0
    allowed_vendor_type: 776
    ampad: AMP_AD_NOT_ALLOWED
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    billable_event_rate_bid_adjustment {
      bid_adjustment: 0.9657459259033203
      creative_type: HTML_SNIPPET
    }
    jsver: "test-sdk_123456789"
  }
}
app {
  name: "Test App"
  ver: "2.23.1"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-3006071972218254"
    [com.google.doubleclick.publisher] {
      country: "CY"
    }
  }
  content {
    url: "https://www.google.com"
    userrating: "4.6"
    language: "it"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "ITA"
    region: "IT-BA"
    zip: "70128"
    type: IP
    utcoffset: 120
    accuracy: 1869
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9219050
    }
  }
  ipv6: "2a01:827:39ae::"
  language: "it"
  make: "Xiaomi"
  model: "220233L2G"
  os: "android"
  osv: "11"
  connectiontype: WIFI
  devicetype: HIGHEND_PHONE
  w: 360
  h: 725
  pxratio: 2.0
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "537"
      version: "36"
    }
    platform {
      brand: "Android"
      version: "11"
    }
    mobile: true
    model: "220233L2G"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    metereddata: false
    chargelevel: 0.9200000166893005
    charging: false
    diskspace: 12300
    audioout: AUDIO_SPEAKER
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  id: "29950OI6i422S2857R0MT3n5756"
  buyeruid: "4Z41N9YA3024279s51RFb73dtG997z59"
  customdata: "fs37o0bb54N2775957ivPEJvA6BTk3X5xzN26h2ZT0fI5T3I"
  consent: "OMITTED"
  [com.google.doubleclick.user] {
    consented_providers_settings {
      consented_providers: 3230
      consented_providers: 2605
      additional_consent: "OMITTED"
    }
    consent: "OMITTED"
    session {
      duration: 660
      depth: 270
      requestssinceappopen: 618
      priorclicks: 0
    }
  }
}
at: FIRST_PRICE
tmax: 350
cur: "AUD"
cur: "JPY"
bcat: "3"
bcat: "4"
regs {
  [com.google.doubleclick.regs] {
    gdpr: true
  }
}
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-a-v261210000.261210000.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_DEVICE
  privacy_treatments {
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 320,
        "h": 50,
        "pos": 1,
        "api": [
          3,
          5
        ],
        "format": [
          {
            "w": 320,
            "h": 50
          },
          {
            "w": 300,
            "h": 50
          }
        ],
        "ext": {
          "flexslot": {
            "wmin": 241,
            "wmax": 360,
            "hmin": 42,
            "hmax": 56
          }
        }
      },
      "displaymanager": "GoogleMobileAds-Android",
      "displaymanagerver": "25.2.0",
      "tagid": "1087180971",
      "bidfloor": 4.0,
      "bidfloorcur": "JPY",
      "secure": 1,
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0006611673161387444,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.0,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "47329549763",
          "93434328916"
        ],
        "publisher_settings_list_id": [
          "5038409325655482128",
          "8244945310049778846"
        ],
        "allowed_vendor_type": [
          0,
          776
        ],
        "ampad": 2,
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "billable_event_rate_bid_adjustment": [
          {
            "bid_adjustment": 0.9657459,
            "creative_type": 1
          }
        ],
        "jsver": "test-sdk_123456789"
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "2.23.1",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3006071972218254",
      "ext": {
        "country": "CY"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "userrating": "4.6",
      "language": "it"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "ITA",
      "region": "IT-BA",
      "zip": "70128",
      "type": 2,
      "utcoffset": 120,
      "accuracy": 1869,
      "ext": {
        "geo_criteria_id": 9219050
      }
    },
    "ipv6": "2a01:827:39ae::",
    "language": "it",
    "make": "Xiaomi",
    "model": "220233L2G",
    "os": "android",
    "osv": "11",
    "connectiontype": 2,
    "devicetype": 4,
    "w": 360,
    "h": 725,
    "pxratio": 2.0,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "537",
            "36"
          ]
        }
      ],
      "platform": {
        "brand": "Android",
        "version": [
          "11"
        ]
      },
      "mobile": 1,
      "model": "220233L2G",
      "source": 3
    },
    "ext": {
      "metereddata": 0,
      "chargelevel": 0.92,
      "charging": 0,
      "diskspace": 12300,
      "audioout": 1,
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "id": "29950OI6i422S2857R0MT3n5756",
    "buyeruid": "4Z41N9YA3024279s51RFb73dtG997z59",
    "customdata": "fs37o0bb54N2775957ivPEJvA6BTk3X5xzN26h2ZT0fI5T3I",
    "consent": "OMITTED",
    "ext": {
      "consented_providers_settings": {
        "consented_providers": [
          "3230",
          "2605"
        ],
        "additional_consent": "OMITTED"
      },
      "consent": "OMITTED",
      "session": {
        "duration": 660,
        "depth": 270,
        "requestssinceappopen": 618,
        "priorclicks": 0
      }
    }
  },
  "at": 1,
  "tmax": 350,
  "cur": [
    "AUD",
    "JPY"
  ],
  "bcat": [
    "3",
    "4"
  ],
  "regs": {
    "ext": {
      "gdpr": 1
    }
  },
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-a-v261210000.261210000.0"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 3,
    "privacy_treatments": {
      "allow_user_data_collection": 1
    }
  }
}
```

To convert the bid request into a binary form, like you would get from the
POST payload in a real request, you can do the following (in C++). Note,
however, that this is not applicable to OpenRTB JSON.

```
string text_format_example = /* example from above */;
BidRequest bid_request;
if (TextFormat::ParseFromString(text_format_example, &bid_request)) {
  string post_payload;
  if (bid_request.SerializeToString(&post_payload)) {
    // post_payload is a binary serialization of the protocol buffer
  }
}
```

## Real-time feedback

Real-time feedback is available to Authorized Buyers, as well
as exchanges and networks using Open Bidding.

Real-time feedback populates `BidRequest.ext.bid_feedback` based
on the outcome of one or more bids you placed earlier, and can be used to find
details such as whether the bid won the auction, or the minimum bid needed to
have won the auction. Contact your account manager to enable real-time
feedback.

In addition to the default fields sent in Bid Response Feedback, you can
also send custom data in the bid response using the
`BidResponse.seatbid.bid.ext.event_notification_token` field. The
`event_notification_token` is arbitrary data known only to the
bidder that might help with debugging, for example: a new targeting ID or
bidding ID representing a new tactic, or metadata associated with the creative
known only to the bidder. For details, see the
[OpenRTB Extensions Protocol Buffer file](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto.md.txt).

When Authorized Buyers sends a bid request to a bidder, the bidder replies
with a `BidResponse`. If the bidder has real-time feedback enabled,
then in a subsequent bid request, Authorized Buyers sends feedback on the
response in a `BidFeedback` message:

```
message BidFeedback {
  // The unique id from BidRequest.id.
  optional string request_id = 1;

  // The status code for the ad. See creative-status-codes.txt in the
  // technical documentation for a list of ids.
  optional int32 creative_status_code = 2;

  // Deprecated. This field is not populated and will be removed after March,
  // 2025. If the bid won the auction, this is the price paid in your account
  // currency. If the bid participated in the auction but was out-bid, this
  // is the CPM that should have been exceeded in order to win. This is not
  // set if the bid was filtered prior to the auction, if the publisher or
  // winning bidder has opted out of price feedback or if your account has
  // opted out of sharing winning prices with other bidders. For first-price
  // auctions, minimum_bid_to_win is populated instead of this field.
  optional double price = 3 [deprecated = true];

  // The minimum bid value necessary to have won the auction, in your account
  // currency. If your bid won the auction, this is the second highest bid
  // that was not filtered (including the floor price). If your bid didn't win
  // the auction, this is the winning candidate's bid. This field will only be
  // populated if your bid participated in a first-price auction, and will not
  // be populated if your bid was filtered prior to the auction.
  optional double minimum_bid_to_win = 6;

  // Billable event rate multiplier that was applied to this bid during
  // ranking. The adjustment reflects the likelihood that your bid would
  // generate a billable event (namely, the ad renders successfully) if it won
  // the auction, relative to the probability that other bids generate a
  // billable event if they won the auction. This adjustment can be larger or
  // smaller than 1. This affects the final ranking in the auction only; in
  // particular, this multiplier does not affect the payment or whether the
  // bid clears any floor price.
  optional float billable_event_rate_bid_adjustment = 13 [default = 1];

  // When a publisher uses an RTB auction and waterfall-based SDK mediation on
  // the same query, the winner of the real-time auction must also compete in
  // a mediation waterfall (which is ordered by price) to win the impression.
  // If the bid participated in the auction and there was no waterfall, the
  // value of this field is 0. If the bid participated in the auction and
  // there was a waterfall, the value of this field is a price representing a
  // sample bid from the eligible mediation networks that were higher than the
  // auction winner, weighted by expected fill rate. This field can be used
  // in conjunction with minimum_bid_to_win to train bidding models. The CPM
  // is in your account currency.
  optional double sampled_mediation_cpm_ahead_of_auction_winner = 8;

  message EventNotificationToken {
    // The contents of the token.
    optional string payload = 1;
  }

  // The token included in the corresponding bid.
  optional EventNotificationToken event_notification_token = 4;

  // The creative ID included in the corresponding bid.
  optional string buyer_creative_id = 5;
}
```

From this message, the first field you should check is
`bid_feedback.creative_status_code`; you can find the code
meaning in [creative-status-codes.txt](https://storage.googleapis.com/adx-rtb-dictionaries/creative-status-codes.txt). Note that if you win the bid, you can opt out
from the price feedback. For more information, see [How to
opt-out](https://support.google.com/authorizedbuyers/answer/3213668).

The real-time feedback includes the bid request ID and one of the
following:

| Auction outcome | Real-time feedback |
|---|---|
| The buyer didn't submit a bid. | Nothing. |
| The buyer submitted a bid that was filtered out before reaching the auction. | The creative status code ([creative-status-codes.txt](https://storage.googleapis.com/adx-rtb-dictionaries/creative-status-codes.txt)). |
| The buyer submitted a bid but lost the auction. | The creative status code `79` (outbid in auction). |
| The buyer submitted a bid that won the auction. | The clearing price and creative status code `1`. For an app impression and a creative status code of `83`, the app publisher could have been using a mediation waterfall and therefore the winning bid would have competed against other demand in the publisher's passback waterfall chain. [Learn how to use `sampled_mediation_cpm_ahead_of_auction_winner` when bidding](https://developers.google.com/authorized-buyers/rtb/get-started/request-guide.md.txt#first-price-auctions). |

### Sample

The following is a sample of real-time feedback as seen in supported
protocols:

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_banner_bid_feedback_min_bid_to_win_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    pos: ABOVE_THE_FOLD
    api: MRAID_1
    api: MRAID_2
    format {
      w: 320
      h: 50
    }
    format {
      w: 300
      h: 50
    }
    [com.google.doubleclick.banner_ext] {
      flexslot {
        wmin: 273
        wmax: 408
        hmin: 48
        hmax: 64
      }
    }
  }
  displaymanager: "GoogleMobileAds-Android"
  displaymanagerver: "25.2.0"
  tagid: "2012072613"
  bidfloor: 139.0
  bidfloorcur: "JPY"
  secure: true
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.0003280164091847837
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.0
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 86462726689
    billing_id: 16379689419
    publisher_settings_list_id: 8683644760809433282
    publisher_settings_list_id: 2559598489488381446
    allowed_vendor_type: 0
    allowed_vendor_type: 4697
    ampad: AMP_AD_NOT_ALLOWED
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    jsver: "test-sdk_123456789"
  }
}
app {
  name: "Test App"
  ver: "1.50.0"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-3006071972218254"
    [com.google.doubleclick.publisher] {
      country: "CY"
    }
  }
  content {
    url: "https://www.google.com"
    userrating: "4.5"
    language: "es"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "USA"
    region: "TX"
    metro: "635"
    city: "Austin"
    zip: "78701"
    type: IP
    utcoffset: -300
    accuracy: 1249
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9028276
    }
  }
  ipv6: "2600:100c:b065:b869:f05d:476e:f8c9:88e"
  carrier: "70092"
  language: "es"
  make: "Google"
  model: "Pixel 10 Pro"
  os: "android"
  osv: "16"
  connectiontype: CELL_4G
  devicetype: HIGHEND_PHONE
  ifa: "e12095da-00d2-4d49-b4f1-afc512507414"
  w: 412
  h: 919
  pxratio: 2.625
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "537"
      version: "36"
    }
    platform {
      brand: "Android"
      version: "16"
    }
    mobile: true
    bitness: "64"
    model: "Pixel 10 Pro"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    metereddata: true
    chargelevel: 0.6800000071525574
    charging: false
    diskspace: 58000
    audioout: AUDIO_SILENT
    ifa_type: "aaid"
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  [com.google.doubleclick.user] {
    session {
      duration: 353
      depth: 270
      requestssinceappopen: 7115
      priorclicks: 0
    }
  }
}
at: FIRST_PRICE
tmax: 1200
cur: "AUD"
cur: "JPY"
bcat: "3"
bcat: "4"
regs {
  gpp: "OMITTED"
  gpp_sid: USPV1
}
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-a-v263500999.261210000.1"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  bid_feedback {
    request_id: "30kO34Dw772N4To1Wl2309"
    creative_status_code: 80
    event_notification_token {
      payload: "token"
    }
    buyer_creative_id: "test_creative_id_950219"
    minimum_bid_to_win: 1.13
  }
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_DEVICE
  privacy_treatments {
    ip: IP_FULL
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 320,
        "h": 50,
        "pos": 1,
        "api": [
          3,
          5
        ],
        "format": [
          {
            "w": 320,
            "h": 50
          },
          {
            "w": 300,
            "h": 50
          }
        ],
        "ext": {
          "flexslot": {
            "wmin": 273,
            "wmax": 408,
            "hmin": 48,
            "hmax": 64
          }
        }
      },
      "displaymanager": "GoogleMobileAds-Android",
      "displaymanagerver": "25.2.0",
      "tagid": "2012072613",
      "bidfloor": 139.0,
      "bidfloorcur": "JPY",
      "secure": 1,
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0003280164091847837,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.0,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "86462726689",
          "16379689419"
        ],
        "publisher_settings_list_id": [
          "8683644760809433282",
          "2559598489488381446"
        ],
        "allowed_vendor_type": [
          0,
          4697
        ],
        "ampad": 2,
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "jsver": "test-sdk_123456789"
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "1.50.0",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3006071972218254",
      "ext": {
        "country": "CY"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "userrating": "4.5",
      "language": "es"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "USA",
      "region": "TX",
      "metro": "635",
      "city": "Austin",
      "zip": "78701",
      "type": 2,
      "utcoffset": -300,
      "accuracy": 1249,
      "ext": {
        "geo_criteria_id": 9028276
      }
    },
    "ipv6": "2600:100c:b065:b869:f05d:476e:f8c9:88e",
    "carrier": "70092",
    "language": "es",
    "make": "Google",
    "model": "Pixel 10 Pro",
    "os": "android",
    "osv": "16",
    "connectiontype": 6,
    "devicetype": 4,
    "ifa": "e12095da-00d2-4d49-b4f1-afc512507414",
    "w": 412,
    "h": 919,
    "pxratio": 2.625,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "537",
            "36"
          ]
        }
      ],
      "platform": {
        "brand": "Android",
        "version": [
          "16"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "Pixel 10 Pro",
      "source": 3
    },
    "ext": {
      "metereddata": 1,
      "chargelevel": 0.68,
      "charging": 0,
      "diskspace": 58000,
      "audioout": 3,
      "ifa_type": "aaid",
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "ext": {
      "session": {
        "duration": 353,
        "depth": 270,
        "requestssinceappopen": 7115,
        "priorclicks": 0
      }
    }
  },
  "at": 1,
  "tmax": 1200,
  "cur": [
    "AUD",
    "JPY"
  ],
  "bcat": [
    "3",
    "4"
  ],
  "regs": {
    "gpp": "OMITTED",
    "gpp_sid": [
      6
    ]
  },
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-a-v263500999.261210000.1"
    }
  },
  "cattax": 500,
  "ext": {
    "bid_feedback": [
      {
        "request_id": "30kO34Dw772N4To1Wl2309",
        "creative_status_code": 80,
        "event_notification_token": {
          "payload": "token"
        },
        "buyer_creative_id": "test_creative_id_950219",
        "minimum_bid_to_win": 1.13
      }
    ],
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 3,
    "privacy_treatments": {
      "ip": 1,
      "allow_user_data_collection": 1
    }
  }
}
```

### Build a bidding model for first-price auctions

After placing a bid in a first-price auction, you will receive real-time
feedback including the `minimum_bid_to_win` and
`sampled_mediation_cpm_ahead_of_auction_winner` fields if the bid
was not filtered from the auction. These signals can be used to inform your
bidding logic on how much higher or lower your bid could have been in order to
win the impression.

- `minimum_bid_to_win`: The minimum bid that could have been placed to win the real-time bidding auction. If you won the auction, this will be the lowest bid you could have placed while still winning. If you lost the auction, this will be the winning bid.
- `sampled_mediation_cpm_ahead_of_auction_winner`: If there are other networks in the [mediation chain](https://support.google.com/admanager/answer/7391294), the value of this field is a price representing a sample bid from one of the eligible mediation networks that were higher than the auction winner, weighted by expected fill rate. This will be set to 0 if none of the networks in the mediation chain are expected to fill, or if the publisher does not use SDK mediation.

#### How it works

In order to describe the calculations used to determine the possible values
for `minimum_bid_to_win` and
`sampled_mediation_cpm_ahead_of_auction_winner`, we first need to
define the following:

- The following represents the CPMs in the mediation chain in descending order: \\\[C_1, C_2, ..., C_n\\\]
- The following represents the corresponding fill rates for the CPMs in the mediation chain: \\\[f_1, f_2, ..., f_n\\\]
- The following is a function used to determine the expected CPM and its probability from mediation chain element \\(i\\), based on the given fill rate: \\(X_i = \\{C_i\\) with probability \\(f_i\\); \\(0\\) with probability \\(1 - f_i\\}\\)
- The final winning mediation chain will be: \\\[\\{C_1, C_2, ..., C_K, W\\}\\\] where \\(W\\) is the winning bid, and \\(C_K \> W \>= C_{K+1}\\)
- The reserve price, or floor, is denoted as \\(F\\).
- The runner-up bid is denoted as \\(R\\).

##### Calculations for auction winner

| Field | Calculation |
|---|---|
| `minimum_bid_to_win` | \\(max\\{F, R, X_{K+1}, ..., X_n\\}\\) |
| `sampled_mediation_cpm_ahead_ of_auction_winner` | \\(\\{C_i\\) with probability \\(\\prod_{j=1}\^{i-1}(1-f_j) \\cdot f_i \\div \\prod_{j=1}\^{K}(1-f_j)\\}\\) For \\(1 \<= i \<= K\\). <br /> |

##### Calculations for auction loser

| Field | Calculation |
|---|---|
| `minimum_bid_to_win` | \\(max\\{F, W\\}\\) |
| `sampled_mediation_cpm_ahead_ of_auction_winner` | \\(max\\{X_1, ..., X_K\\}\\) |

#### Example with a simple mediation chain

Assume a publisher uses both real-time bidding and an SDK mediation chain as
follows:

| SDK Mediation Chain | Expected CPM | Fill Rate |
|---|---|---|
| Network 1 | \\(C_1 = $3.00\\) | \\(f_1 = 5\\%\\) |
| Network 2 | \\(C_2 = $2.00\\) | \\(f_2 = 45\\%\\) |
| Network 3 | \\(C_3 = $0.50\\) | \\(f_3 = 80\\%\\) |
| Network 4 | \\(C_4 = $0.10\\) | \\(f_4 = 85\\%\\) |

Assume the following as the result of the RTB auction:

| RTB Auction | CPM |
|---|---|
| Auction Winner (W) | $1.00 |
| Auction Runner-UP (R) | $0.05 |
| Reserve Price / Floor (F) | $0 |

##### Bid that won the auction

The following is an example of how values and probabilities for
`minimum_bid_to_win` and
`sampled_mediation_cpm_ahead_of_auction_winner` are calculated for a
bid that won.

| `minimum_bid_to_win` | Probability |
|---|---|
| \\(max(F, R, C_3) = $0.50\\) | \\(f_3 = 80\\%\\) |
| \\(max(F, R, C_4) = $0.10\\) | \\((1-f_3) \\cdot f_4 = 17\\%\\) |
| \\(max(F, R, 0) = $0.05\\) | \\((1-f_3) \\cdot (1-f_4) = 3\\%\\) |

| `sampled_mediation_cpm_ ahead_of_auction_winner` | Probability |
|---|---|
| \\(C_1 = $3.00\\) | \\(f_1 \\div (1-(1-f_1) \\cdot (1-f_2)) =\~ 10.5\\%\\) |
| \\(C_2 = $2.00\\) | \\(((1-f_1) \\cdot f_2) \\div (1-(1-f_1) \\cdot (1-f_2)) =\~ 89.5\\%\\) |

**Note:** If the auction winner serves their ad and receives a billing notification---for example, through an endpoint specified in `BidResponse.seatbid[].bid[].burl`---the auction winner can deduce that neither of the sampled mediation CPMs ended up filling, and can include how often this occurs into their model.

##### Bids that lost the auction

The following is an example of how values and probabilities for
`minimum_bid_to_win` and
`sampled_mediation_cpm_ahead_of_auction_winner` are calculated for a
bids that lost.

| `minimum_bid_to_win` | Probability |
|---|---|
| \\(max(F, W) = $1.00\\) | \\(100\\%\\) |

| `sampled_mediation_cpm_ ahead_of_auction_winner` | Probability |
|---|---|
| \\(C_1 = $3.00\\) | \\(f_1 = 5\\%\\) |
| \\(C_2 = $2.00\\) | \\((1-f_1) \\cdot f_2 =\~ 42.8\\%\\) |
| \\(0\\) | \\((1-f_1) \\cdot (1-f_2) =\~ 52.2\\%\\) |

**Note:** A `sampled_mediation_cpm_ahead_of_auction_winner` value of 0 indicates that the real-time bidding auction won. In the above example, the auction winner is expected to not outbid by a competing mediation network 52.2% of the time.

## Bid flattening

Bid flattening describes the processing of a single complex
`BidRequest` into multiple bid requests that are sent to your
application. When a bid request is flattened, you can tell which bid requests
were part of the original because they will have an identical value in the
`BidRequest.ext.google_query_id` field.

Bid flattening is enabled by default, but you can contact your account
manager if you would prefer to disable it.

### Ad formats

Some ad opportunities can accept multiple formats. With bid flattening, each
format is sent in a distinct bid request where attributes such as eligible
billing IDs are relevant to the format specified in the request.

Bid requests containing the following formats will be flattened into
distinct bid requests:

- Banner
- Video
- Audio
- Native

#### Ad format flattening example

Below is an example showing a simplified OpenRTB JSON bid request without ad
format flattening in comparison to an equivalent set of flatenned requests:

### Pre-flatten

#### Show me the example

```
{
  "id": "V5ar1wXqKP58nbsyJ6549D",
  "imp": [
    {
      "id": "1",
      "video": {
        "linearity": 1,
        "w": 300,
        "h": 250,
        "pos": 1,
        "skip": 1,
        "playbackmethod": [
          6
        ],
        "placement": 3,
        "mimes": [
          "video/mp4"
        ],
        "protocols": [
          2,
          3
        ]
      },
      "banner": {
        "format": [
          {
            "w": 300,
            "h": 250
          }
        ],
        "w": 300,
        "h": 250,
        "pos": 1
      },
      "ext": {
        "billing_id": [
          47039494050,
          52030317241
        ]
      }
    }
  ],
  "ext": {
    "google_query_id": "ANy-zdp266-244itJsom3dmXb7SvW1IPg6478g639g0867v1126w630F3M7lAp640H666744"
  }
}
```

### Post-flatten

#### Show me the example

##### Request 1

```
{
  "id": "B3xr1yZqRL48nbsyJ6367N",
  "imp": [
    {
      "id": "1",
      "video": {
        "linearity": 1,
        "w": 300,
        "h": 250,
        "pos": 1,
        "skip": 1,
        "playbackmethod": [
          6
        ],
        "placement": 3,
        "mimes": [
          "video/mp4"
        ],
        "protocols": [
          2,
          3
        ]
      }
      "ext": {
        "billing_id": [
          47039494050
        ]
      }
  ],
  "ext": {
    "google_query_id": "ANy-zdp266-244itJsom3dmXb7SvW1IPg6478g639g0867v1126w630F3M7lAp640H666744"
  }
}
```

##### Request 2

```
{
  "id": "M1dY8qHyNK74bMsjF393Gf",
  "imp": [
    {
      "id": "1",
      "banner": {
        "format": [
          {
            "w": 300,
            "h": 250
          }
        ],
        "w": 300,
        "h": 250,
        "pos": 1
      },
      "ext": {
        "billing_id": [
          52030317241
        ]
      }
    }
  ],
  "ext": {
    "google_query_id": "ANy-zdp266-244itJsom3dmXb7SvW1IPg6478g639g0867v1126w630F3M7lAp640H666744"
  }
}
```

### Deals

An ad opportunity for a given bidder can be applicable to various deal
types, in addition to the open auction. With bid flattening for deals, one bid
request will be sent for the open auction, and one for each type of fixed-price
deal. In practice, ad constraints can differ between auctions and fixed-price
deal types, for example, for a given video ad opportunity that is available to
both the open auction and a fixed-price deal, a bidder will receive distinct
bid requests for each where constraints such as maximum ad duration and whether
skippable ads are allowed can differ. As a result, flattening applied to the ad
opportunity lets you more easily discern the ad constraints for the open
auction and the fixed-price deal.
**Note:** Private Auctions and Auction Packages will have identical constraints to the open auction, and will continue to be included in open auction bid requests.

### Skippability and Video Duration

The OpenRTB spec doesn't have separate fields for specifying the maximum
video durations of skippable and non-skippable ads. Google's implementation
uses bid flattening to distinguish between these using the existing
`BidRequest.video.maxduration` and
`BidRequest.video.skip` fields.

The following is an example of how video inventory is flattened when the
maximum duration of a non-skippable ad is `15` and the maximum
duration of a skippable ad is `60`.

| Example | `max_ad_duration` | `skip` (true OR false) |
|---|---|---|
| Original request without flattening | `15` | `true` |
| Flattened request #1: Non-skippable | `15` | `false` |
| Flattened request #2: Skippable | `60` | `true` |

Skippable video duration bid request flattening will only take place when
these conditions are met:

- The request allows video.
- Both skippable and non-skippable videos are allowed, and the two respective max durations differ in value.
- This request is Private Auction or Open Auction-eligible.

You can opt out from this type of flattening by contacting your technical
account manager. When disabled, and the publisher allows both skippable and
non-skippable video ads with different maximum durations based on skippability,
`skip` would be set to `true` and
`maxduration` would be set to whichever duration is shorter between
skippable and non-skippable ad constraints.

### Video pods

Bid requests for a video pod with multiple ad opportunities are flattened,
such that each bid request is for an individual ad opportunity from that pod.
This enables you to bid on multiple ad opportunities for a given pod.

## Open Measurement

Open Measurement lets you specify third-party vendors that provide independent measurement and verification services for ads served to mobile app environments.

You can determine whether a publisher supports Open Measurement in the bid
request by checking whether the ad opportunity excludes the `OmsdkType:
OMSDK 1.0` attribute found in [Publisher-excludable
creative attributes](https://storage.googleapis.com/adx-rtb-dictionaries/publisher-excludable-creative-attributes.txt). This would be found under the `battr`
attribute for [Banner](https://developers.google.com/authorized-buyers/rtb/openrtb-guide.md.txt#banner)
or [Video](https://developers.google.com/authorized-buyers/rtb/openrtb-guide.md.txt#video), depending
on the format.

For more information on how to interpret bid requests containing Open
Measurement signals, refer to the [Open Measurement
SDK](https://support.google.com/authorizedbuyers/answer/9115752) Help Center article.

## Sample bid requests

The following sections show sample bid requests for different ad types.

> [!NOTE]
> **Note:** The Protobuf samples include download links to similar serialized bid requests. They are not guaranteed to be identical.

### App banner

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_mobile_app_banner_ad_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    pos: ABOVE_THE_FOLD
    api: MRAID_1
    api: MRAID_2
    format {
      w: 320
      h: 50
    }
    format {
      w: 300
      h: 50
    }
    [com.google.doubleclick.banner_ext] {
      flexslot {
        wmin: 214
        wmax: 320
        hmin: 38
        hmax: 50
      }
    }
  }
  displaymanager: "GoogleMobileAds-Android"
  displaymanagerver: "25.4.0"
  tagid: "1170683138"
  bidfloor: 0.2
  bidfloorcur: "TWD"
  secure: true
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.0022246940061450005
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.0
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 21036061270
    billing_id: 11500270523
    publisher_settings_list_id: 6478851576480579402
    publisher_settings_list_id: 2452646143102133774
    allowed_vendor_type: 0
    allowed_vendor_type: 828
    ampad: AMP_AD_NOT_ALLOWED
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    jsver: "test-sdk_123456789"
  }
}
app {
  name: "Test App"
  ver: "16.73"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-3006071972218254"
    [com.google.doubleclick.publisher] {
      country: "JP"
    }
  }
  content {
    url: "https://www.google.com"
    userrating: "4.5"
    language: "ja"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "JPN"
    region: "JP-23"
    city: "Nagoya"
    type: IP
    utcoffset: 540
    accuracy: 2361
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9197961
    }
  }
  ipv6: "2402:6b00:be5a::"
  language: "ja"
  make: "Google"
  model: "Pixel 7a"
  os: "android"
  osv: "17"
  connectiontype: WIFI
  devicetype: HIGHEND_PHONE
  ifa: "105e2839-a340-41b9-94e3-84f6860b185b"
  w: 320
  h: 712
  pxratio: 3.375
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "537"
      version: "36"
    }
    platform {
      brand: "Android"
      version: "17"
    }
    mobile: true
    bitness: "64"
    model: "Pixel 7a"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    metereddata: false
    chargelevel: 0.7300000190734863
    charging: false
    diskspace: 27800
    audioout: AUDIO_SILENT
    ifa_type: "aaid"
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  id: "784c390xCf3sdR7n87V64t25vQc"
  [com.google.doubleclick.user] {
    session {
      duration: 496
      depth: 16
      requestssinceappopen: 17
      priorclicks: 0
    }
    idage: 86400
  }
}
at: FIRST_PRICE
tmax: 1300
cur: "USD"
cur: "TWD"
bcat: "3"
bcat: "4"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-a-v262180000.262180000.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_DEVICE
  privacy_treatments {
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 320,
        "h": 50,
        "pos": 1,
        "api": [
          3,
          5
        ],
        "format": [
          {
            "w": 320,
            "h": 50
          },
          {
            "w": 300,
            "h": 50
          }
        ],
        "ext": {
          "flexslot": {
            "wmin": 214,
            "wmax": 320,
            "hmin": 38,
            "hmax": 50
          }
        }
      },
      "displaymanager": "GoogleMobileAds-Android",
      "displaymanagerver": "25.4.0",
      "tagid": "1170683138",
      "bidfloor": 0.2,
      "bidfloorcur": "TWD",
      "secure": 1,
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0022246940061450005,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.0,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "21036061270",
          "11500270523"
        ],
        "publisher_settings_list_id": [
          "6478851576480579402",
          "2452646143102133774"
        ],
        "allowed_vendor_type": [
          0,
          828
        ],
        "ampad": 2,
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "jsver": "test-sdk_123456789"
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "16.73",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3006071972218254",
      "ext": {
        "country": "JP"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "userrating": "4.5",
      "language": "ja"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "JPN",
      "region": "JP-23",
      "city": "Nagoya",
      "type": 2,
      "utcoffset": 540,
      "accuracy": 2361,
      "ext": {
        "geo_criteria_id": 9197961
      }
    },
    "ipv6": "2402:6b00:be5a::",
    "language": "ja",
    "make": "Google",
    "model": "Pixel 7a",
    "os": "android",
    "osv": "17",
    "connectiontype": 2,
    "devicetype": 4,
    "ifa": "105e2839-a340-41b9-94e3-84f6860b185b",
    "w": 320,
    "h": 712,
    "pxratio": 3.375,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "537",
            "36"
          ]
        }
      ],
      "platform": {
        "brand": "Android",
        "version": [
          "17"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "Pixel 7a",
      "source": 3
    },
    "ext": {
      "metereddata": 0,
      "chargelevel": 0.73,
      "charging": 0,
      "diskspace": 27800,
      "audioout": 3,
      "ifa_type": "aaid",
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "id": "784c390xCf3sdR7n87V64t25vQc",
    "ext": {
      "session": {
        "duration": 496,
        "depth": 16,
        "requestssinceappopen": 17,
        "priorclicks": 0
      },
      "idage": 86400
    }
  },
  "at": 1,
  "tmax": 1300,
  "cur": [
    "USD",
    "TWD"
  ],
  "bcat": [
    "3",
    "4"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-a-v262180000.262180000.0"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 3,
    "privacy_treatments": {
      "allow_user_data_collection": 1
    }
  }
}
```

### App interstitial

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_mobile_app_interstitial_ad_request.bin)  

```
id: "wKS8UeItaMI5RAYw9Pahl0"
imp {
  id: "1"
  banner {
    w: 412
    h: 774
    pos: AD_POSITION_FULLSCREEN
    api: MRAID_1
    api: MRAID_2
    format {
      w: 412
      h: 774
    }
    format {
      w: 360
      h: 604
    }
  }
  displaymanager: "GoogleMobileAds-iOS"
  displaymanagerver: "11.13.0"
  instl: true
  tagid: "4105056997"
  bidfloor: 0.01
  bidfloorcur: "USD"
  secure: true
  exp: 14400
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.3207642734050751
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.012501807883381844
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 83032532617
    publisher_settings_list_id: 2887317894027751671
    publisher_settings_list_id: 8269939443573722896
    allowed_vendor_type: 0
    allowed_vendor_type: 238
    ampad: AMP_AD_NOT_ALLOWED
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    is_app_open_ad: true
    jsver: "test-sdk_123456789"
  }
}
app {
  ver: "1.0.14"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-2301631347146208"
    [com.google.doubleclick.publisher] {
      country: "AE"
    }
  }
  content {
    url: "https://www.google.com"
    language: "en"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  ip: "102.78.236.0"
  geo {
    lat: 0.0
    lon: 0.0
    country: "MAR"
    region: "MA-11"
    city: "Marrakech"
    zip: "40000"
    type: IP
    utcoffset: 0
    accuracy: 3263
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9197207
    }
  }
  carrier: "72009"
  language: "fr"
  make: "Apple"
  model: "iPhone14,3"
  os: "iOS"
  osv: "26.6.1"
  connectiontype: CELL_3G
  devicetype: HIGHEND_PHONE
  ifa: "df23895d-6a56-41e9-bb8c-f19163328c19"
  hwv: "iPhone14,3"
  w: 428
  h: 926
  pxratio: 3.0
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "605"
      version: "1"
    }
    platform {
      brand: "iPhone"
      version: "26"
      version: "6"
    }
    mobile: true
    bitness: "64"
    model: "iPhone"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    atts: 3
    audioout: AUDIO_SILENT
    ifa_type: "idfa"
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  id: "kxz2KP24nII51245YrV2AFtsQ72"
  [com.google.doubleclick.user] {
    session {
      duration: 137
      depth: 17
      requestssinceappopen: 17
      priorclicks: 0
    }
    idage: 12960000
  }
}
at: FIRST_PRICE
tmax: 2000
cur: "USD"
bcat: "32"
bcat: "33"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-i-v11.13.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zc08FK-h142dS00t819143TE021SS56r617vV09n09J3OaP354s93vIU300bzJ7e5cG2"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_DEVICE
  privacy_treatments {
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "wKS8UeItaMI5RAYw9Pahl0",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 412,
        "h": 774,
        "pos": 7,
        "api": [
          3,
          5
        ],
        "format": [
          {
            "w": 412,
            "h": 774
          },
          {
            "w": 360,
            "h": 604
          }
        ]
      },
      "displaymanager": "GoogleMobileAds-iOS",
      "displaymanagerver": "11.13.0",
      "instl": 1,
      "tagid": "4105056997",
      "bidfloor": 0.01,
      "bidfloorcur": "USD",
      "secure": 1,
      "exp": 14400,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.3207642734050751,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.012501807883381844,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "83032532617"
        ],
        "publisher_settings_list_id": [
          "2887317894027751671",
          "8269939443573722896"
        ],
        "allowed_vendor_type": [
          0,
          238
        ],
        "ampad": 2,
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "is_app_open_ad": 1,
        "jsver": "test-sdk_123456789"
      }
    }
  ],
  "app": {
    "ver": "1.0.14",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-2301631347146208",
      "ext": {
        "country": "AE"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "language": "en"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "ip": "102.78.236.0",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "MAR",
      "region": "MA-11",
      "city": "Marrakech",
      "zip": "40000",
      "type": 2,
      "utcoffset": 0,
      "accuracy": 3263,
      "ext": {
        "geo_criteria_id": 9197207
      }
    },
    "carrier": "72009",
    "language": "fr",
    "make": "Apple",
    "model": "iPhone14,3",
    "os": "iOS",
    "osv": "26.6.1",
    "connectiontype": 5,
    "devicetype": 4,
    "ifa": "df23895d-6a56-41e9-bb8c-f19163328c19",
    "hwv": "iPhone14,3",
    "w": 428,
    "h": 926,
    "pxratio": 3.0,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "605",
            "1"
          ]
        }
      ],
      "platform": {
        "brand": "iPhone",
        "version": [
          "26",
          "6"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "iPhone",
      "source": 3
    },
    "ext": {
      "atts": 3,
      "audioout": 3,
      "ifa_type": "idfa",
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "id": "kxz2KP24nII51245YrV2AFtsQ72",
    "ext": {
      "session": {
        "duration": 137,
        "depth": 17,
        "requestssinceappopen": 17,
        "priorclicks": 0
      },
      "idage": 12960000
    }
  },
  "at": 1,
  "tmax": 2000,
  "cur": [
    "USD"
  ],
  "bcat": [
    "32",
    "33"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-i-v11.13.0"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-zc08FK-h142dS00t819143TE021SS56r617vV09n09J3OaP354s93vIU300bzJ7e5cG2",
    "fcap_scope": 3,
    "privacy_treatments": {
      "allow_user_data_collection": 1
    }
  }
}
```

### App interstitial video

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_mobile_app_interstitial_video_ad_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  video {
    mimes: "video/mp4"
    linearity: LINEAR
    maxduration: 45
    w: 427
    h: 875
    startdelay: 0
    playbackmethod: CLICK_TO_PLAY
    pos: AD_POSITION_FULLSCREEN
    companionad {
      w: 427
      h: 875
      mimes: "text/css"
      mimes: "image/png"
      format {
        w: 427
        h: 875
      }
      vcm: true
    }
    api: MRAID_1
    api: MRAID_2
    companiontype: STATIC
    companiontype: HTML
    protocols: VAST_2_0
    protocols: VAST_3_0
    skip: false
    placement: FLOATING_PLACEMENT
    playbackend: COMPLETION_OR_USER
    maxseq: 2
    poddur: 40
    plcmt: PLCMT_INTERSTITIAL
    [com.google.doubleclick.video] {
      inferredplcmt: PLCMT_INTERSTITIAL
    }
  }
  displaymanager: "NextGenGoogleMobileAds-Android"
  displaymanagerver: "1.1.1"
  instl: true
  tagid: "9072476229"
  bidfloor: 0.01
  bidfloorcur: "USD"
  secure: true
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.14426924288272858
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.42162033915519714
    vendor: "EXCHANGE"
  }
  rwdd: true
  [com.google.doubleclick.imp] {
    billing_id: 61170857882
    publisher_settings_list_id: 3465533324312870629
    publisher_settings_list_id: 7019420503499415173
    allowed_vendor_type: 0
    allowed_vendor_type: 237
    ampad: AMP_AD_NOT_ALLOWED
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    jsver: "test-sdk_123456789"
    highengagement: true
  }
}
app {
  name: "Test App"
  ver: "272"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-3006071972218254"
    [com.google.doubleclick.publisher] {
      country: "BD"
    }
  }
  content {
    url: "https://www.google.com"
    userrating: "3.7"
    language: "en"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "IND"
    type: IP
    utcoffset: 330
    accuracy: 7811
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9197649
    }
  }
  ipv6: "2409:408c:2892::"
  carrier: "70227"
  language: "en"
  make: "Vivo"
  model: "V2125"
  os: "android"
  osv: "12"
  connectiontype: CELL_4G
  devicetype: HIGHEND_PHONE
  ifa: "a64564f8-330a-4152-9715-86c6873569bf"
  w: 427
  h: 875
  pxratio: 1.688
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "537"
      version: "36"
    }
    platform {
      brand: "Android"
      version: "12"
    }
    mobile: true
    bitness: "64"
    model: "V2125"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    metereddata: true
    chargelevel: 0.4099999964237213
    charging: false
    diskspace: 4000
    audioout: AUDIO_SPEAKER
    ifa_type: "aaid"
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  id: "743cB1sI4151248Ecs68w1qj5o8"
  [com.google.doubleclick.user] {
    session {
      duration: 780
      depth: 133
      requestssinceappopen: 133
      priorclicks: 0
    }
    idage: 38880000
  }
}
at: FIRST_PRICE
tmax: 300
cur: "USD"
bcat: "3"
bcat: "4"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-a-v1.1.1"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_DEVICE
  privacy_treatments {
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "linearity": 1,
        "maxduration": 45,
        "w": 427,
        "h": 875,
        "startdelay": 0,
        "playbackmethod": [
          3
        ],
        "pos": 7,
        "companionad": [
          {
            "w": 427,
            "h": 875,
            "mimes": [
              "text/css",
              "image/png"
            ],
            "format": [
              {
                "w": 427,
                "h": 875
              }
            ],
            "vcm": 1
          }
        ],
        "api": [
          3,
          5
        ],
        "companiontype": [
          1,
          2
        ],
        "protocols": [
          2,
          3
        ],
        "skip": 0,
        "placement": 5,
        "playbackend": 1,
        "maxseq": 2,
        "poddur": 40,
        "plcmt": 3,
        "ext": {
          "inferredplcmt": 3
        }
      },
      "displaymanager": "NextGenGoogleMobileAds-Android",
      "displaymanagerver": "1.1.1",
      "instl": 1,
      "tagid": "9072476229",
      "bidfloor": 0.01,
      "bidfloorcur": "USD",
      "secure": 1,
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.14426924288272858,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.42162033915519714,
          "vendor": "EXCHANGE"
        }
      ],
      "rwdd": 1,
      "ext": {
        "billing_id": [
          "61170857882"
        ],
        "publisher_settings_list_id": [
          "3465533324312870629",
          "7019420503499415173"
        ],
        "allowed_vendor_type": [
          0,
          237
        ],
        "ampad": 2,
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "jsver": "test-sdk_123456789",
        "highengagement": 1
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "272",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3006071972218254",
      "ext": {
        "country": "BD"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "userrating": "3.7",
      "language": "en"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "IND",
      "type": 2,
      "utcoffset": 330,
      "accuracy": 7811,
      "ext": {
        "geo_criteria_id": 9197649
      }
    },
    "ipv6": "2409:408c:2892::",
    "carrier": "70227",
    "language": "en",
    "make": "Vivo",
    "model": "V2125",
    "os": "android",
    "osv": "12",
    "connectiontype": 6,
    "devicetype": 4,
    "ifa": "a64564f8-330a-4152-9715-86c6873569bf",
    "w": 427,
    "h": 875,
    "pxratio": 1.688,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "537",
            "36"
          ]
        }
      ],
      "platform": {
        "brand": "Android",
        "version": [
          "12"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "V2125",
      "source": 3
    },
    "ext": {
      "metereddata": 1,
      "chargelevel": 0.41,
      "charging": 0,
      "diskspace": 4000,
      "audioout": 1,
      "ifa_type": "aaid",
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "id": "743cB1sI4151248Ecs68w1qj5o8",
    "ext": {
      "session": {
        "duration": 780,
        "depth": 133,
        "requestssinceappopen": 133,
        "priorclicks": 0
      },
      "idage": 38880000
    }
  },
  "at": 1,
  "tmax": 300,
  "cur": [
    "USD"
  ],
  "bcat": [
    "3",
    "4"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-a-v1.1.1"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 3,
    "privacy_treatments": {
      "allow_user_data_collection": 1
    }
  }
}
```

### App native

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_mobile_app_native_ad_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  displaymanager: "GoogleMobileAds-iOS"
  displaymanagerver: "13.9.0"
  tagid: "4721765816"
  bidfloor: 0.69
  bidfloorcur: "USD"
  secure: true
  native {
    ver: "1.2"
    api: MRAID_1
    api: MRAID_2
    request_native {
      ver: "1.2"
      assets {
        id: 1
        required: true
        title {
          len: 50
        }
      }
      assets {
        id: 2
        required: true
        data {
          type: DESC
          len: 150
        }
      }
      assets {
        id: 3
        data {
          type: CTATEXT
          len: 15
        }
      }
      assets {
        id: 4
        required: true
        img {
          type: MAIN
          wmin: 1200
          hmin: 627
        }
      }
      assets {
        id: 5
        required: true
        img {
          type: ICON
          wmin: 100
          hmin: 100
        }
      }
      assets {
        id: 6
        data {
          type: RATING
          len: 5
        }
      }
      assets {
        id: 7
        data {
          type: PRICE
          len: 15
        }
      }
      eventtrackers {
        event: IMPRESSION
        methods: IMG
      }
      eventtrackers {
        event: OMID
        methods: JS
      }
      privacy: true
    }
  }
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.0010945964604616165
    vendor: "EXCHANGE"
  }
  metric {
    type: "video_completion_rate"
    value: 0.014000949449837208
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 94483515670
    publisher_settings_list_id: 3092446200668875547
    publisher_settings_list_id: 5367266321274470711
    allowed_vendor_type: 0
    allowed_vendor_type: 331
    ampad: AMP_AD_NOT_ALLOWED
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    skadn {
      sourceapp: "com.google.testapp"
      skadnetids: "7dRyc70v"
      versions: "2.0"
      versions: "2.1"
      fidelities: STOREKIT_RENDERED_ADS
      fidelities: VIEW_THROUGH_ADS
    }
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    jsver: "test-sdk_123456789"
  }
}
app {
  name: "Test App"
  ver: "15.3.6"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-3006071972218254"
    [com.google.doubleclick.publisher] {
      country: "JP"
    }
  }
  content {
    url: "https://www.google.com"
    language: "ja"
  }
  storeurl: "https://www.google.com"
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "JPN"
    region: "JP-17"
    city: "Komatsu"
    type: IP
    utcoffset: 540
    accuracy: 10872
    [com.google.doubleclick.geo] {
      geo_criteria_id: 1009371
    }
  }
  ipv6: "2400:2653:f263::"
  language: "ja"
  make: "Apple"
  model: "iPhone18,3"
  os: "iOS"
  osv: "26.5.2"
  connectiontype: WIFI
  devicetype: HIGHEND_PHONE
  hwv: "iPhone18,3"
  w: 402
  h: 874
  pxratio: 3.0
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "605"
      version: "1"
    }
    platform {
      brand: "iPhone"
      version: "26"
      version: "5"
    }
    mobile: true
    bitness: "64"
    model: "iPhone"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    atts: 2
    audioout: AUDIO_SPEAKER
    ifv: "792c0b4e-9c08-4a29-8ac4-c0134dd4df27"
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  [com.google.doubleclick.user] {
    session {
      duration: 7
      depth: 36
      requestssinceappopen: 36
      priorclicks: 0
    }
  }
}
at: FIRST_PRICE
tmax: 300
cur: "USD"
bcat: "32"
bcat: "33"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-i-v13.9.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_APP
  privacy_treatments {
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "displaymanager": "GoogleMobileAds-iOS",
      "displaymanagerver": "13.9.0",
      "tagid": "4721765816",
      "bidfloor": 0.69,
      "bidfloorcur": "USD",
      "secure": 1,
      "native": {
        "ver": "1.2",
        "api": [
          3,
          5
        ],
        "request": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":50}},{\"id\":2,\"required\":1,\"data\":{\"type\":2,\"len\":150}},{\"id\":3,\"data\":{\"type\":12,\"len\":15}},{\"id\":4,\"required\":1,\"img\":{\"type\":3,\"wmin\":1200,\"hmin\":627}},{\"id\":5,\"required\":1,\"img\":{\"type\":1,\"wmin\":100,\"hmin\":100}},{\"id\":6,\"data\":{\"type\":3,\"len\":5}},{\"id\":7,\"data\":{\"type\":6,\"len\":15}}],\"eventtrackers\":[{\"event\":1,\"methods\":[1]},{\"event\":555,\"methods\":[2]}],\"privacy\":1}"
      },
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0010945964604616165,
          "vendor": "EXCHANGE"
        },
        {
          "type": "video_completion_rate",
          "value": 0.014000949449837208,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "94483515670"
        ],
        "publisher_settings_list_id": [
          "3092446200668875547",
          "5367266321274470711"
        ],
        "allowed_vendor_type": [
          0,
          331
        ],
        "ampad": 2,
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "skadn": {
          "sourceapp": "com.google.testapp",
          "skadnetids": [
            "7dRyc70v"
          ],
          "versions": [
            "2.0",
            "2.1"
          ],
          "fidelities": [
            1,
            0
          ]
        },
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "jsver": "test-sdk_123456789"
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "15.3.6",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3006071972218254",
      "ext": {
        "country": "JP"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "language": "ja"
    },
    "storeurl": "https://www.google.com"
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "JPN",
      "region": "JP-17",
      "city": "Komatsu",
      "type": 2,
      "utcoffset": 540,
      "accuracy": 10872,
      "ext": {
        "geo_criteria_id": 1009371
      }
    },
    "ipv6": "2400:2653:f263::",
    "language": "ja",
    "make": "Apple",
    "model": "iPhone18,3",
    "os": "iOS",
    "osv": "26.5.2",
    "connectiontype": 2,
    "devicetype": 4,
    "hwv": "iPhone18,3",
    "w": 402,
    "h": 874,
    "pxratio": 3.0,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "605",
            "1"
          ]
        }
      ],
      "platform": {
        "brand": "iPhone",
        "version": [
          "26",
          "5"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "iPhone",
      "source": 3
    },
    "ext": {
      "atts": 2,
      "audioout": 1,
      "ifv": "792c0b4e-9c08-4a29-8ac4-c0134dd4df27",
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "ext": {
      "session": {
        "duration": 7,
        "depth": 36,
        "requestssinceappopen": 36,
        "priorclicks": 0
      }
    }
  },
  "at": 1,
  "tmax": 300,
  "cur": [
    "USD"
  ],
  "bcat": [
    "32",
    "33"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-i-v13.9.0"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 4,
    "privacy_treatments": {
      "allow_user_data_collection": 1
    }
  }
}
```

### Web video

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_web_video_ad_request.bin)  

```
id: "xljbvz426ttL3x4FOE2GHI"
imp {
  id: "1"
  video {
    mimes: "video/mp4"
    linearity: LINEAR
    w: 300
    h: 300
    battr: VIDEO_IN_BANNER_USER_INITIATED
    battr: VIDEO_IN_BANNER_AUTO_PLAY
    playbackmethod: ENTER_SOUND_OFF
    pos: BELOW_THE_FOLD
    api: OMID_1
    protocols: VAST_2_0
    protocols: VAST_3_0
    skip: true
    skipafter: 5
    placement: IN_ARTICLE_PLACEMENT
    playbackend: LEAVING_OR_USER
    plcmt: PLCMT_NO_CONTENT_STANDALONE
    [com.google.doubleclick.video] {
      inferredplcmt: PLCMT_NO_CONTENT_STANDALONE
    }
  }
  displaymanager: "GOOGLE"
  tagid: "1052440414"
  bidfloor: 0.02
  bidfloorcur: "USD"
  secure: true
  exp: 3600
  metric {
    type: "click_through_rate"
    value: 0.0008394007454626262
    vendor: "EXCHANGE"
  }
  metric {
    type: "viewability"
    value: 0.16
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 61339160186
    billing_id: 19485139317
    publisher_settings_list_id: 4926395220064122332
    publisher_settings_list_id: 2170079197629701072
    allowed_vendor_type: 0
    ampad: AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED
    buyer_generated_request_data {
      data: "Test Data"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    allowed_restricted_category: 33
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_NETWORK_AND_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    gpid: "/7481295/example.com/homepage/image_top"
    adlocx: 16
    adlocy: 3844
    iframeorigin: IFRAME_ORIGIN_CROSS_DOMAIN
  }
}
site {
  cat: "IAB1-4"
  cat: "IAB11"
  pagecat: "IAB1-4"
  page: "https://www.google.com"
  publisher {
    id: "pub-1111111111111111"
    [com.google.doubleclick.publisher] {
      country: "US"
    }
  }
  content {
    language: "en"
  }
  mobile: true
  cattax: IAB_CONTENT_1_0
  [com.google.doubleclick.site] {
    amp: DIALECT_HTML
    page_visibility: VISIBILITY_STATE_VISIBLE
  }
}
device {
  ua: "OMITTED"
  geo {
    lat: 0.0
    lon: 0.0
    country: "USA"
    region: "TX"
    metro: "641"
    zip: "78213"
    type: IP
    utcoffset: -300
    accuracy: 2497
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9028054
    }
  }
  ipv6: "2600:1700:8e70:a606:997b:b74b:e386:d606"
  language: "en"
  make: "Samsung"
  model: "sm-s901u"
  os: "android"
  osv: "16"
  devicetype: HIGHEND_PHONE
  w: 360
  h: 780
  pxratio: 3.0
  sua {
    browsers {
      brand: "Not:A-Brand"
      version: "8"
      version: "0"
    }
    browsers {
      brand: "Chromium"
      version: "156"
      version: "0"
    }
    platform {
      brand: "Android"
      version: "16"
      version: "0"
    }
    mobile: true
    model: "SM-S901U"
    source: CLIENT_HINTS_HIGH_ENTROPY
  }
  [com.google.doubleclick.device] {
    chargelevel: 0.4000000059604645
    charging: false
    memory: 8192
    scrollposx: 0
    scrollposy: 856
  }
}
user {
  buyeruid: "868R674mhtSh1Q0820Se707969bigg7W"
  customdata: "262F37r207u0H1dgJM3ok893UU0Bv87a50n6N2mNm0353wRr"
  [com.google.doubleclick.user] {
    eids {
      source: "OMITTED_SOURCE"
      uids {
        id: "OMITTED_ID"
      }
    }
  }
}
at: FIRST_PRICE
tmax: 500
cur: "USD"
bcat: "4"
bcat: "5"
regs {
  gpp: "OMITTED"
  gpp_sid: USPV1
  gpp_sid: USNAT
}
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  bid_feedback {
    request_id: "l72n4cr8T4yhC7i3gkl6O2"
    creative_status_code: 80
    event_notification_token {
      payload: "token"
    }
    buyer_creative_id: "test_creative_id_578959"
    minimum_bid_to_win: 3.58
  }
  google_query_id: "ANy-z88L87-64Z116olgj51Z973322723c7h971w813985fd8o3iw2N13ZVX453i2900b23H"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_NONE
  privacy_treatments {
    ip: IP_FULL
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "xljbvz426ttL3x4FOE2GHI",
  "imp": [
    {
      "id": "1",
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "linearity": 1,
        "w": 300,
        "h": 300,
        "battr": [
          7,
          6
        ],
        "playbackmethod": [
          6
        ],
        "pos": 3,
        "api": [
          7
        ],
        "protocols": [
          2,
          3
        ],
        "skip": 1,
        "skipafter": 5,
        "placement": 3,
        "playbackend": 2,
        "plcmt": 4,
        "ext": {
          "inferredplcmt": 4
        }
      },
      "displaymanager": "GOOGLE",
      "tagid": "1052440414",
      "bidfloor": 0.02,
      "bidfloorcur": "USD",
      "secure": 1,
      "exp": 3600,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0008394007454626262,
          "vendor": "EXCHANGE"
        },
        {
          "type": "viewability",
          "value": 0.16,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "61339160186",
          "19485139317"
        ],
        "publisher_settings_list_id": [
          "4926395220064122332",
          "2170079197629701072"
        ],
        "allowed_vendor_type": [
          0
        ],
        "ampad": 3,
        "buyer_generated_request_data": [
          {
            "data": "Test Data"
          }
        ],
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "allowed_restricted_category": [
          33
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 2,
          "publisher_blocks_enforcement": 1
        },
        "gpid": "/7481295/example.com/homepage/image_top",
        "adlocx": 16,
        "adlocy": 3844,
        "iframeorigin": 2
      }
    }
  ],
  "site": {
    "cat": [
      "IAB1-4",
      "IAB11"
    ],
    "pagecat": [
      "IAB1-4"
    ],
    "page": "https://www.google.com",
    "publisher": {
      "id": "pub-1111111111111111",
      "ext": {
        "country": "US"
      }
    },
    "content": {
      "language": "en"
    },
    "mobile": 1,
    "cattax": 1,
    "ext": {
      "amp": 0,
      "page_visibility": 1
    }
  },
  "device": {
    "ua": "OMITTED",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "USA",
      "region": "TX",
      "metro": "641",
      "zip": "78213",
      "type": 2,
      "utcoffset": -300,
      "accuracy": 2497,
      "ext": {
        "geo_criteria_id": 9028054
      }
    },
    "ipv6": "2600:1700:8e70:a606:997b:b74b:e386:d606",
    "language": "en",
    "make": "Samsung",
    "model": "sm-s901u",
    "os": "android",
    "osv": "16",
    "devicetype": 4,
    "w": 360,
    "h": 780,
    "pxratio": 3.0,
    "sua": {
      "browsers": [
        {
          "brand": "Not:A-Brand",
          "version": [
            "8",
            "0"
          ]
        },
        {
          "brand": "Chromium",
          "version": [
            "156",
            "0"
          ]
        }
      ],
      "platform": {
        "brand": "Android",
        "version": [
          "16",
          "0"
        ]
      },
      "mobile": 1,
      "model": "SM-S901U",
      "source": 2
    },
    "ext": {
      "chargelevel": 0.4,
      "charging": 0,
      "memory": 8192,
      "scrollposx": 0,
      "scrollposy": 856
    }
  },
  "user": {
    "buyeruid": "868R674mhtSh1Q0820Se707969bigg7W",
    "customdata": "262F37r207u0H1dgJM3ok893UU0Bv87a50n6N2mNm0353wRr",
    "ext": {
      "eids": [
        {
          "source": "OMITTED_SOURCE",
          "uids": [
            {
              "id": "OMITTED_ID"
            }
          ]
        }
      ]
    }
  },
  "at": 1,
  "tmax": 500,
  "cur": [
    "USD"
  ],
  "bcat": [
    "4",
    "5"
  ],
  "regs": {
    "gpp": "OMITTED",
    "gpp_sid": [
      6,
      7
    ]
  },
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        },
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    }
  },
  "cattax": 500,
  "ext": {
    "bid_feedback": [
      {
        "request_id": "l72n4cr8T4yhC7i3gkl6O2",
        "creative_status_code": 80,
        "event_notification_token": {
          "payload": "token"
        },
        "buyer_creative_id": "test_creative_id_578959",
        "minimum_bid_to_win": 3.58
      }
    ],
    "google_query_id": "ANy-z88L87-64Z116olgj51Z973322723c7h971w813985fd8o3iw2N13ZVX453i2900b23H",
    "fcap_scope": 1,
    "privacy_treatments": {
      "ip": 1,
      "allow_user_data_collection": 1
    }
  }
}
```

### Mobile web banner for exchange bidder

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_eb_callout_request.bin)  

```
id: "a7gs668pOD71593174WD18"
imp {
  id: "1"
  banner {
    w: 970
    h: 90
    pos: ABOVE_THE_FOLD
    format {
      w: 970
      h: 90
    }
    format {
      w: 950
      h: 90
    }
    [com.google.doubleclick.banner_ext] {
      flexslot {
        wmin: 728
        wmax: 970
        hmin: 90
        hmax: 90
      }
    }
  }
  tagid: "3889241961"
  bidfloor: 0.01
  bidfloorcur: "USD"
  secure: true
  exp: 3600
  metric {
    type: "click_through_rate"
    value: 0.0011694123968482018
    vendor: "EXCHANGE"
  }
  metric {
    type: "viewability"
    value: 0.06
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 79775275767
    publisher_settings_list_id: 8825410584249136395
    publisher_settings_list_id: 4368309502124126995
    allowed_vendor_type: 0
    dfp_ad_unit_code: "/9908766/google/test"
    ampad: AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    excluded_creatives {
      buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
    }
    open_bidding {
      is_open_bidding: true
    }
    allowed_restricted_category: 32
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    adlocx: 283
    adlocy: 1109
    iframeorigin: IFRAME_ORIGIN_CROSS_DOMAIN
  }
}
site {
  cat: "IAB1-1"
  cat: "IAB12"
  pagecat: "IAB11"
  pagecat: "IAB12"
  page: "https://www.google.com"
  publisher {
    id: "pub-1111111111111111"
    [com.google.doubleclick.publisher] {
      country: "BG"
    }
  }
  content {
    language: "tr"
  }
  cattax: IAB_CONTENT_1_0
  [com.google.doubleclick.site] {
    amp: DIALECT_HTML
    page_visibility: VISIBILITY_STATE_HIDDEN
    ntype: NAVIGATION_TYPE_RELOAD
  }
}
device {
  ua: "OMITTED"
  ip: "212.174.9.0"
  geo {
    lat: 0.0
    lon: 0.0
    country: "TUR"
    region: "TR-34"
    city: "Istanbul"
    zip: "34149"
    type: IP
    utcoffset: 180
    accuracy: 1973
    [com.google.doubleclick.geo] {
      geo_criteria_id: 9073387
    }
  }
  language: "tr"
  os: "Windows"
  devicetype: PERSONAL_COMPUTER
  w: 1536
  h: 864
  pxratio: 1.25
  sua {
    browsers {
      brand: "Google Chrome"
      version: "155"
      version: "0"
    }
    browsers {
      brand: "Chromium"
      version: "155"
      version: "0"
    }
    platform {
      brand: "Windows"
      version: "10"
      version: "0"
    }
    mobile: false
    architecture: "x86"
    bitness: "64"
    source: CLIENT_HINTS_HIGH_ENTROPY
  }
  [com.google.doubleclick.device] {
    memory: 8192
    scrollposx: 0
    scrollposy: 500
  }
}
user {
  id: "0i00L70sOg40C0338Oy67QTn970"
  buyeruid: "7419Fp33ZjKqfO762L6A1260sE283I22"
  customdata: "dk9A1326Z0gHs1816L4p6b8tb46zS520b3T34Q1j1uKF26k5"
  [com.google.doubleclick.user] {
    idage: 7776000
  }
}
at: FIRST_PRICE
tmax: 350
cur: "USD"
bcat: "IAB7-39"
bcat: "IAB7-44"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
}
cattax: IAB_CONTENT_1_0
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_BROWSER
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "a7gs668pOD71593174WD18",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 970,
        "h": 90,
        "pos": 1,
        "format": [
          {
            "w": 970,
            "h": 90
          },
          {
            "w": 950,
            "h": 90
          }
        ],
        "ext": {
          "flexslot": {
            "wmin": 728,
            "wmax": 970,
            "hmin": 90,
            "hmax": 90
          }
        }
      },
      "tagid": "3889241961",
      "bidfloor": 0.01,
      "bidfloorcur": "USD",
      "secure": 1,
      "exp": 3600,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0011694123968482018,
          "vendor": "EXCHANGE"
        },
        {
          "type": "viewability",
          "value": 0.06,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "79775275767"
        ],
        "publisher_settings_list_id": [
          "8825410584249136395",
          "4368309502124126995"
        ],
        "allowed_vendor_type": [
          0
        ],
        "dfp_ad_unit_code": "/9908766/google/test",
        "ampad": 3,
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "open_bidding": {
          "is_open_bidding": 1
        },
        "allowed_restricted_category": [
          32
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 1
        },
        "adlocx": 283,
        "adlocy": 1109,
        "iframeorigin": 2
      }
    }
  ],
  "site": {
    "cat": [
      "IAB1-1",
      "IAB12"
    ],
    "pagecat": [
      "IAB11",
      "IAB12"
    ],
    "page": "https://www.google.com",
    "publisher": {
      "id": "pub-1111111111111111",
      "ext": {
        "country": "BG"
      }
    },
    "content": {
      "language": "tr"
    },
    "cattax": 1,
    "ext": {
      "amp": 0,
      "page_visibility": 2,
      "ntype": 2
    }
  },
  "device": {
    "ua": "OMITTED",
    "ip": "212.174.9.0",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "TUR",
      "region": "TR-34",
      "city": "Istanbul",
      "zip": "34149",
      "type": 2,
      "utcoffset": 180,
      "accuracy": 1973,
      "ext": {
        "geo_criteria_id": 9073387
      }
    },
    "language": "tr",
    "os": "Windows",
    "devicetype": 2,
    "w": 1536,
    "h": 864,
    "pxratio": 1.25,
    "sua": {
      "browsers": [
        {
          "brand": "Google Chrome",
          "version": [
            "155",
            "0"
          ]
        },
        {
          "brand": "Chromium",
          "version": [
            "155",
            "0"
          ]
        }
      ],
      "platform": {
        "brand": "Windows",
        "version": [
          "10",
          "0"
        ]
      },
      "mobile": 0,
      "architecture": "x86",
      "bitness": "64",
      "source": 2
    },
    "ext": {
      "memory": 8192,
      "scrollposx": 0,
      "scrollposy": 500
    }
  },
  "user": {
    "id": "0i00L70sOg40C0338Oy67QTn970",
    "buyeruid": "7419Fp33ZjKqfO762L6A1260sE283I22",
    "customdata": "dk9A1326Z0gHs1816L4p6b8tb46zS520b3T34Q1j1uKF26k5",
    "ext": {
      "idage": 7776000
    }
  },
  "at": 1,
  "tmax": 350,
  "cur": [
    "USD"
  ],
  "bcat": [
    "IAB7-39",
    "IAB7-44"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    }
  },
  "cattax": 1,
  "ext": {
    "google_query_id": "ANy-zL23dM-K888C926iz54pL02I4wa4sXX04N9233701g8h787afvX78G815DcjFi573537",
    "fcap_scope": 2
  }
}
```

### Multiformat Native and Video

### OpenRTB Protobuf

#### Show me the example

[Serialized request](https://developers.google.com/authorized-buyers/rtb/data/request-response/openrtb_protobuf_multiformat_video_and_native_ad_request.bin)  

```
id: "S2qA4hJS1n221Vw73up012"
imp {
  id: "1"
  video {
    mimes: "video/mp4"
    linearity: LINEAR
    w: 300
    h: 600
    battr: VIDEO_IN_BANNER_AUTO_PLAY
    battr: VIDEO_IN_BANNER_USER_INITIATED
    playbackmethod: ENTER_SOUND_OFF
    pos: ABOVE_THE_FOLD
    api: OMID_1
    protocols: VAST_2_0
    protocols: VAST_3_0
    skip: true
    skipafter: 5
    placement: IN_ARTICLE_PLACEMENT
    playbackend: LEAVING_OR_USER
    plcmt: PLCMT_NO_CONTENT_STANDALONE
    [com.google.doubleclick.video] {
      inferredplcmt: PLCMT_NO_CONTENT_STANDALONE
      embeddedoffsite: true
    }
  }
  displaymanager: "GOOGLE"
  tagid: "7858457472"
  bidfloor: 1.0
  bidfloorcur: "JPY"
  secure: true
  native {
    ver: "1.2"
    battr: VIDEO_IN_BANNER_USER_INITIATED
    battr: VIDEO_IN_BANNER_AUTO_PLAY
    request_native {
      ver: "1.2"
      assets {
        id: 1
        required: true
        title {
          len: 50
        }
      }
      assets {
        id: 2
        data {
          type: CTATEXT
          len: 15
        }
      }
      assets {
        id: 3
        required: true
        data {
          type: SPONSORED
          len: 25
        }
      }
      assets {
        id: 4
        required: true
        img {
          type: MAIN
          wmin: 1200
          hmin: 627
        }
      }
      assets {
        id: 5
        img {
          type: ICON
        }
      }
      eventtrackers {
        event: IMPRESSION
        methods: IMG
      }
      privacy: true
      [com.google.doubleclick.native_ext] {
        style_height: 250
        style_width: 300
        pos: ABOVE_THE_FOLD
      }
    }
  }
  exp: 3600
  metric {
    type: "click_through_rate"
    value: 0.0001810694084269926
    vendor: "EXCHANGE"
  }
  metric {
    type: "viewability"
    value: 0.89
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 89729918050
    billing_id: 53896910998
    publisher_settings_list_id: 6828753821632622411
    publisher_settings_list_id: 9406265749274240546
    allowed_vendor_type: 0
    ampad: AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED
    buyer_generated_request_data {
      data: "Test Data"
    }
    buyer_generated_request_data {
      data: "Test Data"
    }
    allowed_restricted_category: 32
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_NETWORK_AND_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    adlocx: 45
    adlocy: 352
    iframeorigin: IFRAME_ORIGIN_SAME_DOMAIN
  }
}
site {
  pagecat: "IAB5"
  pagecat: "IAB5-1"
  page: "https://www.google.com"
  publisher {
    id: "pub-1111111111111111"
    [com.google.doubleclick.publisher] {
      country: "JP"
    }
  }
  content {
    language: "ja"
  }
  mobile: true
  cattax: IAB_CONTENT_1_0
  [com.google.doubleclick.site] {
    amp: DIALECT_HTML
    page_visibility: VISIBILITY_STATE_VISIBLE
  }
}
device {
  ua: "OMITTED"
  ip: "122.152.77.121"
  geo {
    lat: 0.0
    lon: 0.0
    country: "JPN"
    region: "JP-44"
    city: "Oita"
    type: IP
    utcoffset: 540
    accuracy: 12627
    [com.google.doubleclick.geo] {
      geo_criteria_id: 1009769
    }
  }
  language: "ja"
  make: "Apple"
  model: "iphone"
  os: "iOS"
  osv: "18.7"
  devicetype: HIGHEND_PHONE
  w: 390
  h: 844
  pxratio: 3.0
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "605"
      version: "1"
    }
    platform {
      brand: "iPhone"
      version: "18"
      version: "7"
    }
    mobile: true
    bitness: "64"
    model: "iPhone"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    scrollposx: 0
    scrollposy: 0
  }
}
user {
  eids {
    source: "doubleclick.net"
    uids {
      id: "OMITTED_1P_WEB_ID"
      [com.google.doubleclick.uids] {
        stype: "sco"
      }
    }
  }
  [com.google.doubleclick.user] {
    eids {
      source: "OMITTED_SOURCE"
      uids {
        id: "OMITTED_ID"
      }
    }
    eids {
      source: "OMITTED_SOURCE"
      uids {
        id: "OMITTED_ID"
      }
    }
  }
}
at: FIRST_PRICE
tmax: 350
cur: "JPY"
cur: "USD"
bcat: "3"
bcat: "4"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
}
cattax: GOOGLE_CATEGORIES
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-z07rzd-08kr3H9d1ctxT230uFK1H736A292Mr9P723t3R3v3tm00N97hW5qy405ww4T8"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_NONE
  privacy_treatments {
    ip: IP_FULL
    allow_user_data_collection: true
  }
}
```

### OpenRTB JSON

#### Show me the example

```
{
  "id": "S2qA4hJS1n221Vw73up012",
  "imp": [
    {
      "id": "1",
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "linearity": 1,
        "w": 300,
        "h": 600,
        "battr": [
          6,
          7
        ],
        "playbackmethod": [
          6
        ],
        "pos": 1,
        "api": [
          7
        ],
        "protocols": [
          2,
          3
        ],
        "skip": 1,
        "skipafter": 5,
        "placement": 3,
        "playbackend": 2,
        "plcmt": 4,
        "ext": {
          "inferredplcmt": 4,
          "embeddedoffsite": 1
        }
      },
      "displaymanager": "GOOGLE",
      "tagid": "7858457472",
      "bidfloor": 1.0,
      "bidfloorcur": "JPY",
      "secure": 1,
      "native": {
        "ver": "1.2",
        "battr": [
          7,
          6
        ],
        "request": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":50}},{\"id\":2,\"data\":{\"type\":12,\"len\":15}},{\"id\":3,\"required\":1,\"data\":{\"type\":1,\"len\":25}},{\"id\":4,\"required\":1,\"img\":{\"type\":3,\"wmin\":1200,\"hmin\":627}},{\"id\":5,\"img\":{\"type\":1}}],\"eventtrackers\":[{\"event\":1,\"methods\":[1]}],\"privacy\":1,\"ext\":{\"style_height\":250,\"style_width\":300,\"pos\":1}}"
      },
      "exp": 3600,
      "metric": [
        {
          "type": "click_through_rate",
          "value": 0.0001810694084269926,
          "vendor": "EXCHANGE"
        },
        {
          "type": "viewability",
          "value": 0.89,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "89729918050",
          "53896910998"
        ],
        "publisher_settings_list_id": [
          "6828753821632622411",
          "9406265749274240546"
        ],
        "allowed_vendor_type": [
          0
        ],
        "ampad": 3,
        "buyer_generated_request_data": [
          {
            "data": "Test Data"
          },
          {
            "data": "Test Data"
          }
        ],
        "allowed_restricted_category": [
          32
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 2,
          "publisher_blocks_enforcement": 1
        },
        "adlocx": 45,
        "adlocy": 352,
        "iframeorigin": 1
      }
    }
  ],
  "site": {
    "pagecat": [
      "IAB5",
      "IAB5-1"
    ],
    "page": "https://www.google.com",
    "publisher": {
      "id": "pub-1111111111111111",
      "ext": {
        "country": "JP"
      }
    },
    "content": {
      "language": "ja"
    },
    "mobile": 1,
    "cattax": 1,
    "ext": {
      "amp": 0,
      "page_visibility": 1
    }
  },
  "device": {
    "ua": "OMITTED",
    "ip": "122.152.77.121",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "JPN",
      "region": "JP-44",
      "city": "Oita",
      "type": 2,
      "utcoffset": 540,
      "accuracy": 12627,
      "ext": {
        "geo_criteria_id": 1009769
      }
    },
    "language": "ja",
    "make": "Apple",
    "model": "iphone",
    "os": "iOS",
    "osv": "18.7",
    "devicetype": 4,
    "w": 390,
    "h": 844,
    "pxratio": 3.0,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "605",
            "1"
          ]
        }
      ],
      "platform": {
        "brand": "iPhone",
        "version": [
          "18",
          "7"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "iPhone",
      "source": 3
    },
    "ext": {
      "scrollposx": 0,
      "scrollposy": 0
    }
  },
  "user": {
    "eids": [
      {
        "source": "doubleclick.net",
        "uids": [
          {
            "id": "OMITTED_1P_WEB_ID",
            "ext": {
              "stype": "sco"
            }
          }
        ]
      }
    ],
    "ext": {
      "eids": [
        {
          "source": "OMITTED_SOURCE",
          "uids": [
            {
              "id": "OMITTED_ID"
            }
          ]
        },
        {
          "source": "OMITTED_SOURCE",
          "uids": [
            {
              "id": "OMITTED_ID"
            }
          ]
        }
      ]
    }
  },
  "at": 1,
  "tmax": 350,
  "cur": [
    "JPY",
    "USD"
  ],
  "bcat": [
    "3",
    "4"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        },
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    }
  },
  "cattax": 500,
  "ext": {
    "google_query_id": "ANy-z07rzd-08kr3H9d1ctxT230uFK1H736A292Mr9P723t3R3v3tm00N97hW5qy405ww4T8",
    "fcap_scope": 1,
    "privacy_treatments": {
      "ip": 1,
      "allow_user_data_collection": 1
    }
  }
}
```