Skip to main content

实时竞价接口

版本历史

版本号日期作者描述
1.02019-05-27赵家勇支持移动端业务
1.0.12019-08-29王骁恒创意送审、创意修改、创意查询、BidResponse支持下载类第3方监控
1.0.22019-11-15王骁恒获取广告位详情memo字段改为选填,新增platform字段
1.0.32019-11-15王骁恒下载类广告的package_name字段改为选填
1.0.42019-12-30王骁恒添加deeplinktk字段
1.0.52020-02-12赵家勇添加应用定向和广告过滤字段说明
1.0.62020-05-25梁春雷添加下载或调起类广告效果上报字段,dstartinstalltk、deeplinkfailedtk、installedtk、uninstalledtk
1.0.72020-09-04徐华根添加actionurl在BidResponse和创意同步接口-创意送审/创意修改/创意查询中的app_info object[]
1.0.72020-12-20徐华根添加bgimg, videotime等字段在BidResponse和创意同步接口-directive_response object[]
1.0.82021-08-03黄有龙在BidRequest.Device增加hmsVersion, asVersion
2.02023-04-21黄有龙增加ApiVersion2.0版本,BidRequest结构display对象更新,BidResponse结构新增material对象
2.0.12023-05-25黄有龙在BidRequest.Device增加IOS相关字段birthTime, bootTime, updateTime, idfv, caid
2.0.22023-06-30黄有龙在BidRequest.Device增加拼多多caid字段paid
2.0.32023-07-26黄有龙在BidRequest.Device增加caid的version字段caid.version
2.0.42023-08-11黄有龙在BidResponse.AppInfo新增下载要素的字段:permission_url, function_desc
2.0.52023-09-04黄有龙支持protobuf格式对接, 支持gzip, zstd压缩方式; 在BidRequest.Device增加ppi, pxRatio字段, 即将废弃density字段
2.0.62023-10-16黄有龙在BidRequest.Device增加阿里广告标识aaid字段aaid
2.0.72023-11-29黄有龙在BidResponse.AppInfo新增ios universal_link字段,universal_link字段
2.0.82023-12-28黄有龙增加点击事件与摇一摇相关宏:__itm__, __acw__, __ach__, __xma__, __yma__, __zma__
2.0.92024-01-19黄有龙在BidRequest.Device增加:elapseTime, sysCpuNum, batteryState, battery, romVersion, sdFreeSpace
2.0.102024-12-11黄有龙在BidRequest.Device增加:anDisk, anMemory

通信方式

简介

  • ADX和DSP之间的通信协议采用HTTP协议
  • ADX使用POST方法向DSP发送Bid Request消息
  • 数据格式: json, protobuf
  • 支持压缩方式:gzip, zstd
  • ADX使用GET 方式向DSP发送Win Notice消息

请求头

参数名称参数值备注
Content-Typeapplication/json目前支持json和protobuf格式
json: 固定传 application/json
protobuf:固定传 application/x-protobuf
Accept-Encoding压缩方式, 不压缩的时候不传
支持压缩方式有gzipzstd, 选择对应压缩方式则会传对应的压缩
Content-Encoding压缩方式, 不压缩的时候不传
支持压缩方式有gzipzstd, 选择对应压缩方式则会传对应的压缩
提示
  • 建议DSP使用protobuf对接, 对接参考proto文件
  • 出于降低带宽的角度, 希望DSP支持压缩, 支持压缩后, 我方会采用对应压缩方式请求(Request Header头会传Accept-Encoding与Content-Encoding),对应值如: gzip

响应头

参数名称参数值备注
Content-Typeapplication/json目前支持json和protobuf格式
json: 固定传 application/json
protobuf:固定传 application/x-protobuf
Content-Encoding压缩方式, 不压缩的时候不传
支持压缩方式有gzipzstd, 选择对应压缩方式则需传对应的值

HTTP状态码

  • DSP正常出价响应包的HTTP状态码: 200 OK
  • DSP不出价的HTTP状态码: 204 no content
  • 其他状态码均认为异常

接口定义v2.0

2.0更新说明

1.0版本升级到2.0版本须知

2.0版本的主要目标:针对素材适配做了调整,提升DSP侧的素材适配性。 建议升级以提升跑量能力

2.0版本相对1.0版本主要调整:

  1. 请求参数调整:
  1. 返回参数调整:
    1. 移除directive_response下相关字段:display_idad_content_listbgimgvideosizevideotimevideoProtocol
    1. 增加directive_response.template_id字段,增加directive_response.material字段,用于表示素材,提高素材可适配性

BidRequest结构说明

ADX向DSP发送HTTP竞价请求,竞价请求信息保存在BidRequest中。BidRequest将包含曝光信息、站点信息、APP信息、设备信息、用户信息。

BidRequest object

字段类型必填描述
reqidstring必填标识一次请求的唯一id
api_versionstring必填版本号,固定为2.0
imp_listobject[]必填曝光信息, 广告位信息, 一个BidRequest可能包含多个imp对象, 至少包含一个 object的结构见imp object
siteobject选填站点信息, 仅当广告位出现在web时, 才会包含site对象 object的结构见site object
appobject选填APP信息, 仅当广告位出现在APP时, 才会包含APP对象 object的结构见app object
deviceobject选填设备信息 object的结构见device object
userobject选填用户信息 object的结构见user object
bcatstring[]选填拒绝的广告分类
badvstirng[]选填拒绝的广告主域名
testint选填测试字段, 标识是否涉及收费 0-生产模式 1-调试模式
extobject选填保留字段

imp object

字段类型必填描述
idstring必填标识该imp的唯一id
seat_idint必填广告位标识id, DSP先同步获取ADX资源的素材标准,然后根据本字段识别曝光资源的来源和素材标准
ad_typeint必填广告类型: 1-开屏 2-插屏 3-信息流 4-激励视频 5-推送
display_listobject[]必填广告位支持的广告形式: 包含多个,代表该位置支持多种广告形式,投放方可以根据自己需要选取其中一个广告投放,返回投放广告对应的广告形式id object的结构见display object
bid_info_listobject[]必填竞价信息,包含允许的竞价类型和底价,至少存在一个bidinfo object的结构见bid_info object
deal_idstring[]选填直接交易标识 ID列表,由交易平台和 DSP 提前约定
action_typeint[]选填支持的广告交互类型 0-无限制、1-H5、2-下载、3-唤醒、4-微信小程序、10-LBA、21-仅展示不可点击

display object

字段类型必填描述
template_idint必填广告模板id 参考帮助中心/广告形式规范报表/广告模板v2.0
widthint必填广告位宽度
heightint必填广告位高度

bid_info object

字段类型必填描述
bid_typeint必填允许的竞价类型 0-CPM
bid_floorint选填可接受的底价 单位:分/千次曝光

site object

字段类型必填描述
idint必填站点id, 由ADX定义的site id
namestring选填站点名称
domainstring选填站点域名
urlstring选填当前页面的url
refstring选填当前页面的referer url
keywordsstring选填逗号分隔的页面关键词

app object

字段类型必填描述
idstring必填APP id, 由ADX定义
namestring选填APP名称
package_namestring选填APP package name, 平台内唯一
catint[]选填APP类型
verstring选填APP版本号
keywordsstring选填逗号分隔的APP关键词

device object

字段类型必填描述
uastring选填浏览器的user agent
device_typeint选填设备类型 0-PC 1-手机 2-平板 3-互联网电视
brandstring选填设备品牌(如: apple)
modelstring选填设备型号(如: iphone)
makestring选填设备厂商(如: apple)
orientationint选填屏幕方向 0-未知 1-竖屏 2-横屏
hmsVersionstring选填华为机型HMS Core版本号(如: 60000306)
asVersionstring选填大陆厂商安卓设备AS版本号(如: 110302302)
osint选填操作系统 0-Windows 1-MacOS 2-Linux 3-IOS 4-Android 5-WP
osvstring选填操作系统版本号
densityint选填屏幕密度, 默认为400,即将废弃,用ppi字段取代
ppiint选填像素密度, 表示每英寸像素点, 默认为400
pxRatiofloat选填屏幕密度, 例如 1.5
ipstring选填ipv4
ipv6string选填ipv6
carrierint选填运营商 0-电信 1-移动 2-联通 3-网通 4-未知
networkint选填网络类型 0-wifi 1-earthnet(有线网络) 2-2G 3-3G 4-4G 5-5G 6-未知
widthint选填物理屏幕宽度
heightint选填物理屏幕高度
imeistring选填设备号imei
imei_md5string选填设备号imei的md5
oaidstring选填Android Q以上版本的设备号 明文形式
dpidstring选填Android id
dpid_md5string选填Android id的md5
idfastring选填Apple设备的idfa
idfa_md5string选填Apple设备的idfa的md5
boot_markstring选填取原值进⾏传输 iOS:1623815045.970028 Android:ec7f4f33-411a-47bc-8067-744a4e7e0723
update_markstring选填取原值进⾏传输 iOS:1581141691.570419583 Android:1004697.709999999
macstring选填设备的mac值
mac_md5string选填设备的mac值的md5
birthTimestring选填设备初始化时间
bootTimestring选填系统启动时间
updateTimestring选填系统更新时间
idfvstring选填苹果开发者标识
paidstring选填拼多多版caid,仅iOS
caidobject选填中广协设备id,object的结构见Caid object,仅iOS
geoobject选填地域信息 object的结构见geo object
aaidstring选填阿里集团内推出的匿名广告标识符,格式示例:CD7D878A870C-97D4-89A4-3EB3-D48AF066
elapseTimestring选填开机时长
sysCpuNumint选填设备cpu数量
batteryStateint选填设备当前充电状态 1:未知状态,2:正在充电,3 放电 4:未充满,5:满状态
batteryint选填设备电量
romVersionstring选填系统rom版本
sdFreeSpacestring选填磁盘剩余空间
anDiskstring选填安卓磁盘空间
anMemorystring选填安卓内存空间

geo object

字段类型必填描述
latfloat选填纬度 (-90.0 - 90.0), 负值代表南
lonfloat选填经度 (-180.0 - 180.0), 负值代表西
typeint选填位置来源 1-GPS定位 2-IP地址 3-用户提供(如注册信息)
countrystring选填国家
provincestring选填省份
citystring选填城市

user object

字段类型必填描述
idstring选填由ADX定义的用户id
yobint选填出生年份 4位数字
genderstring选填性别 M-男 F-女 默认-未知
keywordsstring选填逗号分隔得用户关键词或兴趣点

Caid object

字段类型必填描述
idstring选填caid原值
versionstring选填caid版本号,caid原值跟版本号同时传才有意义,建议传caid原值时,同时也传caid_version
bootTimeInSecstring选填iOS设备启动时间(单位秒,无小数点)
countryCodestring选填国家
languagestring选填语言
deviceNamestring选填设备名称
modelstring选填设备model
systemVersionstring选填系统版本
machinestring选填设备machine
carrierInfostring选填运营商
memorystring选填物理内存,单位字节
diskstring选填磁盘空间,单位字节
sysFileTimestring选填系统更新时间
timeZonestring选填时区
initTimestring选填应用首次启动时间

ext object

字段类型必填描述
iapp_liststring选填定向应用id列表(逗号分隔), 最多50个id, 请联系我们商务或运营开通, 及索要包名id映射关系表, 用于支持部分唤醒或下载类广告业务

BidRequest请求示例

{
"reqid":"b-8910dd1fc643149c88906fc77a70f4a2",
"api_version": "2.0",
"imp_list":[
{
"id":"1",
"seat_id":10007201,
"ad_type": 3,
"display_list": [
{
"template_id": 3,
"width": 480,
"height": 360
},
{
"template_id": 4,
"width": 480,
"height": 360
},
{
"template_id": 5,
"width": 720,
"height": 360
},
{
"template_id": 6,
"width": 720,
"height": 360
}
],
"bid_info_list":[
{
"bid_type":0,
"bid_floor":30
}
],
"deal_id":[
"100072011125192"
]
},
{
"id":"2",
"seat_id":10007202,
"ad_type": 3,
"display_list":[
{
"template_id": 3,
"width": 480,
"height": 360
},
{
"template_id": 4,
"width": 480,
"height": 360
},
{
"template_id": 5,
"width": 720,
"height": 360
},
{
"template_id": 6,
"width": 720,
"height": 360
}
],
"bid_info_list":[
{
"bid_type":0,
"bid_floor":30
}
],
"deal_id":[
"10007202464452"
]
}
],
"site":{
"id":1,
"name":"2345网址导航",
"domain":"www.2345.com",
"url":"http://www.2345.com/index.html",
"ref":"http://www.2345.com",
"keywords":"音乐,小说,财经"
},
"app":{
"id":"52",
"name":"2345手机浏览器-安卓主版",
"package_name":"com.browser2345",
"cat":[
6502
],
"ver":"61000",
"keywords":"魅力的小鸟"
},
"device":{
"ua":"Mozilla/5.0(Linux;Android7.0;FRD-AL00Build/HUAWEIFRD-AL00;wv)AppleWebKit/537.36(KHTML,likeGecko)Version/4.0Chrome/60.0.3112.116MobileSafari/537.36",
"device_type":1,
"hmsVersion":"60000306",
"asVersion":"110302302",
"brand":"honor",
"model":"FRD-AL00",
"make": "huawei",
"os":4,
"osv":"7.0",
"ip":"172.16.171.88",
"ipv6":"",
"carrier":4,
"network":0,
"width":1080,
"height":1794,
"imei":"862679030655599",
"imei_md5":"b9b7d034a11df90d0be1d095c9ffe1f2",
"oaid":"8bc673b56ca9c1bc",
"dpid":"da79762cdb2521e8",
"dpid_md5":"7c16cd22b9034aeca5afc7403895ef70",
"idfa":"",
"idfa_md5":"",
"mac":"d41a844d7028",
"mac_md5":"8f0f4c4532c0d8fac13df364d31545b5",
"boot_mark":"ec7f4f33-411a-47bc-8067-744a4e7e0723",
"update_mark":"1004697.709999999",
"idfv": "",
"bootTime": "1633371485.234154208",
"updateTime": "1644125433.724374",
"birthTime": "",
"caid": {
"id": "",
"bootTimeInSec": "1671304611",
"countryCode": "CN",
"language": "zh-Hans-CN",
"deviceName": "867e57bd062c7169995dc03cc0541c19",
"model": "D17AP",
"systemVersion": "15.3",
"machine": "iPhone14,5",
"carrierInfo": "中国移动",
"memory": "3866836992",
"disk": "127866785792",
"sysFileTime": "1644125433.724374",
"timeZone": "28800",
"initTime": "1633371485.234154208"
},
"geo":{
"lat":31.180670080928,
"lon":121.60124658875,
"type":1,
"country":"",
"province":"",
"city":""
}
},
"user":{
"id":"d4a1484d7208",
"yob":0,
"gender":"",
"keywords":""
},
"bcat":[

],
"badv":[

],
"test":0,
"ext":{
"iapp_list":"10001,10002"
}
}

BidResponse基础结构说明

DSP通过BidResponse返回参与竞价的广告

一个BidResponse中可包含多个BidSeat对象。通常,一个BidSeat代表DSP端的一个广告主。每个BidSeat中又可包含多个Bid对象,一个Bid代表一个参与竞价的广告,对应于BidRequest中的一个Imp对象

BidResponse object

字段类型必填描述
residstring必填response id, 与request id相同
seat_bid_listobject[]选填广告位-竞价列表, 如果参与竞价, 必须至少包含一个seat_bid对象 object的结构见seat_bid object
bididstring选填由DSP定义的响应id,用于 logging/tracking(日志或效果追踪)

seat_bid object

字段类型必填描述
bid_listobject[]必填竞价信息 object的结构见bid object
advstring选填该次竞价是代表谁参与的,一般设置成广告主id,用于logging/tracking

bid object

字段类型必填描述
imp_idstring必填本次竞价所关联的imp id
priceint必填出价 单位:分
dealstring选填预定的资源id, 仅pd和pdb业务使用
creative_idstring必填广告创意素材id, DSP需保证该id在DSP侧的唯一性, 最长支持32位
directive_responseobject选填广告创意信息, 免审核时使用, 白名单内的DSP此项必填 object的结构见directive_response object
iapp_filterint选填0=不过滤(默认) 1=过滤已安装 2=过滤未安装
ext_datastring选填自定义宏, 会替换竞价成功后的__EXT_DATA__

directive_response object

字段类型必填描述
creative_idstring必填广告创意素材id, DSP需保证该id在DSP侧的唯一性
advertiser_idint必填广告主id,DSP侧可自定义
advertiser_namestring必填广告主名称,DSP侧可自定义
vocationint必填广告主行业编码, 详见广告主行业编码表
template_idint必填广告模板id
materialMaterial必填广告创意素材信息,详见Material对象
app_infoobject选填app下载唤起 object的结构见app_info object
urlstring必填落地url 支持302
incentiveloadedtkstring[]选填仅用于激励视频广告,激励视频加载成功时统计url列表, 最多3个
videostarttkstring[]选填仅用于信息流视频、激励视频,视频开始播放统计url列表,最多3个
firstQuartiletkstring[]选填仅用于激励视频,视频播放至25%时统计url列表,最多3个
midpointtkstring[]选填仅用于激励视频,视频播放至50%时统计url列表,最多3个
thirdQuartiletkstring[]选填仅用于激励视频,视频播放至75%时统计url列表,最多3个
videoCompletetkstring[]选填仅用于信息流视频、激励视频,视频播放完成统计url列表,最多3个
incentiveerrortkstring[]选填仅用于激励视频广告,激励视频播放错误时统计url列表,最多3个
imptkstring[]选填曝光监测url, 最多8个
clktkstring[]选填点击监测url, 最多8个
dstarttkstring[]选填仅用于应用下载广告,开始下载监播地址, 如果需要该信息请与我方确认投放资源是否支持,最多3个
dfinishtkstring[]选填仅用于应用下载广告,下载完成监播地址,最多3个
dinstalltkstring[]选填仅用于应用下载广告;安装完成监播地址,最多3个
deeplinktkstring[]选填唤醒成功上报地址,当前仅用于开屏广告位,最多8个
dstartinstalltkstring[]选填仅用于应用下载广告;开始安装监播地址。如果需要该信息请与我方确认投放资源是否支持,最多3个
deeplinkfailedtkstring[]选填deeplink调起失败时上报的url列表,最多3个
installedtkstring[]选填deeplink跳转时判断应用已安装情况下上报的url列表,最多3个
uninstalledtkstring[]选填deeplink跳转时判断应用未安装情况下上报的url列表,最多3个
nurlstring选填竞胜通知url
lurlstring选填竞败通知url

Material object

字段名称类型是否必填备注
titlestring推荐广告标题
descriptionstring推荐广告描述
btnstring广告按钮文字
brandstring推荐品牌描述
imagesImage[]推荐广告图片素材,图文或纯图时必填,详见Image对象
videoVideo推荐广告视频素材,视频广告必填,详见Video对象
iconImage推荐广告 icon 图片,详见Image对象

Image object

字段名称类型是否必填备注
urlstring图片地址
widthint推荐图片宽度,单位:像素
heightint推荐图片高度,单位:像素

Video object

字段名称类型是否必填备注
urlstring视频地址
durationint视频时长,单位:秒
sizeint视频大小,单位:KB
coverImage视频封面图片或视频后贴片图片,详见Image对象
widthint推荐图片宽度,单位:像素
heightint推荐图片高度,单位:像素
protocolint视频协议类型

app_info object

字段类型必填描述
product_typeint必填1-普通链接 2-android应用下载 3-ios应用下载
android_urlstring选填安卓下载地址,下载类时android_url或 ios_url⾄少填⼀个,其它情况直接过滤为空
ios_urlstring选填IOS下载地址,下载类选填
deeplinkstring选填应用直达URL,SDK客户端会对deeplink地址进行有效性校验,无效的话会自动转成非唤起的广告形式,打开落地页
universal_linkstring选填iOS universal_link
package_namestring推荐下载应用包名 下载和唤醒类广告必填
actionurlstring选填电话号码或获取号码的URL
app_namestring选填应用名称,下载和唤醒类广告必填
app_sizeint选填应用大小,单位 KB,下载类需要
app_logostring选填应用logo,下载和唤醒类广告必填
introstring选填应用介绍
versionstring选填应用版本号,下载类广告必填
developerstring选填应用开发者,下载类广告必填
privacystring选填应用隐私协议,下载类广告必填
privacy_urlstring选填应用隐私协议链接,下载类广告必填
注:下载类广告 privacy、privacy_url 任填一个即可。
permissionsobject[]选填应用隐私权限列表,下载类广告必填。详见permission对象
permission_urlstring选填应用隐私权限Url,下载类广告必填。
注:下载类广告 permission_url、permissions 任填一个即可
function_descstring选填产品功能介绍,下载类广告必填
wx_miniprogramobject选填调起微信小程序。详见wxMiniProgram对象

permission object

字段类型必填描述
titlestring必填隐私权限标题
descstring必填隐私权限详细描述

wxMiniProgram object

字段名称类型必填备注
wx_usernamestring必填所需跳转的小程序原始 ID(以"gh_"开头)
wx_pathstring选填推荐,所需跳转的小程序内页面路径及参数,不填默认拉起小程序主页。
wx_minitypeint必填所需跳转的小程序类型,0=正式版、1=开发版、2=体验版

BidResponse响应示例

{
"resid":"b-9946d8caf773a38d0dc9864945de6f5f",
"seat_bid_list":[
{
"adv":"10010",
"bid_list":[
{
"imp_id":"1",
"price":357143,
"deal":"10007201382782",
"creative_id":"10000357",
"directive_response":{
"creative_id":"10000357",
"advertiser_id":100106,
"advertiser_name":"京东商城",
"vocation":303,
"template_id": 4,
"material": {
"title": "插屏_图文礼盒素材27",
"images": [
{
"url": "https://ldaskd.obs.cn-south-1.myhuaweicloud.com:443/20220808163745-1006239809808371712.jpg"
}
]
},
"app_info":{
"product_type":2,
"android_url":"http://download.2345.com/latest/taobao4android_1001001.apk",
"ios_url":"",
"deeplink":"tbopen://m.taobao.com/tbopen/index.html?action=ali.open.nav&bootImage=0&module=h5&source=alimama&bc_fl_src=tanx_df_643466909_0_15456_105032_37853_3648_4639_3&backURL=oppobrowser%3A%2F%2Fresume%3Ffrom%3Dcom.taobao.taobao&packageName=com.android.browser&h5Url=https%3A%2F%2Fclick.tanx.com%2Ftfn%3Fe%3De4fZ4%252bte2x3zgR8y%252fb1Y00Kc3sAmalVszN1VIJJUwTdz3z9bRz09oDvAx2TRREVuA%252fYbPr9t7QqAqkCG91x4hjXH6%252brBCQREcuYK5fam3%252fG6CPvXhWf7zYBm1fKOXs36e4hg4npzkB8%253d%26u%3Dhttps%253a%252f%252fpages.tmall.com%252fwow%252fa%252fact%252ftmall%252ftmc%252f2375e%252fwupr%253fwh_pid%253dmain-174357%2526resource_id%253d15456%26k%3D140%26ext%3Da%253d7ef207a42f51aecd77fb49784fe7b734%2526b%253d__IDFA__%2526c%253d__MAC__%2526d%253d__OAID__",
"package_name":"com.taobao.taobao"
},
"videoProtocol":0,
"incentiveloadedtk": [
"http://www.2345.com/exposure?type=0&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__",
"http://www.2345.com/exposure?type=0&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"videostarttk": [
"http://www.2345.com/click?type=1&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"firstQuartiletk" : [
"http://www.2345.com/dstart?type=2&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"midpointtk" : [
"http://www.2345.com/dfinish?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__",
"http://www.2345.com/dfinish2?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"thirdQuartiletk" : [
"http://www.2345.com/dinstall?type=4&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"videoCompletetk" : [
"http://www.2345.com/dinstall?type=4&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"incentiveerrortk" : [
"http://www.2345.com/dinstall?type=4&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"url":"http://www.adgoo.cn",
"imptk":[
"http://www.adgoo.cn/api/external/drs?reqid=__ID__&action=show&win_price=0"
],
"clktk":[
"http://www.adgoo.cn/api/external/drs?reqid=__ID__&action=click&win_price=0"
],
"dstarttk" : [
"http://www.2345.com/dstart?type=2&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"dfinishtk" : [
"http://www.2345.com/dfinish?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__",
"http://www.2345.com/dfinish2?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"dinstalltk" : [
"http://www.2345.com/dinstall?type=4&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"deeplinktk" : [
"http://www.2345.com/deeplink?type=6&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"dstartinstalltk" : [
"http://www.2345.com/dstartinstall?type=2&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"deeplinkfailedtk" : [
"http://www.2345.com/deeplinkfailed?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__",
"http://www.2345.com/deeplinkfailed2?type=3&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"installedtk" : [
"http://www.2345.com/installed?type=4&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
],
"uninstalledtk" : [
"http://www.2345.com/uninstalled?type=6&adxRid=__EXT_DATA__&winpriceEncr=__WIN_PRICE__"
]
},
"iapp_filter" : 0,
"ext_data": "50c0e9a8c8d293b2"
},
{
"imp_id":"2",
"price":7143,
"deal":"10007202889218",
"creative_id":"10000354",
"directive_response":{
"creative_id":"10000354",
"advertiser_id":100106,
"advertiser_name":"京东商城",
"vocation":303,
"template_id": 3,
"material": {
"title": "京东好物节",
"description": "先领券后下单,1元好物包邮到家,仅限今日!",
"images": [
{
"url": "http://www.adgoo.cn/201909/34_1_5d82f8d9536283.69356696.jpg"
}
]
},
"app_info":{
"product_type":1,
"deeplink":"",
"package_name":""
},
"url":"http://www.adgoo.cn",
"imptk":[
"http://www.adgoo.cn/api/external/drs?reqid=__ID__&action=show&win_price=__WIN_PRICE__"
],
"clktk":[
"http://www.adgoo.cn/api/external/drs?reqid=__ID__&action=click&win_price=__WIN_PRICE__"
]
}
}
]
}
],
"bidid":"b00290"
}

Proto文件

仅适用于以protobuf格式对接

bid.proto
syntax = "proto3";

message Request {
string reqid = 1; //必填 标识一次请求的唯一id
string api_version = 2; //版本号,固定为2.0
message Imp {
string id = 1; //必填 标识该imp的唯一id
int32 seat_id = 2; //选填 广告位标识id, DSP先同步获取ADX资源的素材标准,然后根据本字段识别曝光资源的来源和素材标准
message Display {
int32 template_id = 1; //必填 广告模板id
int32 width = 2; //必填 广告位宽度
int32 height = 3; //必填 广告位高度
}
repeated Display display_list = 3; //选填 广告位支持的广告形式: 包含多个,代表该位置支持多种广告形式,投放方可以根据自己需要选取其中一个广告投放,返回投放广告对应的广告形式id object的结构见display object
message BidInfo {
int32 bid_type = 1; //必填 允许的竞价类型 0-CPM
float bid_floor = 2; //选填 可接受的底价 单位:分/千次曝光
}
repeated BidInfo bid_info_list = 4; //选填 竞价信息,包含允许的竞价类型和底价,至少存在一个bidinfo object的结构
repeated string deal_id = 5; //选填 直接交易标识 ID,由交易平台和 DSP 提前约定
repeated int32 action_type = 6; //支持的广告交互类型 0-无限制、1-H5、2-下载、3-唤醒、4-微信小程序、10-LBA、21-仅展示不可点击
int32 ad_type = 7; //选填 广告类型: 1-开屏 2-插屏 3-信息流 4-激励视频 5-推送
}

repeated Imp imp_list = 3; //必填 曝光信息, 广告位信息, 一个BidRequest可能包含多个imp对象, 至少包含一个 object的结构见imp object
message App {
string id = 1; //必填 APP id, 由ADX定义
string name = 2; //选填 APP名称
string package_name = 3; //选填 APP package name, 平台内唯一
repeated int32 cat = 4; //选填 APP类型 需要参数测试?????
string ver = 5; //选填 APP版本号
string keywords = 6; //选填 逗号分隔的APP关键词
string cid = 7; //选填 ssp对应渠道id
string appchannel = 8; //选填 app渠道id
}
App app = 4; //选填 APP信息, 仅当广告位出现在APP时, 才会包含APP对象 object的结构见app object
message Device {
string ua = 1; //选填 浏览器的user agent
int32 device_type = 2; //选填 设备类型 0-PC 1-手机 2-平板 3-互联网电视
string brand = 3; //选填 设备品牌(如: apple)
string model = 4; //选填 设备型号(如: iphone)
string make = 5; //选填 设备厂商(如: apple)
int32 orientation = 6; // 屏幕方向 0-位置 1-竖屏 2-横屏
string hmsVersion = 7; // 华为机型HMS Core版本号(如: 60000306)
string asVersion = 8; // 大陆厂商安卓设备AS版本号(如: 110302302)
int32 os = 9; //选填 操作系统 0-Windows 1-MacOS 2-Linux 3-IOS 4-Android
string osv = 10; //选填 操作系统版本号
int32 density = 11; //选填 屏幕密度, 默认为400 即将废弃
string ip = 12; //选填 ipv4
string ipv6 = 13; //选填 ipv6
int32 carrier = 14; //选填 运营商 0-电信 1-移动 2-联通 3-网通 4-未知
int32 network = 15; //选填 网络类型 0-wifi 1-earthnet(有线网络) 2-2G 3-3G 4-4G 5-5G 6-未知
int32 width = 16; //选填 物理屏幕宽度
int32 height = 17; //选填 物理屏幕高度
string imei = 18; //选填 设备号imei
string imei_md5 = 19; //选填 设备号imei的md5
string oaid = 20; //选填 Android Q以上版本的设备号 明文形式
string oaid_md5 = 21; //选填 oaid的md5
string dpid = 22; //选填 Android id
string dpid_md5 = 23; //选填 Android id的md5
string idfa = 24; //选填 Apple设备的idfa
string idfa_md5 = 25; //选填 Apple设备的idfa的md5
string mac = 26; //选填 设备的mac值
string mac_md5 = 27; //选填 设备的mac值的md5
string boot_mark = 28; //选填 取原值进⾏传输 iOS:1623815045.970028 Android:ec7f4f33-411a-47bc-8067-744a4e7e0723
string update_mark = 29; //选填 取原值进⾏传输 iOS:1581141691.570419583 Android:1004697.709999999
string birthTime = 30; //选填 设备初始化时间
string bootTime = 31; //选填 系统启动时间
string updateTime = 32; //选填 系统更新时间
string idfv = 33; //选填 苹果开发者标识
string paid = 34; //选填 拼多多版caid,仅iOS
message Caid {
string id = 1; // caid 原值
string bootTimeInSec = 2; // 设备启动时间
string countryCode = 3; // 国家
string language = 4; // 语言
string deviceName = 5; // 设备名称
string model = 6; // 设备型号
string systemVersion = 7; // 系统版本
string machine = 8; // 设备 machine
string carrierInfo = 9; // 运营商
string memory = 10; // 物理内存
string disk = 11; // 磁盘大小
string sysFileTime = 12; //
string timeZone = 13; // 时区
string initTime = 14; // 设备初始化时间
string version = 15; // caid 原值版本号
}
Caid caid = 35;
message Geo {
float lat = 1; //选填 纬度 (-90.0 - 90.0), 负值代表南
float lon = 2; //选填 经度 (-180.0 - 180.0), 负值代表西
int32 type = 3; //选填 位置来源 1-GPS定位 2-IP地址 3-用户提供(如注册信息)
string country = 4; //选填 国家
string province = 5; //选填 国家
string city = 6; //选填 城市
}
Geo geo = 36; //选填 地域信息 object的结构见geo object
int32 ppi = 37; //选填 像素密度,表示每英寸像素点
float pxRatio = 38; //选填 屏幕密度
string aaid = 39; //选填 阿里集团内推出的匿名广告标识符,格式示例:CD7D878A870C-97D4-89A4-3EB3-D48AF066
string elapseTime = 40; //选填 开机时长
int32 sysCpuNum = 41; //选填 设备cpu数量
int32 batteryState = 42; //设备当前充电状态 1:未知状态,2:正在充电,3 放电 4:未充满,5:满状态
int32 battery = 43; //选填 设备电量
string romVersion = 44; //选填 系统rom版本
string sdFreeSpace = 45; //选填 磁盘剩余空间
string anDisk = 46; //选填 安卓磁盘空间
string anMemory = 47; //选填 安卓内存空间
}
Device device = 5; //选填 设备信息
message User {
string id = 1; //选填 由ADX定义的用户id
int32 yob = 2; //选填 出生年份 4位数字
string gender = 3; //选填 性别 M-男 F-女 默认-未知
string keywords = 4; //选填 逗号分隔得用户关键词或兴趣点
string wuid = 5; //选填 逗号分隔得用户关键词或兴趣点
}
User user = 6; //选填 用户信息
message Site {
int32 id = 1; //必填 站点id, 由ADX定义的site id
string name = 2; //选填 站点名称
string domain = 3; //选填 站点域名
string url = 4; //选填 当前页面的url
string ref = 5; //选填 当前页面的referer url
string keywords = 6; //选填 逗号分隔的页面关键词
}
Site site = 7; //选填 站点信息, 仅当广告位出现在web时, 才会包含site对象
repeated string bcat = 8; //选填 拒绝的广告分类
repeated string badv = 9; //选填 拒绝的广告主域名
int32 test = 10; //选填 测试字段, 标识是否涉及收费 0-生产模式 1-调试模式
int32 at = 11; //选填 该值固定为2 竞价类型 1-first price 2-second price plus dsp可以只处理at值为2的请求(仅rtb)
message Ext {
string iapp_list = 1; //需要测试与完善扩展结构
}
Ext ext = 12; //选填 保留字段
}


message Response {
string resid = 1; //必填 response id, 与request id相同
repeated SeatBidOptions seat_bid_list = 2; //选填 广告位-竞价列表, 如果参与竞价, 必须至少包含一个seat_bid对象 object的结构
string bidid = 3; //选填 由DSP定义的响应id,用于 logging/tracking(日志或效果追踪)
}

message SeatBidOptions {
repeated BidOptions bid_list = 1; //必填 竞价信息
string adv = 2; //选填 该次竞价是代表谁参与的,一般设置成广告主id,用于logging/tracking
}

message BidOptions {
string imp_id = 1; //必填 本次竞价所关联的imp id
int32 price = 2; //必填 出价 单位:分
string creative_id = 3; //必填 广告创意素材id, DSP需保证该id在DSP侧的唯一性
string deal = 4; //选填 预定的资源id, 仅pd和pdb业务使用
DirectiveResponseOptions directive_response = 5; //选填 广告创意信息, 免审核时使用, 白名单内的DSP此项必填
int32 iapp_filter = 6; //选填 0=不过滤(默认) 1=过滤已安装 2=过滤未安装
string ext_data = 7; //选填 自定义宏, 会替换竞价成功后的__EXT_DATA__宏
}

message DirectiveResponseOptions {
string creative_id = 1; //必填 广告创意素材id, DSP需保证该id在DSP侧的唯一性
int32 advertiser_id = 2; //必填 广告主id
string advertiser_name = 3; //必填 广告主名称
int32 vocation = 4; //必填 广告主行业编码, 详见广告主行业编码表
int32 template_id = 5; //必填 广告模板id
message Material {
string title = 1; // 推荐 广告标题
string description = 2; // 推荐 广告描述
string btn = 3; // 广告按钮文字
string brand = 4; // 品牌描述
message Image {
string url = 1; // 必填 图片地址
int32 width = 2; // 推荐 图片宽度,单位:像素
int32 height = 3; // 推荐 图片高度,单位:像素
}
repeated Image images = 5; // 推荐 广告图片素材,图文或纯图时必填
Video video = 6; // 推荐 广告视频素材,视频广告必填
message Video {
string url = 1; // 必填 视频地址
int32 duration = 2; // 推荐 视频时长,单位:秒
int32 size = 3; // 选填 视频大小,单位:KB
Image cover = 4; // 推荐 视频封面图片或视频后贴片图片
int32 protocol = 5; // 选填 视频协议类型
}
Image icon = 7; // 广告 icon 图片
}
Material material = 6; //必填 创意素材内容, 包括视频, 图片, 文本等. 需严格按照广告形式的定义顺序来指定上传
message AppInfo {
int32 product_type = 1; //必填 1-普通链接 2-android应用下载 3-ios应用下载
string android_url = 2; //选填 安卓下载地址,下载类时android_url或 ios_url⾄少填⼀个,其它情况直接过滤为空
string ios_url = 3; //选填 IOS下载地址,下载类选填
string deeplink = 4; //选填 应用直达URL,SDK客户端会对deeplink地址进行有效性校验,无效的话会自动转成非唤起的广告形式,打开落地页
string package_name = 5; //选填 下载应用包名 下载类广告必填
string app_name = 6; //选填 应用名称,下载和唤醒类广告必填
int32 app_size = 7; //选填 应用大小,单位 KB,下载类需要
string app_logo = 8; //选填 应用logo,下载和唤醒类广告必填
string intro = 9; // 选填 应用介绍
string version = 10; // 选填 应用版本号,下载类广告必填
string developer = 11; // 选填 应用开发者,下载类广告必填
string privacy = 12; // 选填 应用隐私协议,下载类广告必填
string privacy_url = 13; // 选填 应用隐私协议链接,下载类广告必填。注:下载类广告 privacy、privacy_url 任填一个即可。
message Permission {
string title = 1; // 必填 隐私权限标题
string desc = 2; // 必填 隐私权限详细描述
}
repeated Permission permissions = 14; // 应用隐私权限列表
string permission_url = 15; // 选填 应用隐私权限Url,下载类广告必填。注:下载类广告 permission_url、function_desc 任填一个即可
string function_desc = 16; // 选填 产品功能介绍,下载类广告必填
message MiniProgram {
string wx_username = 1; // 必填 所需跳转的小程序原始 ID(以"gh_"开头)
string wx_path = 2; // 推荐 所需跳转的小程序内页面路径及参数,不填默认拉起小程序主页
uint32 wx_minitype = 3; // 必填 所需跳转的小程序类型,0:正式版,1:开发版,2:体验版
}
MiniProgram wx_miniProgram = 17; // 调起小程序
string universal_link = 18; // 选填 IOS universal_link
}
AppInfo app_info = 7; //选填 app下载唤起
string url = 8; //必填 落地url 支持302
repeated string imptk = 9; //选填 曝光监测url, 最多5个
repeated string clktk = 10; //选填 点击监测url, 最多3个
repeated string dstarttk = 11; //选填 仅用于应用下载广告,开始下载监播地址, 如果需要该信息请与我方确认投放资源是否支持,最多3个
repeated string dfinishtk = 12; //选填 仅用于应用下载广告,下载完成监播地址,最多3个
repeated string dinstalltk = 13; //选填 仅用于应用下载广告;安装完成监播地址,最多3个
repeated string deeplinktk = 14; //选填 唤醒成功上报地址,当前仅用于开屏广告位,最多8个
repeated string dstartinstalltk = 15; //选填 仅用于应用下载广告;开始安装监播地址。如果需要该信息请与我方确认投放资源是否支持,最多3个
repeated string deeplinkfailedtk = 16; //选填 deeplink调起失败时上报的url列表,最多3个
repeated string installedtk = 17; //选填 deeplink跳转时判断应用已安装情况下上报的url列表,最多3个
repeated string uninstalledtk = 18; //选填 deeplink跳转时判断应用未安装情况下上报的url列表,最多3个
repeated string incentiveloadedtk = 19; //选填 仅用于激励视频广告,激励视频加载成功时统计url列表, 最多3个
repeated string videostarttk = 20; //选填 仅用于信息流视频、激励视频,视频开始播放统计url列表,最多3个
repeated string firstQuartiletk = 21; //选填 仅用于激励视频,视频播放至25%时统计url列表,最多3个
repeated string midpointtk = 22; //选填 仅用于激励视频,视频播放至50%时统计url列表,最多3个
repeated string thirdQuartiletk = 23; //选填 仅用于激励视频,视频播放至75%时统计url列表,最多3个
repeated string videoCompletetk = 24; //选填 仅用于信息流视频、激励视频,视频播放完成统计url列表,最多3个
repeated string incentiveerrortk = 25; //选填 仅用于激励视频广告,激励视频播放错误时统计url列表,最多3个
string nurl = 26; //选填 竞胜通知
string lurl = 27; //选填 竞败通知
}

接口定义v1.0

警告
  • v1.0已经过期,请尽快升级到v2.0
  • 如要查看v1.0的历史文档,👉v1.0归档

Win Notice与宏

win notice 会随着曝光上报(展示监测链接)一起发送,不做单独的 win notice。通过对展示监测链接中特定参数的宏替换,将广告的计费价格发送给赢得竞价的 DSP 平台。

  1. win notice随曝光上报下发至客户端,并支持以下宏
宏名称描述
__WIN_PRICE__广告成交价格
__ID__在BidRequest的reqid
__BID_ID__在BidResponse的bidid
__IMP_ID__在BidResponse的imp_id
__ADV__在BidResponse的seat_bid.adv
__CRID__在BidResponse的bid.creative_id
__EXT_DATA__在BidResponse的bid.ext_data
__re_down_x__按下时相对横坐标(相对广告位)
__re_down_y__按下时相对纵坐标(相对广告位)
__re_up_x__离开时相对横坐标(相对广告位)
__re_up_y__离开时相对纵坐标(相对广告位)
__down_x__按下时绝对横坐标(屏幕坐标)
__down_y__按下时绝对纵坐标(屏幕坐标)
__up_x__离开时绝对横坐标(屏幕坐标)
__up_y__离开时绝对纵坐标(屏幕坐标)
__acw__点击时,实际展示的广告容器宽
__ach__点击时,实际展示的广告容器高
__itm__触发事件类型 1:正常点击,即常规触屏点击 2:摇一摇 3:划动点击
__xma__设备摇动时,x 轴加速度,单位:m/s^2
用户摇动点击时,x轴加速度峰值100倍取整,仅摇一摇需替换
__yma__设备摇动时,y 轴加速度,单位:m/s^2
用户摇动点击时,y轴加速度峰值100倍取整,仅摇一摇需替换
__zma__设备摇动时,z 轴加速度,单位:m/s^2
用户摇动点击时,z轴加速度峰值100倍取整,仅摇一摇需替换
__utc_ts__上报时间戳,执行任务上报时手机客户端的时间戳,毫秒级别
__TIMESTAMP__上报时间戳,执行任务上报时手机客户端的时间戳,级别

注:相对坐标和绝对坐标在无法获取时传"-999"

DSP的展现监测链接中必须加入__WIN_PRICE__、__ID__宏

带宏的展现链接示例

 http://dsp.com/monitor?reqid=__ID__&price=__WIN_PRICE__
  1. 出于保密的考虑,价格参数(WIN_PRICE)做了加密处理,加密解密方法见后面价格加密解密小节 DSP如果要记录成交价格,需要在曝光监控地址里面包含宏__WIN_PRICE__,2345_ADX 会将该宏替换为加密后的成交价格串业务说明

DSP需要预先在2345-ADX平台注册自己的cookie-mapping-url

业务流程

  1. 2345-ADX向DSP发起广告请求时,携带用户在2345-ADX的唯一UID;

  2. DSP根据UID决定是否发起Cookie Mapping。若发起, 则将ADX的CM URL添加到返回广告的pv字段中;

  3. 2345-ADX的CM服务器接收到请求后,解析dspid参数,然后带上u2345id,302到DSP的CM URL;

  4. DSP CM Service接收请求,记录ADX_UID和u2345id的映射关系;并向用户浏览器返回一个透明像素点(或204 No Content)。

备注:若提供CM,需要监测CM的使用情况;适当防止强制cookie映射

cookie mapping实现流程

  1. DSP在网页上设置一个像素点tag,用户浏览器向该url请求数据

    http://2345-adx.com/dsp/cm?dspid=1234

    dspid是2345-ADX平台分配给DSP的全局唯一ID

  2. 2345-ADX平台会将该请求重定向(302 Redirect)到DSP提供的cookie-mapping-url

    http://dsp.cookie-mapping-url?u2345id=9043F352A

    u2345id是用户在2345-ADX平台的userid

  3. DSP接收到该请求,记录下u2345id和dsp_uid的映射关系

  4. DSP向用户浏览器返回一个透明像素点(或204 No Content)

备注:当2345-ADX接收到的请求中,没有携带有效的dspid时,会直接返回用户一个透明像素点

价格加密解密

参数名描述
iv初始化向量,16字节,每一次展现都会有唯一的初始化向量
e_key价格加密密钥,32字节,每个dsp会被分配唯一的加密密钥
i_key价格校验密钥,32字节,每个dsp会被分配唯一的校验密钥
price原始价格,8字节
hmac(k, d)使用密钥 k 对数据 d 进行 SHA-1 HMAC 哈希
^异或操作
a + b拼接字符串 a 和 b

加密伪代码:

pad = hmac(e_key, iv);  // first 8 bytes
enc_price = pad ^ price;
signature = hmac(i_key, price + iv); // first 4 bytes
${__WIN_PRICE__} = urlsafe_b64encode(iv + enc_price + signature);

价格解密过程

参数名描述
e_key价格加密密钥(价格解密),32字节,每个dsp会被分配唯一的加密密钥
i_key价格校验密钥,32字节,每个dsp会被分配唯一的校验密钥
${__WIN_PRICE__}价格宏,28字节

解密伪代码

enc_price = urlsafe_b64decoded(${__WIN_PRICE__});
(iv, p, sig) = split enc_price according to fixed lengths;
pad = hmac(e_key, iv); // first 8 bytes
price = p ^ pad;
local_sig = hmac(i_key, price + iv); // first 4 bytes
success = (local_sig == sig);

//示例
winPrice = "YWJjZGVmZ2hpamtsbW5vcAlRUhUYREUXMTFjZA=="; //加密后的价格
ekey = "16db4a04510503f7d0c1505e5d9007d2";
ikey = "d02cd2afcd942568e4b297529a0784e4";
//解密后的price
price = "100";
import (
"crypto/hmac"
"crypto/sha1"
"fmt"
"github.com/foursking/bstring"
"github.com/thinkeridea/go-extend/exstrings"
)

func PriceDecode(b64 string, eKey string) string {
b64 = exstrings.Replace(exstrings.Replace(b64, "-", "+", -1), "_", "/", -1)
str, err := bstring.Base64DecodeString(b64)
if err != nil || len(str) < 28 {
return ""
}
return StrByXOR(str[16:len(str)-4], HmacSha1(str[:16], eKey)[:8])
}

func StrByXOR(message string, keywords string) string {
messageLen := len(message)
keywordsLen := len(keywords)
result := ""
for i := 0; i < messageLen; i++ {
result += string(message[i] ^ keywords[i%keywordsLen])
}
return result
}

func HmacSha1(src string, secret string) string {
h := hmac.New(sha1.New, []byte(secret))
h.Write([]byte(src))
return fmt.Sprintf("%x", h.Sum(nil))
}

//示例
func main() {
winPrice := "YWJjZGVmZ2hpamtsbW5vcAlRUhUYREUXMTFjZA=="
ekey := "16db4a04510503f7d0c1505e5d9007d2"
fmt.Printf("%s", PriceDecode(winPrice, ekey)) //100
}