Skip to content

Commit e464098

Browse files
Codexclaude
andcommitted
docs: accurate OddsDelta field set + static-vs-dynamic guidance (SHA-3803)
The OddsDelta table omitted dynamic fields that deltas carry (is_main_line, is_alternate_line, is_stale_pregame_price, exchange volumes) and didn't spell out the static-vs-dynamic split. Document the real compact delta shape and the "merge by id, never read static fields off a delta" contract. Pairs with the server-side delta compaction (sharp-api-go #726). Content/MDX only. Type: docs Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 9566262 commit e464098

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

content/en/api-reference/stream.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,13 @@ data: {"odds":[{"id":"123456","odds_american":-150,"odds_decimal":1.667,"odds_pr
133133
| `line` | number \| null | Updated line/spread (e.g. `-3.5`), or `null` for moneyline |
134134
| `is_live` | boolean | Whether the event is currently live |
135135
| `is_active` | boolean | `true` = market open/bettable; `false` = market suspended/closed with the price frozen. A market suspending (e.g. after a goal) emits an `odds:update` with `is_active: false` — grey out the line rather than trusting the frozen price. See also the [`odds:locked`](#odds-locked) event. |
136+
| `is_main_line` | boolean | `true` when this line is the consensus main line for its market; `false` for alternate lines. Can flip as the main line moves. |
137+
| `is_alternate_line` | boolean | Positive-polarity sibling of `is_main_line` (mutually exclusive). |
138+
| `is_stale_pregame_price` | boolean | `true` when a live row still carries a pre-game price that hasn't moved since kickoff. |
136139
| `odds_changed_at` | string | ISO 8601 timestamp of the sportsbook's own source update for this line, when available. On Pinnacle, carries forward while the underlying price/line/`is_live` flag are unchanged — see [Understanding Pinnacle's `odds_changed_at`](/en/concepts/pinnacle-odds-changed-at/). |
137140

141+
Exchange books additionally carry the dynamic `volume`, `volume_24h`, `open_interest`, and `max_bet` fields when present. Everything else — `sportsbook`, `sport`, `league`, `home_team`, `away_team`, `market_type`, `selection`, `deep_link`, `event_start_time`, and the nested entity refs — is **static** and comes from the initial `snapshot`; merge each delta into your local map by `id` and never read a static field off a delta.
142+
138143
**Envelope fields:**
139144

140145
| Field | Type | Description |

0 commit comments

Comments
 (0)