> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oddspapi.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 博彩商频道 - 体育博彩状态和元数据

> 通过WebSocket流式传输每个赛事的博彩商状态。跟踪哪些体育博彩提供赔率、检测过期/暂停市场并监控参赛方轮换标志。

## 数据流内容

关于哪些博彩商为给定赛事提供赔率的元数据，以及这些赔率是激活的、过期的、暂停的还是轮换的。

此数据流通过为每个 `fixtureId` 提供每个博彩商的状态来补充 `odds` 频道。

***

## 路由

* 实体键：`payload.fixtureId`
* 过滤器：`sportIds`、`tournamentIds`、`fixtureIds`、`bookmakers`
* 访问权限：由您的 `apiKey` 决定
* 博彩商授权：✅ 是

***

## 负载结构

| 字段                                      | 类型               | 描述                                         |
| --------------------------------------- | ---------------- | ------------------------------------------ |
| `fixtureId`                             | `string`         | 此更新适用的赛事                                   |
| `bookmakers`                            | `object`         | `<bookmaker>` → 元数据对象的映射                   |
| `bookmakers.<bk>.bookmaker`             | `string`         | 博彩商标识（如 `"stake"`、`"pinnacle"`）            |
| `bookmakers.<bk>.bookmakerFixtureId`    | `string \| null` | 可选的博彩商侧ID（可能是标识或复合字符串）                     |
| `bookmakers.<bk>.fixturePath`           | `string \| null` | 可选的博彩商路径或UI路由（如支持）                         |
| `bookmakers.<bk>.hasOdds`               | `boolean`        | 博彩商当前是否提供任何赔率                              |
| `bookmakers.<bk>.staleOdds`             | `boolean`        | **交易关键字段。** 与该博彩商的连接已断开，赔率新鲜度无法保证时为 `true` |
| `bookmakers.<bk>.staleOddsResponseCode` | `number \| null` | 过期检查时返回的HTTP状态码                            |
| `bookmakers.<bk>.suspended`             | `boolean`        | 此博彩商的赔率是否已暂停                               |
| `bookmakers.<bk>.participantsRotated`   | `boolean`        | 该博彩商的主客场分配与 OddsPapi 基准不同时为 `true`（详见下文）   |
| `bookmakers.<bk>.meta`                  | `object \| null` | 可选元数据（博彩商特定）                               |
| `bookmakers.<bk>.updatedAt`             | `string`         | 最后更新时间戳（ISO 8601）                          |

***

## 示例消息

```json theme={null}
{
  "channel": "bookmakers",
  "type": "UPDATE",
  "payload": {
    "fixtureId": "id1000070367118324",
    "bookmakers": {
      "draftkings": {
        "bookmaker": "draftkings",
        "bookmakerFixtureId": "33999242",
        "fixturePath": "https://sportsbook.draftkings.com/event/33999242",
        "hasOdds": true,
        "staleOdds": false,
        "staleOddsResponseCode": null,
        "suspended": false,
        "participantsRotated": false,
        "meta": null,
        "updatedAt": "2026-04-21T00:51:48.283641+00:00"
      }
    }
  },
  "ts": 1776729708000,
  "entryId": "1776729708000-1"
}
```

***

## 自动化交易关键字段

### `staleOdds` — 赔率新鲜度保证

<Warning>
  如果您在 OddsPapi 之上运行自动化交易或套利策略，`staleOdds` 是您必须检查的最重要字段之一。
</Warning>

当 `staleOdds = true` 时，OddsPapi 与该博彩商之间的连接已**断开或中断**。这意味着：

* 您之前收到的赔率**可能不再反映博彩商的当前价格**
* 在连接恢复之前，无法保证进一步的更新
* 您应该**立即暂停**该博彩商的任何自动化投注或套利逻辑
* 将该博彩商的所有现有赔率视为**未验证**，直到 `staleOdds` 恢复为 `false`

`staleOddsResponseCode` 提供触发过期检测的 HTTP 状态码（如有）— 用于调试连接问题。

### `participantsRotated` — 主客场映射

当 `participantsRotated = true` 时，该博彩商将**不同的队伍视为主队**，与 OddsPapi 的基准不同。换句话说，`participant1`（主队）和 `participant2`（客队）在该博彩商处与 OddsPapi 基准赛事相比是**互换的**。

这对以下方面至关重要：

* **独赢 / 1x2 盘口** — "主队"和"客队"结果含义相反
* **让分 / 让球盘** — 让分的正负号翻转
* **任何自动化策略** — 按参赛方位置而非参赛方 ID 映射结果

如果您在 OddsPapi 之上构建系统，请始终检查此标志，并在其为 `true` 时**交换该博彩商的参赛方映射**。

***

## 说明

* 如果博彩商不在 `bookmakers` 中，假设该赛事**当前没有可用赔率**。
* 将此频道用作处理 `odds` 频道赔率之前的**预过滤器**。
* 结合 `staleOdds`、`suspended` 和 `hasOdds` 来判断博彩商的赔率在任何给定时刻是否可信。
