竞价响应

CloudX 读取的 OpenRTB 竞价响应字段、广告标记规则,以及带宏的获胜/失败通知 URL。

如需对展示机会出价,请返回标准的 OpenRTB 竞价响应。本页介绍 CloudX 读取的字段、CloudX 渲染素材的标记规则,以及用于跟踪结果的通知 URL。

不参与竞价的响应

要放弃某次展示,请返回 HTTP 204(响应体为空)或 HTTP 200seatbid 数组为空)。当您想在 nbr(OpenRTB 列表 5.24)中说明原因时使用 200 形式——204 无法携带响应体。

响应对象

字段类型要求说明
idstring必需您所响应的竞价请求的 id
seatbidobject array必需每个响应发送一个 seat、一条出价。
seatbid[].seatstring可选响应中的 seat ID。通知交付使用 CloudX 配置的竞价方或适配器身份来标识 seat,并不直接读取此字段。
curstring可选"USD",或省略(默认为 USD)。其他货币会被拒绝。
bididstring可选用于对账的响应 ID。保留了响应级上下文的路径会将其用于 ${AUCTION_BID_ID};否则该宏回退为 bid.id
nbrinteger可选OpenRTB 不参与竞价原因(列表 5.24)。在 HTTP 200 响应中与空 seatbid 数组一起使用。

Bid 对象

字段类型要求说明
idstring必需您为本次出价生成的唯一 ID。
impidstring必需您所出价的 impid
pricefloat必需必须为正数的美元 CPM 出价。第一价格:获胜后按此金额支付。您的 price 必须达到请求中发送的 imp.bidfloor;请按竞价方 CPM 口径提交,不要自行应用 CloudX 配置的调整。CloudX 会让这些调整与内部竞价底价在底价校验和排名时保持等价口径。
admstring必需广告素材标记——HTML/MRAID 片段或 VAST XML 文档。CloudX 直接渲染;请参阅下文标记规则和广告素材规范
cridstring必需稳定的素材 ID。同一素材每次都应使用相同值,以便 CloudX 持续识别、调查和屏蔽。
adidstring可选待展示广告标记的 ID。部分通知路径会为 ${AUCTION_AD_ID} 保留该值;基于展示事件的路径则使用素材 ID。
adomainstring array必需至少一个非空广告主域名,不含协议或路径。CloudX 会将可注册域名与请求中的 badv 屏蔽列表比较。
catstring array建议素材的 IAB 内容类别。
nurlstring建议获胜通知 URL,见获胜和失败通知
burlstring建议计费通知 URL。请在此跟踪展示和支出。
lurlstring建议失败通知 URL,携带失败原因代码。
ext.crtypestring条件必需素材类型标签。CloudX 按不区分大小写的方式归一化:htmlmraidstatic 映射为 htmlvastvideo 映射为 vast。仅当媒体类型明确时才可省略。对于以 banner 形态发送的 App Open 或插屏请求,如返回 VAST,必须设置为 "vast";OpenRTB 2.6 还应设置 mtype: 2

广告标记规则

  • 请在 adm 中返回完整标记。CloudX 不会从 nurl 获取标记。
  • 所有 URL 必须使用 HTTPS。 HTTP 引用违反合作方契约,并可能被拒绝。
  • HTML/MRAID 标记是由 CloudX SDK 在 WebView 中渲染的片段;VAST 标记是完整的 XML 文档。格式、尺寸和渲染行为请参阅广告素材规范

获胜和失败通知

CloudX 会随着竞价结果和设备端结果的确定,调用您出价中的相应通知 URL:

字段触发时机
nurl获胜通知。旧版 SDK 流量在广告加载后触发;当前基于展示事件的 SDK 流量在记录已渲染展示时触发。
burl获胜广告完成渲染并达到计费条件时。请在此跟踪展示和支出。
lurl您的出价未获胜或被拒绝时,包括出价获胜但广告加载或渲染失败的情况。

通知采用异步、尽力而为方式交付,并非恰好一次。通知可能延迟、重试、重复、乱序或丢失。处理程序应具备幂等性:按 URL 类型以及 ${AUCTION_ID}${AUCTION_IMP_ID}${AUCTION_BID_ID} 去重,并仅在持久记录事件后返回 2xx

您可以在通知 URL 中嵌入宏,CloudX 会在调用前替换为实际值。宏区分大小写,请始终使用 ${...} 形式。

替换值
${AUCTION_PRICE}取决于结果的价格;货币、单位和竞价方 CPM 口径与您的出价一致。详见下表。
${AUCTION_MIN_TO_WIN}取决于结果的最低价格或底价。详见下表。也接受别名 ${AUCTION_MINIMUM_BID_TO_WIN}${AUCTION_BID_TO_WIN}
${AUCTION_LOSS}OpenRTB 失败原因代码,仅用于 lurl,见下表。
${AUCTION_ID}竞价请求的 id
${AUCTION_BID_ID}通知路径保留的响应 bidid;否则为 bid.id
${AUCTION_IMP_ID}展示的 id
${AUCTION_SEAT_ID}CloudX 为该出价配置的竞价方或适配器 seat。
${AUCTION_AD_ID}路径保留的 bid.adid;基于展示事件的路径则使用素材 ID。两者都不可用时可能为空。
${AUCTION_CURRENCY}出价货币(USD)。
${AUCTION_MBR}两个值都可用时,${AUCTION_PRICE} 除以收到通知的出价价格。

当某条通知路径未提供宏所需的上下文时,该宏会以原文保留,例如 nurl 中的 ${AUCTION_LOSS}。如果该路径提供了上下文,但可选来源字段为空,替换结果可能为空值。请确保处理程序能够同时容忍字面宏文本和空值。

价格宏行为

通知结果${AUCTION_PRICE}${AUCTION_MIN_TO_WIN}
获胜 nurlburl获胜出价的 CPM;CloudX 采用第一价格竞价。获胜方底价与下一名出价加 0.01 美元两者中的较大值,且最低为 0.01 美元。
lurl,代码 100
lurl,代码 23当该失败路径提供价格上下文时为 0不提供;宏保持原文。
lurl,代码 100101拒绝该出价的底价。同一底价。
lurl,代码 102当前基于展示事件的路径使用按收到通知的竞价方 CPM 口径表示的获胜竞价价格。没有费用口径的旧版通知路径可能使用收到通知的出价自身 CPM。${AUCTION_PRICE} 相同。

失败原因代码

${AUCTION_LOSS} 携带以下 OpenRTB 代码之一:

超时响应会被丢弃。不要依赖超时响应中的 lurl 收到代码 2;服务器生成的超时通知仅适用于实现该能力的特定端点适配器。

代码含义常见原因
1内部错误CloudX 处理您的出价时发生意外故障,或您的获胜出价广告在设备端加载或渲染失败。
2已过期由特定端点适配器生成的服务器超时通知。
3无效的竞价响应运行时校验所检查的字段缺失或格式错误,或标记未通过校验。
100低于竞价底价price 低于 imp.bidfloor
101低于 deal 底价price 低于您所出价的 deal 的底价。
102输给更高出价出价有效,但在该轮中被更高出价击败。

响应示例

{
  "id": "7f3d9a1c2e4b48f0a6d5c8b2e1f40937",
  "cur": "USD",
  "bidid": "b-92f4ac",
  "seatbid": [
    {
      "seat": "your-seat-id",
      "bid": [
        {
          "id": "bid-0001",
          "impid": "1",
          "price": 6.25,
          "crid": "creative-48291",
          "adid": "ad-48291",
          "adomain": ["advertiser.example"],
          "cat": ["IAB1-1"],
          "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><VAST version=\"3.0\">...</VAST>",
          "nurl": "https://events.bidder.example/win?price=${AUCTION_PRICE}",
          "burl": "https://events.bidder.example/bill?price=${AUCTION_PRICE}",
          "lurl": "https://events.bidder.example/loss?reason=${AUCTION_LOSS}&price=${AUCTION_PRICE}",
          "ext": { "crtype": "vast" }
        }
      ]
    }
  ]
}

下一步:广告素材规范

CloudX 渲染需求的素材类型、尺寸和渲染行为。