请求地址
POST /openrtb/{ssp_id}
Content-Type: application/json
真实域名与身份由接入双方确认;https://exchange.example.com 仅为演示域名。SSP ID 为 1–128 字节 ASCII 字母、数字、点、下划线或连字符(A-Z a-z 0-9 . _ -)。不允许额外路径段、百分号编码、尾部斜线或 query;/bid 不是别名。
身份来自上述路径及已配置的认证,不来自 JSON 正文、Host、Cookie 或 X-Forwarded-*。代理必须原样保留实际签名路径,不得重编码、添加 query 或根据转发头重建另一条路径。
HTTP 与认证
HTTP 和 HTTPS 使用相同认证规则;入站协议不强制 HTTPS,也不执行强制 HTTPS 重定向。推荐结合双方的传输安全要求使用 HTTPS。HMAC 仅保护元数据,不签正文;明文链路上的攻击者仍可能替换正文并抢先提交。不能把 Nonce 去重等同于正文保护。
- 发送且只发送一个
Content-Type,值为application/json,可附 charset。 - 发送未压缩 JSON;省略
Content-Encoding,或使用identity,不支持 gzip 等压缩。 - 新接入按 HMAC 认证 发送四个唯一的认证头。
- 只有明确配置为旧
legacy-token-v1的 SSP 才使用唯一的Authorization: Bearer <token>。HMAC SSP 不能通过旧 Bearer Token 降级认证。 - SSP 请求正文上限为 256 KiB(262144 字节),计算实际收到的字节;补写下游字段后也检查同一上限。
最小 Banner 请求
{
"id": "example-request-banner",
"at": 1,
"tmax": 100,
"cur": ["USD"],
"imp": [
{
"id": "example-imp-1",
"banner": { "w": 320, "h": 50 },
"bidfloor": 1.5,
"bidfloorcur": "USD"
}
],
"app": { "bundle": "com.example.app" },
"device": { "os": "Android", "geo": { "country": "USA" } }
}
这里的 100 是示例请求预算,不是时延承诺。下载 Banner 请求、Video 请求 和 Native 请求。
必须满足的结构
id、imp[0].id 为非全空白、无控制字符的 1–128 字节字符串。at 必须显式为整数 1;不能把 OpenRTB 缺省的二价解释为一价。imp 必须恰好一项,媒体对象和 App / Site 均只能选一种。所有层级拒绝重复 JSON 键,包括转义后同名的键。
tmax 可省略;提供时必须为 1–60000 的整数毫秒。总时限从请求处理开始计算,包含认证、读体、解析、决策和下游请求;有效预算还受服务端上限与 DSP 超时限制。服务端默认总预算为 120 ms,部署可能另行配置,接入时应确认,不能把默认值视为 SLA。正文未及时读完可能返回 408;业务预算内没有可用报价返回 204。
国家和平台维度可缺失;一旦存在就必须类型正确。国家接受合法的大写 ISO alpha-2 / alpha-3,匹配时转换为 alpha-2;OS 匹配时转为 ASCII 小写,App Bundle 精确匹配,不做小写转换。归一化用于匹配,不代表改写透传原始字段。
协议与实现校核日期:2026-09-21。