|
1 | 1 | --- |
2 | 2 | title: "Liquidity and Limits" |
3 | | -description: "What liquidity, open-interest, and max-bet signals SharpAPI surfaces on odds rows, and what upstream sportsbooks do not expose." |
| 3 | +description: "What liquidity and limit signals SharpAPI surfaces on odds rows, and what upstream sportsbooks do not expose." |
4 | 4 | --- |
5 | 5 |
|
| 6 | +import { Callout } from 'nextra/components' |
| 7 | + |
6 | 8 | # Liquidity and Limits |
7 | 9 |
|
8 | | -SharpAPI exposes liquidity-adjacent fields when the upstream book or exchange publishes them. These fields are optional because traditional sportsbooks and exchange-style books expose different data. |
| 10 | +SharpAPI surfaces every liquidity and limit signal we receive from upstream books. These fields are optional on `/api/v1/odds` rows because traditional sportsbooks and exchange-style books expose different data. |
9 | 11 |
|
10 | 12 | ## Fields on odds rows |
11 | 13 |
|
12 | | -| Field | Meaning | Typical sources | |
13 | | -|---|---|---| |
14 | | -| `volume` | Matched volume on the selection. Units follow the upstream venue. | Exchange-style books such as Betfair, Novig, ProphetX, Polymarket, SX Bet | |
15 | | -| `volume_24h` | Trailing 24-hour matched volume. | Prediction markets and exchanges such as Kalshi and Polymarket | |
16 | | -| `open_interest` | Outstanding open interest or currently held contracts/shares. | Kalshi, Polymarket, and other exchanges that publish it | |
17 | | -| `max_bet` | Maximum accepted stake for the current line, when exposed by the book. | Pinnacle, SBObet | |
18 | | -| `exchange_token_id` | Exchange-native token or market identifier for routing orders outside SharpAPI. | Polymarket CLOB token IDs, SX Bet market hashes | |
| 14 | +| Field | Type | Meaning | Emitting books | |
| 15 | +|---|---|---|---| |
| 16 | +| `max_bet` | number | Maximum wager the book will accept on this market or selection at the current line. | Pinnacle, SBObet | |
| 17 | +| `volume` | number | Cumulative traded volume on the selection, in the exchange's native units. | Kalshi | |
| 18 | +| `volume_24h` | number | Rolling 24-hour traded volume in the exchange's native units. | Polymarket, Kalshi | |
| 19 | +| `open_interest` | number | Outstanding open contracts on the selection. | Kalshi | |
| 20 | +| `exchange_token_id` | string | Exchange-native token or market hash for downstream order routing. | Polymarket (`token_id`), SX Bet (`marketHash`) | |
| 21 | + |
| 22 | +These values are returned only when present in the source feed. Absence means the upstream book did not expose that signal for the row; it does not imply zero liquidity or a zero limit. |
19 | 23 |
|
20 | | -These values are returned on [`/api/v1/odds`](/en/api-reference/odds/) rows only when present in the source feed. Absence means the upstream book did not expose that signal for the row; it does not imply zero liquidity or a zero limit. |
| 24 | +<Callout type="info"> |
| 25 | +The exchange-side fields (`volume`, `volume_24h`, `open_interest`, and `exchange_token_id`) are liquidity proxies, not a full depth-of-book feed. Their units are not directly comparable across books. |
| 26 | +</Callout> |
21 | 27 |
|
22 | 28 | ## What we do not surface |
23 | 29 |
|
24 | | -SharpAPI does not expose a full bid/ask order book, pre-bet limit check, or sportsbook-side suspension reason on odds rows. Most traditional sportsbooks do not publish those fields in public feeds. When a market disappears, the streaming APIs can emit an `odds:removed` delta, but the upstream feed usually does not include the reason. |
| 30 | +- **Bid / ask order-book depth.** Traditional sportsbooks do not operate a visible order book. Exchange-style books may operate one internally, but the public feeds we consume generally publish aggregate volume or open interest rather than depth. |
| 31 | +- **Pre-bet limit checks.** No upstream book exposes a public "will this wager be accepted at this size" probe. `max_bet` is the book's posted ceiling on the market; the actual accept-or-reject decision is made at slip-submission time. |
| 32 | +- **Real-time suspension reasons.** When a book pulls a line, `/api/v1/odds/delta` can emit a removal and the row disappears from `/api/v1/odds`, but upstream feeds usually do not include a structured reason. |
| 33 | + |
| 34 | +## Detecting coverage gaps |
| 35 | + |
| 36 | +If a customer-side coverage check relies on liquidity: |
25 | 37 |
|
26 | | -For exchange-style books, use `volume`, `volume_24h`, and `open_interest` as practical liquidity proxies. For traditional sharp books, use `max_bet` where available; otherwise, treat limit information as unavailable rather than inferred. |
| 38 | +1. Filter `/api/v1/odds` by the books you care about. |
| 39 | +2. For exchange-style books, filter rows where `volume_24h` or `open_interest` exceeds your minimum threshold. |
| 40 | +3. For traditional books, use `max_bet` when emitted as a coarse limit signal. |
| 41 | +4. For everything else, fall back to row presence: an odds row is a positive signal that the book is currently quoting that market. |
0 commit comments