应用处理完 Google 发送的出价请求后,必须构建并发送响应。本指南介绍了如何对应用进行编码以构建响应。
创建 BidResponse 消息
若要提交出价,您的出价应用必须以配置的格式响应包含 Bid 的 BidResponse 出价请求。如果您使用 JSON 格式,则响应必须将 Content-Type 标头设置为 application/json; charset=utf-8,并在正文中包含 JSON BidResponse。如果您使用的是 Protobuf 格式,则应用必须将 Content-Type 标头设置为 application/octet-stream,并在正文中包含序列化的 BidResponse。
如需构建和序列化 Protobuf 格式的 BidResponse,您必须根据 openrtb.proto 和 openrtb-adx.proto 生成并使用 Protobuf 库,这两个库分别以 Protobuf 格式实现标准 OpenRTB BidResponse 字段和 Google 扩展程序。您可以在 Proto 和参考数据 中找到这些信息。
如果您不想针对展示出价,则必须返回空的 HTTP 204 响应。您的应用必须针对每个 BidRequest 返回响应。超时和无法解析的响应会被视为错误,Google 会限制错误率较高的出价工具。
广告素材 ID
您的 BidResponse 通过 BidResponse.seatbid.bid.crid 字段(128 字节限制)指定广告素材。即使是类似的广告素材,如果它们在任何显著特征(包括但不限于尺寸、声明的网址、广告素材属性和供应商类型)方面有所不同,也必须为此字段设置唯一值。换句话说,如果两个广告满足以下任一条件,您必须为其指定不同的广告素材 ID:
看起来或行为方式不同。
渲染到不同的图片。
以不同方式呈现(例如,一个广告包含图片,而另一个广告包含视频)。
在设计应用时,您应决定采用一种系统性的方式来生成标识符,以便与您计划提交的广告素材类型相符。
广告属性
Google 建议您声明广告素材属性,以描述广告的特征和定位,方法是结合使用 BidResponse.seatbid.bid.apis 和 BidResponse.seatbid.bid.attr,或使用 BidResponse.seatbid.bid.ext.attribute 扩展服务。下文介绍了如何声明属性:
VPAID
将 BidResponse.seatbid.bid.apis 设置为 VPAID_1 或 VPAID_2。对于 JSON 格式,此值可以分别设置为 1 或 2。
MRAID
将 BidResponse.seatbid.bid.apis 设置为 MRAID_1 或 3(对于 JSON 格式)。
SIZELESS
将 BidResponse.seatbid.bid.attr 设置为 RESPONSIVE 或 18(对于 JSON 格式)。
PLAYABLE
通过将 BidResponse.seatbid.bid.attr 设置为 USER_INTERACTIVE(对于 JSON 格式)或 13 来指明这一点。
如需了解如何获取有关检测到的广告素材属性的反馈,请参阅广告素材资源 。
公开出价字段
参与公开出价的广告交易平台和广告联盟出价方发送的出价响应与参与标准实时出价的 Authorized Buyers 买方发送的出价响应类似。参与公开出价的客户可以指定少量其他字段,并且一些现有字段可能有其他用途。这些情况包括:
字段
详细信息
BidResponse.imp.pmp.deals.id
与相应出价关联并向发布商报告的来自广告交易平台命名空间的交易 ID。
注意 :此字段仅发送给封闭式 Beta 版计划参与者。
BidResponse.seatbid.bid.ext.exchange_deal_type
向发布商报告的交易类型,会影响交易在竞价中的处理方式。
注意 :此字段仅发送给封闭式 Beta 版计划参与者。
BidResponse.seatbid.bid.ext.third_party_buyer_token
如果作为公开出价工具的广告交易平台是中介,则用于标识最终第三方买方信息的令牌。此值从第三方买方处获取,必须在出价响应中原封不动地传递给 Google。
建议
出价响应示例
以下示例以人类可读的格式展示了 Protobuf 和 JSON 请求。
OpenRTB Protobuf
显示示例
序列化响应
id : "1lY5z94y6Bz404R9H0ZN38"
seatbid {
bid {
id : "n1KLe2Q26Xyu431W1PU"
impid : "1"
price : 1.0575798749923706
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
crid : "test_creative_id_666097"
dealid : "0"
w : 339
h : 53
burl : "https://test.com/imp?id=123456"
[ com . google . doubleclick . bid ] {
event_notification_token {
payload : "token"
}
billing_id : 86548870602
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 7
}
OpenRTB JSON
显示示例
{
"id" : "1lY5z94y6Bz404R9H0ZN38" ,
"seatbid" : [
{
"bid" : [
{
"id" : "n1KLe2Q26Xyu431W1PU" ,
"impid" : "1" ,
"price" : 1.0575798749923706 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"crid" : "test_creative_id_666097" ,
"dealid" : "0" ,
"w" : 339 ,
"h" : 53 ,
"burl" : "https://test.com/imp?id=123456" ,
"ext" : {
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "86548870602" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
}
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 7
}
}
重要提示 :示例中所示的 Protobuf 消息在此处以人类可读的文本形式表示。不过,消息在网络上传输的方式并非如此。使用 OpenRTB Protobuf 格式时,系统只会接受序列化的 BidResponse 消息。
您可以使用以下 C++ 代码创建并序列化 BidResponse 消息:
BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
// respond to the POST with post_response as the content
} else {
// return an error to the POST
}
指定广告素材
您的出价响应会指定在您的出价胜出时要投放的广告素材。您的出价必须包含一种受支持的广告格式(AMP、视频、原生)。在此示例中,我们使用 html_snippet 字段指定广告素材。
或者,您也可以根据广告格式,使用以下字段之一 来指定广告素材:
SDK 呈现的广告
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
视频
BidResponse.seatbid.bid.adm
原生
BidResponse.seatbid.bid.adm_native
使用 BidResponse.seatbid.bid.adm 字段中的 HTML 代码段指定托管在您自己的服务器上的广告。该代码段包含在插入网页的 iFrame 中,因此在加载网页时,系统会检索并呈现广告。您必须精心设计 HTML 代码段,以便广告(横幅广告或插页式广告)在 iframe 中以合适的尺寸正确呈现,并与您竞价的广告位的尺寸相符。
此外,在以下情况下,出价响应中声明的广告尺寸必须与出价请求中的某个尺寸组合完全一致:
广告是常规横幅广告(而非视频广告、原生广告或插页式广告)。
出价方已在出价响应中声明了尺寸。如果请求中包含多个尺寸,则必须声明尺寸。
插页式广告除外。对于插页式广告,宽度必须至少为屏幕宽度的 50%,高度必须至少为屏幕高度的 40%。
您可以使用任何可正确呈现的有效 HTML 代码指定 HTML 代码段广告素材,但请注意创建 BidResponse 消息 部分中有关指定 crid 字段的限制。
此功能的一种用途是将额外信息放入从服务器提取的网址的实参中,作为渲染广告的一部分。这样,您就可以将有关展示的任意数据传递回自己的服务器。
出价响应中返回的 HTML 代码段的大多数政策与第三方广告的政策相同。如需了解详情,请参阅《Authorized Buyers 计划指南》 《第三方广告投放要求》 和在广告中声明点击后到达网址 。
指定宏
宏是嵌入到某些包含网址的出价响应字段中的格式化文本,在广告投放时会被替换为相关值。例如,如果您的胜出出价包含 HTML 代码段广告素材中的 AUCTION_PRICE 宏,并且该广告素材包含在您的出价中,则该宏会被替换为一个值,您可以解密该值,以确定您在竞价中为相应展示支付的金额。
您可以在以下字段中添加宏:
BidResponse.seatbid.bid.adm
宏支持 HTML 代码段、原生广告、视频网址和视频 VAST XML 格式。
BidResponse.seatbid.bid.adm_native.eventtrackers.url
BidResponse.seatbid.bid.adm_native.imptrackers
BidResponse.seatbid.bid.ext.amp_ad_url
AMP 广告素材仅支持 Google 特有的 WINNING_PRICE 和 WINNING_PRICE_ESC 宏。
BidResponse.seatbid.bid.burl
BidResponse.seatbid.bid.ext.impression_tracking_url
如果您需要多个结算网址,请使用此属性,而不是 BidResponse.seatbid.bid.burl。
例如,您可以在用于提取广告素材的网址中嵌入 ${MACRO},从而将宏作为 HTML 代码段的一部分包含在内,其中 MACRO 是 OpenRTB 规范 中描述的受支持的宏之一。
Google 宏
除了 OpenRTB 规范中列出的宏之外,Google 还支持其他宏。这些宏的格式不同,如果嵌入到网址中,则会显示为 %%MACRO%%。下表介绍了这些宏:
宏
说明
ADVERTISING_IDENTIFIER
允许买方在展示呈现时接收 iOS IDFA 或 Android 的广告 ID。
如需了解详情,请参阅解密广告客户标识符 。
CACHEBUSTER
随机无符号四字节整数的字符串表示形式。
CLICK_URL_UNESC
相应广告的未转义点击网址。在代码段中,第三方点击跟踪网址的转义版本应直接位于宏之后。
例如,如果第三方点击跟踪网址为 http://my.adserver.com/some/path/handleclick?click=clk,则可以使用以下代码,其中宏调用后跟的是第三方点击跟踪网址的单次转义版本:
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
在广告投放时,此宏会展开为:
<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
该网址会先向 Google 注册点击,然后再重定向到第三方点击跟踪网址。
CLICK_URL_ESC
相应广告的转义点击网址。如果您需要先将值传递到另一个随后会返回重定向的服务器,请使用此宏而非 CLICK_URL_UNESC。
例如,以下代码可用于 HTML 代码段:
<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>
在广告投放时,此宏会展开为:
<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>
这会将点击注册到 my.adserver.com,然后 my.adserver.com 将负责重定向到 google_click_url 参数中传递的网址。这假设 my.adserver.com 会对 google_click_url 参数进行转义。
您可以在 %%CLICK_URL_ESC%% 后面附加双重转义的网址。在 my.adserver.com 完成取消转义后,附加到 google_click_url 的网址将只经过一次转义。当提取 google_click_url 时,它会再次进行转义,然后重定向。
CLICK_URL_ESC_ESC
广告的经过双重转义的网址。如果您需要先将值传递到另一个随后会返回重定向的服务器,请使用此宏而非 CLICK_URL_UNESC。
例如,以下代码可用于 HTML 代码段:
<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>
在广告投放时,此宏会展开为:
<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME
如果出价请求不需要 SSL,则扩展为 http:;如果出价请求需要 SSL,则扩展为 https:。
SITE
内容网址的域名(经过了网址转义)或匿名广告资源的匿名 ID。
SITE_URL
已弃用。已替换为提供相同功能的 SITE 宏。
TZ_OFFSET
时区偏移量。
VERIFICATION
生产环境中的不同值,以及在验证流水线中扫描广告素材时的不同值。格式为:
%%?VERIFICATION:true-val:false-val%%,其中除宏之外的任何值均可用于 true-val 和 false-val,包括空字符串。对于公开出价,我们建议广告交易平台使用此宏;一旦使用,需求方平台就不需要进行更改。
例如,如果广告素材包含 %%?VERIFICATION:-1:5000%%,则在投放时,文字替换结果为 5000;在验证流水线中,文字替换结果为 -1。这是为了帮助区分这两组 ping。
WINNING_PRICE
编码格式的展示费用(即 CPI,而不是每千次展示费用),以账号币种的百万分之一表示。例如,以 5 美元赢得的每千次展示费用出价相当于 5 百万个每千次展示费用出价宏,或者 5000 个 CPI 宏。在这种情况下,WINNING_PRICE 的解码值将为 5,000。
胜出价格是以 CPI 指定的。
如需解析此宏,您需要实现一个可解密价格确认信息的应用。如需了解详情,请参阅解密价格确认 页面。
WINNING_PRICE_ESC
经过网址转义的 WINNING_PRICE。
Google 要求您在第三方投放的广告的广告素材中使用 CLICK_URL_UNESC 或 CLICK_URL_ESC 宏。Google 使用 CLICK_URL 宏进行点击跟踪。
宏中的网址转义使用以下方案:
空格字符替换为加号 (+)。
字母数字字符(0-9、a-z、A-Z)以及集合 !()*,-./:_~ 中的字符保持不变。
所有其他字符都会替换为 %XX,其中 XX 是表示相应字符的十六进制数字。
发布商限制和要求
出价请求包含有关发布商在竞价中对广告素材施加的各种限制和要求的信息。
BidRequest.bcat
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
实际上,此值将始终设置为 true,因为 Google 要求所有广告素材都支持 SSL。
BidRequest.imp.{audio/banner/native/video}
BidRequest.imp.{audio/banner/native/video}.api
BidRequest.imp.{audio/banner/native/video}.battr
BidRequest.imp.{audio/banner/video}.mimes
绝不使用包含受限功能的广告出价。对于允许的功能(例如供应商类型),仅当广告的供应商类型位于 BidRequest 的 allowed_vendor_type 列表中时,才返回该广告。出价中应仅包含出价请求中通过填充 BidRequest.imp.banner 等字段指定的广告格式。如需了解详情,请参阅 BidRequest protocol buffer 定义中这些字段的注释。
如果 BidResponse 中返回了广告,您必须在 BidResponse 中准确设置 BidResponse.seatbid.bid.attr、BidResponse.seatbid.bid.cat 以及 BidResponse.seatbid.bid.adomain 或 BidResponse.seatbid.bid.adm_native.link.url 字段。如果广告的这些字段有多个适用值,则您必须添加每个值。如需了解详情,请参阅 BidResponse 协议缓冲区定义中这些字段的注释。
如果响应未设置这些字段,则会被舍弃。
开放式衡量
借助 Open Measurement,您可以指定第三方供应商,以便他们为在移动应用环境中投放的广告提供独立的衡量和验证服务。
支持的广告格式包括视频广告、横幅广告和插页式广告。如需详细了解如何在包含这些格式的出价响应中使用开放式衡量,请参阅开放式衡量 SDK 帮助中心文章。
出价响应示例
以下部分展示了不同广告类型的出价响应示例。
注意 :Protobuf 示例包含指向类似序列化出价响应的下载链接。不能保证它们完全相同。
应用横幅广告
OpenRTB Protobuf
显示示例
序列化响应
id : "4308k26S0C36XQ2z1dIo99"
seatbid {
bid {
id : "y2OcJw5j213rO95Gz78"
impid : "1"
price : 18.360865389304116
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
crid : "test_creative_id_391487"
dealid : "1"
w : 390
h : 60
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
ad_choices_destination_url : "https://test.com/preferences"
billing_id : 82364411103
skadn {
version : "4.0"
network : "cF58w81X"
itunesitem : "788729094"
sourceapp : "1422994973"
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "017e597c-3c7d-4a44-afeb-41cd9a17066f"
timestamp : "1757235407882"
signature : "11iF1L96q2cw8tu790p301c10530ogr7h250k1P9pLxqcJ2qe37klG8xB3M592YbpafQ9861493838C521XA6AEF4A40DK8X"
}
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "017e597c-3c7d-4a44-afeb-41cd9a17066f"
timestamp : "1757235407882"
signature : "f67L3C138Y6XB7940141011Pd58AZbdBk9Xo1Mlf1973706DsB5808ILLKumU2ic9fr72b9bSs3CD25CCZo8DJB65JB0615L"
}
sourceidentifier : "5507"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
clickurl : "example.com"
}
}
seat : "2542:1534:245840"
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 3
}
OpenRTB JSON
显示示例
{
"id" : "4308k26S0C36XQ2z1dIo99" ,
"seatbid" : [
{
"bid" : [
{
"id" : "y2OcJw5j213rO95Gz78" ,
"impid" : "1" ,
"price" : 18.360865389304116 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" ,
"crid" : "test_creative_id_391487" ,
"dealid" : "1" ,
"w" : 390 ,
"h" : 60 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"ad_choices_destination_url" : "https://test.com/preferences" ,
"billing_id" : "82364411103" ,
"skadn" : {
"version" : "4.0" ,
"network" : "cF58w81X" ,
"itunesitem" : "788729094" ,
"sourceapp" : "1422994973" ,
"fidelities" : [
{
"fidelity" : 0 ,
"nonce" : "017e597c-3c7d-4a44-afeb-41cd9a17066f" ,
"timestamp" : "1757235407882" ,
"signature" : "11iF1L96q2cw8tu790p301c10530ogr7h250k1P9pLxqcJ2qe37klG8xB3M592YbpafQ9861493838C521XA6AEF4A40DK8X"
},
{
"fidelity" : 1 ,
"nonce" : "017e597c-3c7d-4a44-afeb-41cd9a17066f" ,
"timestamp" : "1757235407882" ,
"signature" : "f67L3C138Y6XB7940141011Pd58AZbdBk9Xo1Mlf1973706DsB5808ILLKumU2ic9fr72b9bSs3CD25CCZo8DJB65JB0615L"
}
],
"sourceidentifier" : "5507"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com" ,
"example.com"
]
}
}
],
"seat" : "2542:1534:245840"
}
],
"ext" : {
"processing_time_ms" : 3
}
}
应用插页式广告
OpenRTB Protobuf
显示示例
序列化响应
id : "U0t6Une80802A28Mi98o1t"
seatbid {
bid {
id : "300z78I726nCP7u4sFp"
impid : "1"
price : 149.83914184570312
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
crid : "test_creative_id_732353"
dealid : "0"
w : 360
h : 715
burl : "https://test.com/imp?id=123456"
[ com . google . doubleclick . bid ] {
event_notification_token {
payload : "token"
}
billing_id : 68640308112
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 10
}
OpenRTB JSON
显示示例
{
"id" : "U0t6Une80802A28Mi98o1t" ,
"seatbid" : [
{
"bid" : [
{
"id" : "300z78I726nCP7u4sFp" ,
"impid" : "1" ,
"price" : 149.83914184570312 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"crid" : "test_creative_id_732353" ,
"dealid" : "0" ,
"w" : 360 ,
"h" : 715 ,
"burl" : "https://test.com/imp?id=123456" ,
"ext" : {
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "68640308112" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
}
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 10
}
}
应用插页式视频广告
OpenRTB Protobuf
显示示例
序列化响应
id : "n40G42d551UX18627ao8lt"
seatbid {
bid {
id : "17u6BnD62h88r5q7066"
impid : "1"
price : 0.797848
adm : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
adomain : "google.com"
crid : "test_creative_id_987914"
w : 320
h : 480
cattax : GOOGLE_CATEGORIES
[ com . google . doubleclick . bid ] {
attribute : 47
attribute : 50
billing_id : 55383762512
skadn {
version : "4.0"
network : "306el65O"
itunesitem : "832461214"
sourceapp : "977150768"
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "0054e0b9-0b53-4426-99dd-a1eefeb45565"
timestamp : "1757329316673"
signature : "oE3Ek8347oZV1Yl1J42G2c88BSKr2dqEbiOK2S4ni7NVDh3v128NN0hlzWK5aX96ecV1504E9k288i0t0wGX73P317812WE7"
}
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "0054e0b9-0b53-4426-99dd-a1eefeb45565"
timestamp : "1757329316673"
signature : "b1GqXA4v889p842512GQ1p3249q5VmPt1335f1H1zdK92fq24j7a7ml419W7u8B7rhhH97s507f2251923oWi89XF1voZv4b"
}
sourceidentifier : "8396"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
}
}
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 20
}
OpenRTB JSON
显示示例
{
"id" : "n40G42d551UX18627ao8lt" ,
"seatbid" : [
{
"bid" : [
{
"id" : "17u6BnD62h88r5q7066" ,
"impid" : "1" ,
"price" : 0.797848 ,
"adm" : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_987914" ,
"w" : 320 ,
"h" : 480 ,
"cattax" : 500 ,
"ext" : {
"attribute" : [
47 ,
50
],
"billing_id" : "55383762512" ,
"skadn" : {
"version" : "4.0" ,
"network" : "306el65O" ,
"itunesitem" : "832461214" ,
"sourceapp" : "977150768" ,
"fidelities" : [
{
"fidelity" : 0 ,
"nonce" : "0054e0b9-0b53-4426-99dd-a1eefeb45565" ,
"timestamp" : "1757329316673" ,
"signature" : "oE3Ek8347oZV1Yl1J42G2c88BSKr2dqEbiOK2S4ni7NVDh3v128NN0hlzWK5aX96ecV1504E9k288i0t0wGX73P317812WE7"
},
{
"fidelity" : 1 ,
"nonce" : "0054e0b9-0b53-4426-99dd-a1eefeb45565" ,
"timestamp" : "1757329316673" ,
"signature" : "b1GqXA4v889p842512GQ1p3249q5VmPt1335f1H1zdK92fq24j7a7ml419W7u8B7rhhH97s507f2251923oWi89XF1voZv4b"
}
],
"sourceidentifier" : "8396"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com"
]
}
}
]
}
],
"ext" : {
"processing_time_ms" : 20
}
}
应用原生
OpenRTB Protobuf
显示示例
序列化响应
id : "550102L8So5v6gi4C00T36"
seatbid {
bid {
id : "U796oSA426V3U666ue8"
impid : "1"
price : 1.057860016822815
crid : "test_creative_id_395811"
dealid : "0"
adm_native {
ver : "1.2"
assets {
id : 6
img {
url : "https://native.test.com/logo?id=123456"
w : 200
h : 200
type : LOGO
}
}
assets {
id : 5
img {
url : "https://native.test.com/image?id=123456"
w : 800
h : 800
type : MAIN
}
}
assets {
id : 4
data {
value : "Galactic Luxury Cruises"
type : SPONSORED
}
}
assets {
id : 3
data {
value : "Book today"
type : CTATEXT
}
}
assets {
id : 1
title {
text : "Luxury Mars Cruises"
}
}
assets {
id : 2
data {
value : "Visit the planet in a luxury spaceship."
type : DESC
}
}
link {
url : "https://www.google.com"
}
}
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
impression_tracking_url : "https://test.com/impression?id=123456"
ad_choices_destination_url : "https://test.com/preferences"
event_notification_token {
payload : "token"
}
billing_id : 73917825312
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 17
}
OpenRTB JSON
显示示例
{
"id" : "550102L8So5v6gi4C00T36" ,
"seatbid" : [
{
"bid" : [
{
"id" : "U796oSA426V3U666ue8" ,
"impid" : "1" ,
"price" : 1.057860016822815 ,
"crid" : "test_creative_id_395811" ,
"dealid" : "0" ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"ad_choices_destination_url" : "https://test.com/preferences" ,
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "73917825312" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
},
"adm" : "{ \" ver \" : \" 1.2 \" , \" assets \" :[{ \" id \" :6, \" img \" :{ \" url \" : \" https://native.test.com/logo?id=123456 \" , \" w \" :200, \" h \" :200, \" type \" :2}},{ \" id \" :5, \" img \" :{ \" url \" : \" https://native.test.com/image?id=123456 \" , \" w \" :800, \" h \" :800, \" type \" :3}},{ \" id \" :4, \" data \" :{ \" value \" : \" Galactic Luxury Cruises \" , \" type \" :1}},{ \" id \" :3, \" data \" :{ \" value \" : \" Book today \" , \" type \" :12}},{ \" id \" :1, \" title \" :{ \" text \" : \" Luxury Mars Cruises \" }},{ \" id \" :2, \" data \" :{ \" value \" : \" Visit the planet in a luxury spaceship. \" , \" type \" :2}}], \" link \" :{ \" url \" : \" https://www.google.com \" }}"
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 17
}
}
网络视频
OpenRTB Protobuf
显示示例
序列化响应
id : "04XK8XoQI227314y42h0LL"
seatbid {
bid {
id : "R9TtHE88cGu48FA4DuG"
impid : "1"
price : 1.0523000955581665
adm : "https://video.test.com/ads?id=123456&wprice= %% WINNING_PRICE %% "
crid : "test_creative_id_400281"
dealid : "45957820"
[ com . google . doubleclick . bid ] {
event_notification_token {
payload : "token"
}
billing_id : 63495119434
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 11
}
OpenRTB JSON
显示示例
{
"id" : "04XK8XoQI227314y42h0LL" ,
"seatbid" : [
{
"bid" : [
{
"id" : "R9TtHE88cGu48FA4DuG" ,
"impid" : "1" ,
"price" : 1.0523000955581665 ,
"adm" : "https://video.test.com/ads?id=123456&wprice= %% WINNING_PRICE %% " ,
"crid" : "test_creative_id_400281" ,
"dealid" : "45957820" ,
"ext" : {
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "63495119434" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
}
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 11
}
}
面向交易平台出价方的移动网站横幅广告
OpenRTB Protobuf
显示示例
序列化响应
id : "1qCcL0350ZX64rx8WQm7N1"
seatbid {
bid {
id : "9I6TCG083egHnxY1490"
impid : "1"
price : 0.34
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
adomain : "google.com"
crid : "test_creative_id_607960"
w : 320
h : 100
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
event_notification_token {
payload : "token"
}
billing_id : 29290087654
third_party_buyer_token : "0W4u1J2Ya9GqKfzo925xPxN527l74y91z6P9h9b4s0Dg2t1q84O4S652wcHe63576VvK8aG6K7387yQujd13kdb99q75447qr6k332G4l3Mzhq75f155894Jg0U1vB18t73C24B4D1cd"
}
}
bid {
id : "1xHeg1ANn9RbY9n4rG2"
impid : "1"
price : 0.2
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
adomain : "google.com"
crid : "test_creative_id_607960"
w : 300
h : 50
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
event_notification_token {
payload : "token"
}
third_party_buyer_token : "ha1g9MaJIJ8R0110bkX95Jb0ksv78l4139zr4t98A19DDO6NCpX84TQp84a6H470M7mop5KzVHRyrJtn1zw78N1559WRm7554X7R21jnI0E1X7c10Xj98c08iH85742t76Y26H67cW78"
}
}
seat : "3581:7507:419542"
}
seatbid {
bid {
id : "x0ch5K0vq3iY6M7ZT84"
impid : "1"
price : 0.11
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
adomain : "google.com"
crid : "test_creative_id_607960"
w : 320
h : 50
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
impression_tracking_url : "https://test.com/impression?id=123456"
event_notification_token {
payload : "token"
}
}
}
seat : "3581:7507:419542"
}
bidid : "EFa8lD5s-3w28kZzd-4221-aZkE1F6r5810"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 250
}
OpenRTB JSON
显示示例
{
"id" : "1qCcL0350ZX64rx8WQm7N1" ,
"seatbid" : [
{
"bid" : [
{
"id" : "9I6TCG083egHnxY1490" ,
"impid" : "1" ,
"price" : 0.34 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_607960" ,
"w" : 320 ,
"h" : 100 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "29290087654" ,
"third_party_buyer_token" : "0W4u1J2Ya9GqKfzo925xPxN527l74y91z6P9h9b4s0Dg2t1q84O4S652wcHe63576VvK8aG6K7387yQujd13kdb99q75447qr6k332G4l3Mzhq75f155894Jg0U1vB18t73C24B4D1cd"
}
},
{
"id" : "1xHeg1ANn9RbY9n4rG2" ,
"impid" : "1" ,
"price" : 0.2 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_607960" ,
"w" : 300 ,
"h" : 50 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
},
"third_party_buyer_token" : "ha1g9MaJIJ8R0110bkX95Jb0ksv78l4139zr4t98A19DDO6NCpX84TQp84a6H470M7mop5KzVHRyrJtn1zw78N1559WRm7554X7R21jnI0E1X7c10Xj98c08iH85742t76Y26H67cW78"
}
}
],
"seat" : "3581:7507:419542"
},
{
"bid" : [
{
"id" : "x0ch5K0vq3iY6M7ZT84" ,
"impid" : "1" ,
"price" : 0.11 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_607960" ,
"w" : 320 ,
"h" : 50 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
}
}
}
],
"seat" : "3581:7507:419542"
}
],
"bidid" : "EFa8lD5s-3w28kZzd-4221-aZkE1F6r5810" ,
"ext" : {
"processing_time_ms" : 250
}
}