> ## 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.

# 串关赔率

> 根据选定的 `oddsIds` 计算串关（accumulator）赔率。

各关按博彩公司分组，并在本地将每组的当前赔率相乘——不会向博彩公司发起请求，也**不做相关性调整**。各关可以跨多个赛事和运动项目；如需同场相关性定价，请使用 `/fixtures/odds/sgp`。

每个涉及的赛事返回一个普通赛事视图（按 `fixtureId` 排序），并新增 `parlay` 部分。跨赛事的串关会在每一个涉及的赛事上返回相同的条目。

每次请求最多 20 关。



## OpenAPI

````yaml /zh/api-reference/openapi.json get /fixtures/odds/parlay
openapi: 3.1.0
info:
  title: 赔率 API v5
  version: 5.0.0
  description: 高性能赔率API，由Valkey + Supabase RPC发现支持。
servers:
  - url: https://v5.oddspapi.io/zh
security:
  - ApiKeyAuth: []
  - ApiKeyHeaderAuth: []
tags:
  - name: common
  - name: fixtures
  - name: fixtures/odds
  - name: parlays
  - name: futures
  - name: futures/odds
  - name: mapping
  - name: media
  - name: settlement
paths:
  /fixtures/odds/parlay:
    get:
      tags:
        - parlays
      summary: 串关赔率
      description: >-
        根据选定的 `oddsIds` 计算串关（accumulator）赔率。


        各关按博彩公司分组，并在本地将每组的当前赔率相乘——不会向博彩公司发起请求，也**不做相关性调整**。各关可以跨多个赛事和运动项目；如需同场相关性定价，请使用
        `/fixtures/odds/sgp`。


        每个涉及的赛事返回一个普通赛事视图（按 `fixtureId` 排序），并新增 `parlay`
        部分。跨赛事的串关会在每一个涉及的赛事上返回相同的条目。


        每次请求最多 20 关。
      operationId: fixtures_odds_parlay__lang__fixtures_odds_parlay_get
      parameters:
        - $ref: '#/components/parameters/oddsIdsRequired'
      responses:
        '200':
          description: 每个涉及的赛事返回一个 FixtureParlayResponse，按 fixtureId 排序。
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FixtureParlayResponse'
              examples:
                priced:
                  summary: 两关、一家博彩公司，均可投注
                  description: >-
                    `price` 为 3.8 × 2.1 的乘积。在该端点上，只要串关处于 active
                    状态，`singlesPrice` 始终等于 `price`。
                  value:
                    - fixtureId: id1400003160574217
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 14
                        sportName: American Football
                      tournament:
                        tournamentId: 31
                        tournamentName: NFL
                        categoryName: USA
                      season:
                        seasonId: 31625
                        seasonName: NFL 25/26
                        seasonRound: 16
                      venue:
                        venueId: 5821
                        venueSlug: ford-field
                        venueName: Ford Field
                        venueLocation: Detroit, MI, USA
                      startTime: 1766698200
                      participants:
                        participant1Id: 4423
                        participant1RotNr: 271
                        participant1Name: Minnesota Vikings
                        participant1ShortName: Minnesota
                        participant1Abbr: MIN
                        participant2Id: 4419
                        participant2RotNr: 272
                        participant2Name: Detroit Lions
                        participant2ShortName: Detroit
                        participant2Abbr: DET
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 15
                      externalProviders:
                        betgeniusId: 13755104
                        betradarId: 60574217
                        pinnacleId: 1620331774
                      odds:
                        bet365:
                          id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.8
                            marketActive: true
                            mainLine: true
                            priceAmerican: 280
                            marketId: 141
                            changedAt: 1766667441097
                          id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            outcomeId: 146
                            playerId: 0
                            active: true
                            price: 2.1
                            marketActive: true
                            mainLine: true
                            priceAmerican: 110
                            marketId: 146
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186526495'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                      parlay:
                        bet365:
                          id1400003160574217:bet365:141:0,id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            active: true
                            price: 7.98
                            priceFractional: 349/50
                            priceAmerican: 698
                            singlesPrice: 7.98
                            changedAt: 1766667441097
                compare_bookmakers:
                  summary: 同样两关，两家博彩公司
                  description: 在多家博彩公司请求相同的选项，每家都会作为独立的串关定价，并在各自的 `parlayId` 下并列返回。
                  value:
                    - fixtureId: id1400003160574217
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 14
                        sportName: American Football
                      tournament:
                        tournamentId: 31
                        tournamentName: NFL
                        categoryName: USA
                      season:
                        seasonId: 31625
                        seasonName: NFL 25/26
                        seasonRound: 16
                      venue:
                        venueId: 5821
                        venueSlug: ford-field
                        venueName: Ford Field
                        venueLocation: Detroit, MI, USA
                      startTime: 1766698200
                      participants:
                        participant1Id: 4423
                        participant1RotNr: 271
                        participant1Name: Minnesota Vikings
                        participant1ShortName: Minnesota
                        participant1Abbr: MIN
                        participant2Id: 4419
                        participant2RotNr: 272
                        participant2Name: Detroit Lions
                        participant2ShortName: Detroit
                        participant2Abbr: DET
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 15
                      externalProviders:
                        betgeniusId: 13755104
                        betradarId: 60574217
                        pinnacleId: 1620331774
                      odds:
                        bet365:
                          id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.8
                            marketActive: true
                            mainLine: true
                            priceAmerican: 280
                            marketId: 141
                            changedAt: 1766667441097
                          id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            outcomeId: 146
                            playerId: 0
                            active: true
                            price: 2.1
                            marketActive: true
                            mainLine: true
                            priceAmerican: 110
                            marketId: 146
                            changedAt: 1766667441097
                        pinnacle:
                          id1400003160574217:pinnacle:141:0:
                            bookmaker: pinnacle
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.95
                            marketActive: true
                            mainLine: true
                            priceAmerican: 110
                            marketId: 141
                            changedAt: 1766667441097
                          id1400003160574217:pinnacle:146:0:
                            bookmaker: pinnacle
                            outcomeId: 146
                            playerId: 0
                            active: true
                            price: 2.16
                            marketActive: true
                            mainLine: true
                            priceAmerican: 110
                            marketId: 146
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186526495'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                        pinnacle:
                          bookmaker: pinnacle
                          bookmakerFixtureId: '1628488896'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:20:57.402000+00:00'
                      parlay:
                        bet365:
                          id1400003160574217:bet365:141:0,id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            active: true
                            price: 7.98
                            priceFractional: 349/50
                            priceAmerican: 698
                            singlesPrice: 7.98
                            changedAt: 1766667441097
                        pinnacle:
                          id1400003160574217:pinnacle:141:0,id1400003160574217:pinnacle:146:0:
                            bookmaker: pinnacle
                            active: true
                            price: 8.532
                            priceFractional: 1883/250
                            priceAmerican: 753
                            singlesPrice: 8.532
                            changedAt: 1766667441097
                multi_fixture:
                  summary: 跨两个赛事的各关（串关）
                  description: >-
                    该串关跨越一场 NFL 和一场 NBA 赛事。它会在**两个**赛事上都返回，`parlayId`
                    与条目内容相同；每个赛事的 `odds` 部分只包含属于自己的那一关。
                  value:
                    - fixtureId: id1400003160574217
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 14
                        sportName: American Football
                      tournament:
                        tournamentId: 31
                        tournamentName: NFL
                        categoryName: USA
                      season:
                        seasonId: 31625
                        seasonName: NFL 25/26
                        seasonRound: 16
                      venue:
                        venueId: 5821
                        venueSlug: ford-field
                        venueName: Ford Field
                        venueLocation: Detroit, MI, USA
                      startTime: 1766698200
                      participants:
                        participant1Id: 4423
                        participant1RotNr: 271
                        participant1Name: Minnesota Vikings
                        participant1ShortName: Minnesota
                        participant1Abbr: MIN
                        participant2Id: 4419
                        participant2RotNr: 272
                        participant2Name: Detroit Lions
                        participant2ShortName: Detroit
                        participant2Abbr: DET
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 15
                      externalProviders:
                        betgeniusId: 13755104
                        betradarId: 60574217
                        pinnacleId: 1620331774
                      odds:
                        bet365:
                          id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.8
                            marketActive: true
                            mainLine: true
                            priceAmerican: 280
                            marketId: 141
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186526495'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                      parlay:
                        bet365:
                          id1100013270505136:bet365:111:0,id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            active: true
                            price: 4.389
                            priceFractional: 3389/1000
                            priceAmerican: 339
                            singlesPrice: 4.389
                            changedAt: 1766667441097
                    - fixtureId: id1100013270505136
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 11
                        sportName: Basketball
                      tournament:
                        tournamentId: 132
                        tournamentName: NBA
                        categoryName: USA
                      season:
                        seasonId: 131631
                        seasonName: NBA 25/26
                        seasonRound: null
                      venue:
                        venueId: 6112
                        venueSlug: frost-bank-center
                        venueName: Frost Bank Center
                        venueLocation: San Antonio, TX, USA
                      startTime: 1776816000
                      participants:
                        participant1Id: 3429
                        participant1Name: San Antonio Spurs
                        participant2Id: 3414
                        participant2Name: Portland Trail Blazers
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 12
                      externalProviders:
                        betgeniusId: 13808312
                        betradarId: 70505136
                        pinnacleId: 1628488896
                      odds:
                        bet365:
                          id1100013270505136:bet365:111:0:
                            bookmaker: bet365
                            outcomeId: 111
                            playerId: 0
                            active: true
                            price: 1.155
                            marketActive: true
                            mainLine: true
                            priceAmerican: 110
                            marketId: 111
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186884210'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                      parlay:
                        bet365:
                          id1100013270505136:bet365:111:0,id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            active: true
                            price: 4.389
                            priceFractional: 3389/1000
                            priceAmerican: 339
                            singlesPrice: 4.389
                            changedAt: 1766667441097
                leg_suspended:
                  summary: 某一关存在，但当前不可投注
                  description: >-
                    该关仍会在 `odds` 中返回，并带有 `active:
                    false`；串关也保留一个条目：inactive、`price:
                    1`（退还本金）、`meta.inactiveReason` 说明原因，`singlesPrice`
                    仍显示原本可以派彩的赔率。
                  value:
                    - fixtureId: id1400003160574217
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 14
                        sportName: American Football
                      tournament:
                        tournamentId: 31
                        tournamentName: NFL
                        categoryName: USA
                      season:
                        seasonId: 31625
                        seasonName: NFL 25/26
                        seasonRound: 16
                      venue:
                        venueId: 5821
                        venueSlug: ford-field
                        venueName: Ford Field
                        venueLocation: Detroit, MI, USA
                      startTime: 1766698200
                      participants:
                        participant1Id: 4423
                        participant1RotNr: 271
                        participant1Name: Minnesota Vikings
                        participant1ShortName: Minnesota
                        participant1Abbr: MIN
                        participant2Id: 4419
                        participant2RotNr: 272
                        participant2Name: Detroit Lions
                        participant2ShortName: Detroit
                        participant2Abbr: DET
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 15
                      externalProviders:
                        betgeniusId: 13755104
                        betradarId: 60574217
                        pinnacleId: 1620331774
                      odds:
                        bet365:
                          id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.8
                            marketActive: true
                            mainLine: true
                            priceAmerican: 280
                            marketId: 141
                            changedAt: 1766667441097
                          id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            outcomeId: 146
                            playerId: 0
                            active: false
                            price: 2.1
                            marketActive: false
                            mainLine: true
                            priceAmerican: 110
                            marketId: 146
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186526495'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                      parlay:
                        bet365:
                          id1400003160574217:bet365:141:0,id1400003160574217:bet365:146:0:
                            bookmaker: bet365
                            active: false
                            price: 1
                            singlesPrice: 7.98
                            changedAt: 1766667441097
                            meta:
                              inactiveReason: market_closed
                leg_missing:
                  summary: 某一关无法找到
                  description: >-
                    未知的博彩公司，或未知/已过期的
                    oddsId。只给串关的一半定价没有意义，因此该博彩公司**不会**得到条目，`parlay` 返回
                    `{}`——`missingOddsIds` 会列出未找到的各关。
                  value:
                    - fixtureId: id1400003160574217
                      status:
                        live: false
                        statusId: 0
                        statusName: Pre-Game
                      sport:
                        sportId: 14
                        sportName: American Football
                      tournament:
                        tournamentId: 31
                        tournamentName: NFL
                        categoryName: USA
                      season:
                        seasonId: 31625
                        seasonName: NFL 25/26
                        seasonRound: 16
                      venue:
                        venueId: 5821
                        venueSlug: ford-field
                        venueName: Ford Field
                        venueLocation: Detroit, MI, USA
                      startTime: 1766698200
                      participants:
                        participant1Id: 4423
                        participant1RotNr: 271
                        participant1Name: Minnesota Vikings
                        participant1ShortName: Minnesota
                        participant1Abbr: MIN
                        participant2Id: 4419
                        participant2RotNr: 272
                        participant2Name: Detroit Lions
                        participant2ShortName: Detroit
                        participant2Abbr: DET
                      scores: {}
                      clock:
                        currentPeriod: null
                        currentTime: null
                        remainingTime: null
                        remainingTimeInPeriod: null
                        stopped: null
                      expectedPeriods: 4
                      periodLength: 15
                      externalProviders:
                        betgeniusId: 13755104
                        betradarId: 60574217
                        pinnacleId: 1620331774
                      odds:
                        bet365:
                          id1400003160574217:bet365:141:0:
                            bookmaker: bet365
                            outcomeId: 141
                            playerId: 0
                            active: true
                            price: 3.8
                            marketActive: true
                            mainLine: true
                            priceAmerican: 280
                            marketId: 141
                            changedAt: 1766667441097
                      bookmakers:
                        bet365:
                          bookmaker: bet365
                          bookmakerFixtureId: '186526495'
                          fixturePath: null
                          hasOdds: true
                          staleOdds: false
                          suspended: false
                          participantsRotated: false
                          updatedAt: '2025-12-16T23:21:33.763847+00:00'
                      missingOddsIds:
                        - id1400003160574217:bet365:146:0
                      parlay: {}
        '400':
          $ref: '#/components/responses/ApiError'
        '401':
          $ref: '#/components/responses/ApiError'
        '403':
          $ref: '#/components/responses/ApiError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/ApiError'
components:
  parameters:
    oddsIdsRequired:
      name: oddsIds
      in: query
      required: true
      schema:
        type: string
      description: >-
        以逗号或空格分隔的 oddsIds，格式为
        `{fixtureId}:{bookmaker}:{outcomeId}:{playerId}`。重复项会被去除，列表会被排序。每家博彩公司的各关构成一个串关。最多
        20 关。
  schemas:
    FixtureParlayResponse:
      allOf:
        - $ref: '#/components/schemas/Fixture'
        - type: object
          properties:
            odds:
              allOf:
                - $ref: '#/components/schemas/OddsByBookmaker'
              description: >-
                仅包含该赛事中所请求的各关——包括 inactive 的关（不做 `activeOnly` 过滤）。其结构与内容与
                `/fixtures/odds` 返回的对应行完全一致。
            bookmakers:
              type: object
              additionalProperties:
                $ref: '#/components/schemas/BookmakerFixtureMeta'
              description: bookmakerSlug -> BookmakerFixtureMeta，仅包含所请求的博彩公司。
            missingOddsIds:
              type: array
              items:
                type: string
              description: 该赛事中未能找到的已请求 oddsIds（未知的博彩公司、未知或已过期的 oddsId）。仅在至少有一关缺失时才会出现。
            parlay:
              $ref: '#/components/schemas/ParlayByBookmaker'
          required:
            - odds
            - bookmakers
            - parlay
          additionalProperties: true
    Fixture:
      type: object
      properties:
        fixtureId:
          type: string
          description: 赛事标识符：`{prefix}{sportId}{tournamentId}{nativeId}` —— 参见核心概念 → ID 结构。
        status:
          $ref: '#/components/schemas/Status'
          description: 赛事的生命周期状态。
        sport:
          $ref: '#/components/schemas/SportRef'
          description: 运动引用。
        tournament:
          $ref: '#/components/schemas/TournamentRef'
          description: 锦标赛引用。
        season:
          $ref: '#/components/schemas/SeasonRef'
          description: 赛季引用（如已解析）。
        venue:
          $ref: '#/components/schemas/VenueRef'
          description: 场馆引用（如已知）。
        startTime:
          type: integer
          description: Epoch seconds (UTC).
        trueStartTime:
          type:
            - string
            - 'null'
          description: 实际开始时间（ISO 8601，一旦已知）—— 可能与计划的 `startTime` 不同。
        trueEndTime:
          type:
            - string
            - 'null'
          description: 实际结束时间（ISO 8601，一旦已知）。
        participants:
          $ref: '#/components/schemas/ParticipantsRef'
          description: 双方参赛者，含名称、轮转号和缩写。
        scores:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ScorePeriod'
          description: 按赛段键组织的比分行（`result`、`p1`……）。
        clock:
          anyOf:
            - $ref: '#/components/schemas/Clock'
            - type: 'null'
          description: 比赛进行中的实时计时。
        expectedPeriods:
          type:
            - integer
            - 'null'
          description: 该赛事预期的常规赛段数 —— 结合 `periodLength` 用于按运动/联赛解读赛段键。
        periodLength:
          type:
            - integer
            - 'null'
          description: 常规赛段的时长（分钟）。
        externalProviders:
          $ref: '#/components/schemas/ExternalProviders'
          description: 该赛事在外部数据源（betradar、pinnacle 等）的原生标识符。
        bookmakers:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BookmakerFixtureMeta'
          description: >-
            该赛事按博彩公司划分的可用性与新鲜度元数据。仅包含当前为该赛事提供有效实时赔率的博彩公司。在赛事和赔率端点中返回；在
            CLV、历史赔率和结算响应中省略。
      required:
        - fixtureId
        - status
        - sport
        - tournament
        - season
        - venue
        - startTime
        - participants
        - scores
        - clock
        - externalProviders
      additionalProperties: true
    OddsByBookmaker:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/OddsMap'
    BookmakerFixtureMeta:
      type: object
      properties:
        bookmaker:
          type: string
          description: 博彩公司标识。
        bookmakerFixtureId:
          type:
            - string
            - 'null'
          description: 该赛事在博彩公司的原生标识符。
        fixturePath:
          type:
            - string
            - 'null'
          description: 该赛事在博彩公司网站上的页面路径（如已知）。
        hasOdds:
          type: boolean
          description: 博彩公司当前是否为该赛事发布赔率。
        staleOdds:
          type: boolean
          description: 交易关键字段：与该博彩公司的连接丢失或中断时为 true，此时无法再保证赔率的新鲜度。
        staleOddsResponseCode:
          type:
            - integer
            - 'null'
          deprecated: true
          description: '**已弃用。** 陈旧检测期间观察到的 HTTP 状态码（如有）。请改用 `staleOdds`。'
        suspended:
          type: boolean
          description: 博彩公司暂停该赛事投注时为 true。
        participantsRotated:
          type: boolean
          description: 如果博彩公司列出的参赛者顺序与 OddsPapi 相反（参赛者 1/2 互换）则为 true。
        meta:
          type:
            - object
            - 'null'
          additionalProperties: true
          description: 博彩公司特定的元数据。
        updatedAt:
          type: string
          description: 该博彩公司元数据最近一次变化的时间。
      required:
        - bookmaker
        - hasOdds
        - staleOdds
        - suspended
        - participantsRotated
        - updatedAt
      additionalProperties: true
    ParlayByBookmaker:
      type: object
      description: >-
        bookmakerSlug -> (parlayId -> ParlayEntry)。`parlayId` 是去重并排序后的 oddsIds 以
        `,` 连接而成。如果某家博彩公司的各关未能全部找到，它会被整体省略，因此该对象可能为 `{}`。
      additionalProperties:
        type: object
        additionalProperties:
          $ref: '#/components/schemas/ParlayEntry'
    Error:
      type: object
      description: Concrete error format returned by this API (no FastAPI detail wrapper).
      properties:
        error:
          type: integer
          description: HTTP status code
        message:
          type: string
          description: Human-readable error message
        details:
          description: Optional extra details (string/object/array depending on the error).
        reason:
          type: string
          deprecated: true
          description: '**已弃用**，`code` 的别名，请改读 `code`。'
        code:
          type: string
          description: 机器可读的原因代码。
      required:
        - error
        - message
      additionalProperties: true
    HTTPValidationError:
      title: HTTPValidationError
      type: object
      properties:
        detail:
          title: Detail
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
          description: 校验错误列表。
    Status:
      type: object
      properties:
        live:
          type: boolean
          description: 便捷标志 —— 仅在比赛进行中为 true（`statusId` 为 1）。
        statusId:
          type: integer
          description: 生命周期状态：`0` 赛前、`1` 进行中、`2` 已结束、`3` 已取消。只会向前推进 —— 请始终基于此 ID 做分支判断。
        statusName:
          type: string
          description: 状态的翻译显示标签。业务逻辑请基于 `statusId` 判断，切勿依赖此字符串。
      required:
        - live
        - statusId
        - statusName
      additionalProperties: true
    SportRef:
      type: object
      properties:
        sportId:
          type: integer
          description: 数字运动标识符。
        sportName:
          type: string
          description: 运动显示名称，跟随请求的语言前缀翻译。
      required:
        - sportId
        - sportName
      additionalProperties: true
    TournamentRef:
      type: object
      properties:
        tournamentId:
          type: integer
          description: 数字锦标赛标识符。
        tournamentName:
          type: string
          description: 锦标赛显示名称，跟随请求的语言前缀翻译。
        categoryName:
          type:
            - string
            - 'null'
          description: 类别（通常是国家/地区）显示名称，已翻译。
      required:
        - tournamentId
        - tournamentName
      additionalProperties: true
    SeasonRef:
      type: object
      properties:
        seasonId:
          type:
            - integer
            - 'null'
          description: 数字赛季标识符（如已知）。
        seasonName:
          type:
            - string
            - 'null'
          description: 赛季显示名称，已翻译。
        seasonRound:
          type:
            - integer
            - 'null'
          description: 赛季内的轮次编号（如适用）。
      additionalProperties: true
    VenueRef:
      type: object
      properties:
        venueId:
          type:
            - integer
            - 'null'
          description: 数字场馆标识符（如已知）。
        venueName:
          type:
            - string
            - 'null'
          description: 场馆显示名称，已翻译。
        venueLocation:
          type:
            - string
            - 'null'
          description: 场馆所在地（城市），已翻译。
      additionalProperties: true
    ParticipantsRef:
      type: object
      properties:
        participant1Id:
          type: integer
          description: 参赛者 1（主队 / 先列一方）的标识符。
        participant1RotNr:
          type:
            - integer
            - 'null'
          description: 参赛者 1 的轮转号（美式盘口惯例，如有）。
        participant1Name:
          type:
            - string
            - 'null'
          description: 参赛者 1 的全名，已翻译。
        participant1ShortName:
          type:
            - string
            - 'null'
          description: 参赛者 1 的短名称。
        participant1Abbr:
          type:
            - string
            - 'null'
          description: 参赛者 1 的缩写。
        participant2Id:
          type: integer
          description: 参赛者 2（客队 / 后列一方）的标识符。
        participant2RotNr:
          type:
            - integer
            - 'null'
          description: 参赛者 2 的轮转号（美式盘口惯例，如有）。
        participant2Name:
          type:
            - string
            - 'null'
          description: 参赛者 2 的全名，已翻译。
        participant2ShortName:
          type:
            - string
            - 'null'
          description: 参赛者 2 的短名称。
        participant2Abbr:
          type:
            - string
            - 'null'
          description: 参赛者 2 的缩写。
      required:
        - participant1Id
        - participant2Id
      additionalProperties: true
    ScorePeriod:
      type: object
      properties:
        period:
          type: string
          description: 该比分行对应的赛段键（`result` = 总比分；参见枚举页）。
        participant1Score:
          type: integer
          description: 参赛者 1 在该赛段的得分。
        participant2Score:
          type: integer
          description: 参赛者 2 在该赛段的得分。
        updatedAt:
          type: string
          description: 该比分值最近一次变化的时间。
      required:
        - period
        - participant1Score
        - participant2Score
        - updatedAt
      additionalProperties: true
    Clock:
      type: object
      properties:
        currentPeriod:
          type:
            - string
            - 'null'
          description: 当前正在进行的赛段键（参见枚举页的赛段词汇表）。
        currentTime:
          type:
            - string
            - 'null'
          description: 比赛已进行时间，`mm:ss`。
        remainingTime:
          type:
            - string
            - 'null'
          description: 比赛剩余时间，`mm:ss`（倒计时类运动）。
        remainingTimeInPeriod:
          type:
            - string
            - 'null'
          description: 当前赛段剩余时间，`mm:ss`。
        stopped:
          type:
            - boolean
            - 'null'
          description: 比赛计时暂停时为 true。
      additionalProperties: true
    ExternalProviders:
      type: object
      additionalProperties: true
    OddsMap:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/OddQuote'
    ParlayEntry:
      type: object
      description: 某家博彩公司对某个串关给出的赔率。由各关赔率在本地相乘得出——不做相关性调整。
      properties:
        bookmaker:
          type: string
          description: 博彩公司标识（slug）。
        active:
          type: boolean
          description: 当某一关被暂停、其盘口已关闭，或该博彩公司在某个涉及的赛事上被暂停时，为 false。
        price:
          type: number
          description: 各关赔率的小数乘积，保留 3 位小数。当串关不可投注时为 `1`（退还本金）。
        priceFractional:
          type: string
          description: 由 `price` 换算而来；在 `price > 1` 时存在。
        priceAmerican:
          type: integer
          description: 由 `price` 换算而来；在 `price > 1` 时存在。
        singlesPrice:
          type: number
          description: >-
            各关的简单乘积。在 `/fixtures/odds/parlay` 上等于 `price`；在 `/fixtures/odds/sgp`
            上，两者之差即为相关性加成。
        changedAt:
          type: integer
          description: 该条目的定价时间，UTC 纪元毫秒。
        meta:
          type: object
          description: 在有额外信息需要说明时存在。
          properties:
            inactiveReason:
              type: string
              enum:
                - leg_suspended
                - market_closed
                - bookmaker_suspended
              description: '`active` 为 false 的原因。'
          additionalProperties: true
      required:
        - bookmaker
        - active
        - price
        - singlesPrice
        - changedAt
      additionalProperties: true
    ValidationError:
      title: ValidationError
      type: object
      required:
        - loc
        - msg
        - type
      properties:
        loc:
          title: Location
          type: array
          items:
            anyOf:
              - type: string
              - type: integer
          description: 无效参数的位置（路径片段）。
        msg:
          title: Message
          type: string
          description: 人类可读的校验信息。
        type:
          title: Error Type
          type: string
          description: 机器可读的错误类型。
    OddQuote:
      type: object
      properties:
        bookmaker:
          type: string
          description: 博彩公司标识。
        outcomeId:
          type: integer
          description: 该投注选项的冻结结果标识符。
        playerId:
          type: integer
          description: 价格对应的球员；非球员盘口为 `0`。
        price:
          type: number
          description: 十进制（欧洲）赔率。
        active:
          type: boolean
          description: 该结果当前在博彩公司是否可投注。
        marketActive:
          type:
            - boolean
            - 'null'
          description: 整个盘口在博彩公司是否处于激活状态。
        mainLine:
          type:
            - boolean
            - 'null'
          description: 是否为博彩公司在该盘口类型下的主盘口线。
        marketId:
          type: integer
          description: 该结果所属的冻结盘口标识符。
        bookmakerMarketId:
          type:
            - string
            - 'null'
          description: 博彩公司的原生盘口标识符。
        bookmakerOutcomeId:
          type:
            - string
            - 'null'
          description: 博彩公司的原生结果标识符。
        bookmakerChangedAt:
          type:
            - integer
            - 'null'
          description: 博彩公司提供的变更时间戳（毫秒，如有）。
        priceFractional:
          type:
            - string
            - 'null'
          description: 分数赔率（如 `5/2`）。
        priceAmerican:
          type:
            - integer
            - 'null'
          description: 美式赔率（如 `-110`、`+250`）。
        meta:
          type:
            - object
            - 'null'
          description: 博彩公司特定的元数据（订单簿、赔率阶梯等）。
        limit:
          type:
            - number
            - 'null'
          description: 博彩公司提供的最大可接受投注额（如有）。
        betslip:
          type:
            - string
            - 'null'
          description: 博彩公司投注单 / 深链接令牌（如有）。
        changedAt:
          type: integer
          description: OddsPapi 在博彩商处观察到此变更的时间（毫秒，UTC）—— 始终存在。
      required:
        - bookmaker
        - outcomeId
        - playerId
        - price
        - active
        - changedAt
      additionalProperties: true
  responses:
    ApiError:
      description: API error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalid_filters:
              summary: Invalid filters
              value:
                error: 400
                message: Invalid filters.
                reason: invalid_filters
            invalid_api_key:
              summary: Invalid apiKey
              value:
                error: 401
                message: invalid apiKey
                reason: invalid_api_key
            rate_limited:
              summary: Rate limited
              value:
                error: 429
                message: rate limit exceeded
                reason: rate_limited
                retryAfterSec: 1
    ValidationError:
      description: Validation Error (framework-level)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPValidationError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: apiKey
      description: 作为 `apiKey` 查询参数传入的 API 密钥。
    ApiKeyHeaderAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: 作为 `X-API-Key` 请求头传入的 API 密钥。

````