Skip to Content
Core ConceptsLiquidity and Limits

Liquidity and Limits

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.

Fields on odds rowsPermalink for this section

FieldTypeMeaningEmitting books
max_betnumberMaximum wager the book will accept on this market or selection at the current line.Pinnacle, SBObet
volumenumberCumulative traded volume on the selection, in the exchange’s native units.Kalshi
volume_24hnumberRolling 24-hour traded volume in the exchange’s native units.Polymarket, Kalshi
open_interestnumberOutstanding open contracts on the selection.Kalshi
exchange_token_idstringExchange-native token or market hash for downstream order routing.Polymarket (token_id), SX Bet (marketHash)

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.

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.

What we do not surfacePermalink for this section

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

Detecting coverage gapsPermalink for this section

If a customer-side coverage check relies on liquidity:

  1. Filter /api/v1/odds by the books you care about.
  2. For exchange-style books, filter rows where volume_24h or open_interest exceeds your minimum threshold.
  3. For traditional books, use max_bet when emitted as a coarse limit signal.
  4. For everything else, fall back to row presence: an odds row is a positive signal that the book is currently quoting that market.
Last updated on