所有时间戳均为UTC。
如果变更影响数据形状或行为,将标记为重大变更。
2026-11-16
盘口目录更新。仅为数据变更 —— 不涉及端点、字段或类型变化。在此日期当天或之后重新拉取一次GET /markets 即为最新。
✨ 新增
- 3,733 个新盘口下新增 7,882 个
outcomeId,以及 33 个新的marketType值 —— 几乎全部为足球:射门、扑救、黄牌与红牌、换人、乌龙球、获得与罚失的点球(以总计 / 球队总计 / 1X2 / 抢先达到等形式),另有firstcorner、lastcorner、penaltyawarded、1up、players-firstcard。 - 280 个新的
period键,全部为板球回合范围:p{i}o{n}(第 i 局第 n 个回合结束后)、p{i}o{n}b{d}(第 d 球)、p{i}o1+…+p{i}oN(前 N 个回合)。实际使用的词汇表从 280 增至 560,并保持只追加;单独的p1仍表示整个一局。
⚠️ 重大变更
-
300 个板球
marketType值被废弃,其盘口改挂到新的回合 period 上。 回合数原先位于类型中(12-overs-3-delivery-team1),现在它是一个period,因此这些盘口改为携带普通的totals/teamtotals-team1/teamtotals-team2。33,792 个选项的marketType与period同时变化;outcomeId、marketId、handicap、两个名称字段和marketLength均保持不变,因此没有数据丢失,也无需重新映射赔率。如果你通过marketType识别板球回合盘口,请改用period。这正是目录其余部分遵循的规则:盘口的范围位于period中,永不位于其类型或名称中。 -
60 个冰球球员盘口从
fulltime+overtime迁移至result。Over Under Player Saves (incl. overtime)(50 个盘口)与Over Under Player Blocks (incl. overtime)(10 个)原先发布在fulltime+overtime范围上,现均改为result。120 个选项仅period发生变化 ——outcomeId、marketId、handicap、两个名称字段和marketLength均保持不变,因此无需重新映射任何赔率。如果你通过period识别这两类盘口,请改用result。 -
46 个盘口补齐了缺失的一方 —— 原先只有
Yes的盘口现在同时提供Yes与No,No以同一marketId追加。请重新读取选项列表,而非使用缓存数量。marketLength有意不做更新:它是描述盘口预期概率空间的冻结元数据,而非你所收到数组的长度 —— 参见 marketLength。
🔁 变更
- 盘口唯一性现在严格且被强制执行。 一个盘口为
sportId × marketType × period × handicap,选项再加上outcomeName—— 与构成oddsId的坐标完全相同。因此同一marketType在同一period下只有一种结构,且其选项始终构成完整空间(有Yes即有No,有Over即有同一盘口线上的Under,有-team1即有-team2,三向盘口携带其平局选项)。每次发布均会审计。参见盘口和选项。
2026-11-12
🔧 改进
- 每个 API 密钥组的并发 WebSocket 连接数由 5 提升至 8。 你无需做任何改动 —— 多出的余量直接可用,错误
4003(too_many_connections)现在从第 9 条连接起才触发,而非第 6 条。如果你将频道分片到多个进程,或在生产消费者旁运行一个热备连接,这会很有用。参见 WebSocket 限制。
✨ 新增
-
statusId4——removed(已移除)。 指错误创建并已从赛程中撤回的赛事或期货:数据源侧的重复条目、测试条目,或并非真实的赛事。它不是取消 ——3指真实存在但不会进行的赛事,4指本就不应存在的实体。4的优先级高于3且为终态(任意状态 →4,之后不再变化),请将其视为最终状态并停止轮询;4的实体永远不会发布比分和结算结果。参见枚举。对statusId做穷举分支的客户端需新增4分支。该枚举一直是只追加的,因此如果你已在优雅处理未知值,则不会有任何破坏。
2026-10-28
新增
- 所有赛事响应新增
previousFixtureId—— 包括 REST(GET /fixtures、/fixtures/today、/fixtures/live、/fixtures/odds等)以及fixturesWebSocket 频道。它是reissuedFixtureId(于 2026-10-09 新增)的逆向指针:后者从被取消的赛事向前指向其替代赛事,而本字段则从替代赛事向后指向它所替代的那场赛事。 - 所有期货响应新增
previousFutureId—— 语义相同,适用于GET /futures、GET /futures/odds以及futuresWebSocket 频道。
null、
就是普通的 id 字符串,且只指向一跳——一场被延期两次的赛事会形成 A → B → C,其中 B
同时带有 previousFixtureId: A 和 reissuedFixtureId: C。前身最多只有一个;若延期被撤销,
该字段会被重新清空。既有的重新上架配对均已回填,因此早于本日期创建的替代赛事同样带有该逆向指针。
重大变更
- 赛事与期货的响应结构新增了一个顶层键。
previousFixtureId紧随fixtureId与reissuedFixtureId;previousFutureId紧随futureId与reissuedFutureId。在反序列化时拒绝未知字段的客户端需要补上这两个字段;其他客户端不受影响。
2026-10-09
新增
- 所有赛事响应新增
reissuedFixtureId—— 包括 REST(GET /fixtures、/fixtures/today、/fixtures/live、/fixtures/odds等)以及fixturesWebSocket 频道。当一场被取消的赛事以新的 id 重新上架时——例如延期后改到更晚的日期,或数据源重新编排了盘面——被取消的那场赛事会指向它的替代赛事。 - 所有期货响应新增
reissuedFutureId—— 语义相同,适用于GET /futures、GET /futures/odds以及futuresWebSocket 频道。
null——只有已被取消(status.statusId 为 3)
且替代项已出现在数据流中的实体才会被填充。许多取消是永久性的,会一直保持 null;
另一些会在之后重新上架,因此该值可能在您首次看到实体被取消之后才出现。
它就是普通的 id 字符串,且只指向一跳:若替代项本身也被取消,请读取它自己的 reissuedFixtureId。
重大变更
- 赛事与期货的响应结构新增了一个顶层键。
reissuedFixtureId紧随fixtureId,reissuedFutureId紧随futureId。在反序列化时拒绝未知字段的客户端需要补上这两个字段;其他客户端不受影响。
2026-10-05
本条目仅是数据变更——没有任何端点、字段或类型发生改变, 且全部通过GET /markets(以及 GET /fixtures/markets)提供:
在该日期当天或之后重新拉取一次目录即可保持最新。
赔率载荷本身不受影响,只是会开始携带新的 outcomeId。
新增
- 新增 64 个电竞
marketType取值和 568 个marketType×period组合——覆盖 Counter-Strike、League of Legends、Dota、Valorant 和 Rainbow Six 的目标类、首个目标与连杀盘口。地图级盘口归入新的sportId83(电竞无尽对决 Mobile Legends)。 - 新增 195 个
period键,全部为子赛段网格——p1r1…p5r36(地图内的回合)与p1g2…p5g6(网球)。词汇表从 19 个取值增长到 213 个,并保持仅追加。
全部 64 个新增 marketType
全部 64 个新增 marketType
电竞目标的总分 / 让分 / 单队总分 —
totals-kills、totals-towers、totals-turrets、totals-dragons、totals-barons、totals-roshans、totals-inhibitors、totals-barracks、totals-rounds、totals-headshots、spreads-kills、spreads-towers、spreads-turrets、spreads-dragons、spreads-roshans、spreads-inhibitors、spreads-barracks、spreads-rounds、teamtotals-kills-team1/-team2、teamtotals-towers-team1/-team2、teamtotals-turrets-team1/-team2、teamtotals-dragons-team1/-team2、teamtotals-barons-team1/-team2、teamtotals-roshans-team1/-team2、teamtotals-inhibitors-team1/-team2、teamtotals-barracks-team1/-team2、teamtotals-rounds-team1/-team2首个目标 — firstblood、firsttower、firstbaron、firstroshan、firstinhibitor、firstbarracks连杀 — triplekill、quadrakill、pentakill其他 — 1x2-kills、drawnobet-kills、oddeven-kills、oddeven-rounds、racetokills、winningmargin-rounds、playertotals-kills、playertotals-headshots、toqualify此前并不存在的重命名目标 — spreads-bookings、players-commitpenalty、players-goalieshutouts、players-goalsagainst、players-nextgoalscorer、players-powerplaypoints、players-secondgoalscorer、players-shorthandedgoals、players-shorthandedgoalscorer、players-thirdgoalscorer。它们之所以是“新增”,只是因为原有盘口迁移到了这些取值——参见下方的重命名对照表。变更
- 24 个
marketType取值被重命名,以统一各运动项目的命名,共影响冰球、足球和板球中的 222 个盘口。单数前缀player-、spread-、total-统一为其他地方已在使用的复数形式players-、spreads-、totals-。 - 74 个盘口的
period发生变化。 其中 28 个由fulltime改为result,覆盖 26 个在常规时间之后不存在计分阶段的运动项目——对它们而言这两个取值本就是同一个数字的两种叫法,参见各项目的周期。另外 46 个原本period为空白,现已填充。全过程marketId均保持不变。 - 已不存在
period为空的盘口。 如果您曾为空字符串做特殊处理,现在可以删掉那个分支。
全部 74 项 period 变更
全部 74 项 period 变更
fulltime → result——26 个运动项目的 1x2 盘口: MMA 203、拳击 213、沙滩排球 303、壁球 343、三人篮球 353、冰壶 393、Padel 403、足球特别项目 443、沙滩手球 473、田径 483、羽毛球 493、草地滚球 503、越野 513、电竞使命召唤 563、电竞守望先锋 573、电竞彩虹六号 583、电竞火箭联盟 593、电竞星际争霸 603、电竞无畏契约 613、电竞传说对决 623、电竞王者荣耀(King of Glory)633、柔道 643、电竞王者荣耀(Honor of Kings)653、速度赛车 663、高尔夫 673、自行车 683。拳击还额外移动了两条 Total Rounds 线(216、218)——它们是该项目最后两个仍停留在 fulltime 的盘口,而拳击其余的 Total Rounds 线早已使用 result。空白 → 已填充,共 46 个盘口:完整的 marketType 重命名对照表
完整的 marketType 重命名对照表
其中 13 项重命名会并入已经存在的
marketType — players-anytimegoalscorer、
players-assists、players-blocks、players-firstgoalscorer、players-goals、
players-lastgoalscorer、players-points、players-saves、players-shots、
players-shotsongoal、spreads-corners、totals-fours 和 totals-sixes
原本就与其单数形式同时存在于注册表中。如果您按 marketType 分组,这些分组只会变大
而不会消失——同一概念下的重复写法被消除了。moneyline → toqualify 这一行是唯一一项并非纯命名调整的改动:一个原本类型为 moneyline 的足球盘口
现在改为 toqualify,这正是它一直以来的实际含义。它也是本次发布中唯一一个 marketName
发生变化的盘口——由 Winner (incl. overtime) 改为 To Qualify。2026-09-28
新增
GET /{lang}/fixtures/odds/parlay— 根据一组oddsIds计算串关赔率,可跨赛事与运动项目。参见串关与 SGP。GET /{lang}/fixtures/odds/sgp— 计算带相关性的同场串关,由博彩公司报价。price体现相关性,singlesPrice为简单乘积。- 两个新端点上的
missingOddsIds— 列出未能找到的已请求各关,因此空的部分不会产生歧义。 - 所有端点支持
X-API-Key请求头认证,与apiKey查询参数并存。请只使用其中一种。参见认证。
2026-05-25
新增
- WebSocket
receiveType: "zstd"—— 无字典压缩。 可选启用的 zstd 出口压缩,无需处理字典:每个数据帧都是独立的无字典 zstd 帧(dictId 0),一行即可解码(zstd.decompress(frame)→ JSON)。在odds频道上比 JSON 小约 5–6 倍,是削减带宽最简单的方式。参见压缩。 - WebSocket
receiveType: "zstd-dict"—— 训练字典。 使用服务端在连接时以dict控制帧下发的各频道字典,可获得最高压缩比(odds上约 7–9 倍)。
变更
receiveType: "zstd"现在表示无字典。 在 zstd 测试阶段,"zstd"下发的是训练字典;该行为已移至新的"zstd-dict"。如果你此前在"zstd"下解码字典帧,请改用"zstd-dict"。- 移除字典版本缓存。 登录字段
dicts已取消;服务端现在在每次zstd-dict连接时重新下发(约 32 KB)字典,因此客户端无需再跨重连持久化或管理字典版本。若仍发送dicts字段,将被忽略。
2026-04-09
新增
- 赛事视图:
venue场馆部分 — 所有赛事响应新增嵌套对象,包含venueId、venueName和venueLocation。按语言翻译。 - 赛事视图:
clock时钟部分 — 所有赛事响应新增嵌套对象,包含currentPeriod、currentTime、remainingTime、remainingTimeInPeriod和stopped。在赛事填充时钟数据之前,所有键均为null。 - 赛事视图:
participant1ShortName/participant2ShortName— 赛事响应participants部分新增字段,来源于翻译后的参赛方数据。 - 赛事视图:
seasonRound— 赛事响应season部分新增字段。 - 期货视图:
marketId— 期货响应market部分现包含来自期货表的marketId。名称字段(marketName、marketType、playerMarket、participantMarket)暂时为null。 - 参赛方端点:
participantShortName—GET /{lang}/participants响应现包含每个参赛方的participantShortName。 - 新REST端点:
GET /{lang}/venues?venueIds=...— 返回带有翻译后venueName和venueLocation的场馆数据。 - 新WebSocket频道:
clocks— 按赛事传递实时时钟更新(与scores相同的路由:按fixtureId、运动、赛事过滤)。支持恢复/重放。
重大变更
- 赛事响应结构变更 — 所有赛事端点(REST和WebSocket)现包含三个新顶级键:
venue(对象)、clock(对象),以及更新的participants/season部分。严格解析赛事响应的客户端应更新其模型。season现包含seasonRound: integer | nullparticipants现包含participant1ShortName: string | null和participant2ShortName: string | nullvenue: { venueId, venueName, venueLocation }在season之后添加clock: { currentPeriod, currentTime, remainingTime, remainingTimeInPeriod, stopped }在scores之后添加
- 期货响应结构变更 —
market.marketId现已填充(整数或null),不再始终为null。
2025-12-12
新增
- WebSocket 恢复和重放支持,使用
entryId游标 - 新WebSocket频道:
injurieslineupsstats
- WebSocket网关的AsyncAPI 3.0参考
改进
- 减少了
odds和scores的WebSocket延迟 - 改进了
sportIds、tournamentIds和bookmakers的过滤
修复
- 修复了一些
odds更新在没有博彩公司门控的情况下交付的问题 - 修复了某些赛事在过渡期间
live标志不正确的问题
2025-11-28
重大变更
odds.payload.odds键现在始终是博彩公司范围的- 期望扁平结构的旧客户端必须更新
新增
- 支持
receiveType: "binary"(MessagePack) - 在所有更新消息中添加了
entryId
2025-11-10
新增
- 初始WebSocket网关
- 频道:
fixturesscoresoddsbookmakers