kalshi

Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets,

By machina-sports · 913 installs

npx skills add machina-sports/sports-skills --skill kalshi

Source repository · Upstream listing

Kalshi — Prediction Markets Before writing queries, consult references/api reference.md for sport codes, series tickers, and command parameters. Quick Start Prefer the CLI — it avoids Python import path issues: Python SDK (alternative): CRITICAL: Before Any Query CRITICAL: Before calling any market endpoint, verify: The sport parameter is always passed to search markets and get todays events for single game markets. Prices are on a 0 100 integer scale (20 = 20% implied probability) — do not treat as American odds. status="open" is used when querying markets to exclude settled/closed markets. Without the sport parameter: Important Notes On Kalshi, "Football" = NFL. For football/soccer (EPL, La Liga, etc.), use sport codes: epl , ucl , laliga , bundesliga , seriea , ligue1 , mls , worldcup . Prices are probabilities. A last price of 20 means 20% implied probability. Scale is 0 100 (not 0 1 like Polymarket). Always use status="open" when querying markets, otherwise results include settled/closed markets. Shared interface with Polymarket: search markets(sport=...) , get todays events(sport=...) , and get sports config() work the same way on both platforms. Workflows Sport Market Search (Recommended) 1. search markets sport=nba — finds all open NBA markets. 2. Optionally add query="Lakers" to filter by keyword. 3. Results include yes bid, no bid, volume for each market. Today's Events 1. get todays events sport=nba — open events with nested markets. 2. Present events with prices (price = implied probability, 0 100 scale). Futures Market Check 1. get markets series ticker=<ticker status=open 2. Sort by last price descending. 3. Present top contenders with probability and volume. Market Price History 1. Get market ticker from search markets sport=nba . 2. get market candlesticks series ticker=<s ticker=<t start ts=<start end ts=<end period interval=60 3. Present OHLC with volume. Commands See references/api reference.md for the full command list with parameters. Command Description get sports config Available sport codes and series tickers get todays events Today's events for a sport with nested markets search markets Find markets by sport and/or keyword get esports odds Esports markets (cs2/lol/dota2): prices in cents (0 100) plus implied probability (0 1) and decimal odds get markets Market listing (raw API) get event Event details get market Market details get trades Recent trades get market candlesticks OHLC price history Examples Example 1: NBA market search User says: "What NBA markets are on Kalshi?" Actions: 1. Call search markets(sport='nba') Result: All open NBA markets with yes/no prices and volume Example 2: EPL game markets User says: "Show me Leeds vs Man City odds on Kalshi" Actions: 1. Call search markets(sport='epl', query='Leeds') Result: Leeds EPL markets across all EPL series with prices and volume Example 3: Today's EPL events User says: "What EPL games are available on Kalshi?" Actions: 1. Call get todays events(sport='epl') Result: Today's EPL events with nested markets Example 4: Champions League futures User says: "Who will win the Champions League?" Actions: 1. Call search markets(sport='ucl') or get markets(series ticker="KXUCL", status="open") 2. Sort by last price descending (price = implied probability) Result: Top UCL contenders with yes sub title , last price (%), and volume Example 5: Market price history User says: "Show me the price history for this NBA game" Actions: 1. Get market ticker from search markets(sport='nba') 2. Call get market candlesticks(series ticker="KXNBA", ticker="...", start ts=..., end ts=..., period interval=60) Result: OHLC price data with volume Commands that DO NOT exist — never call these ~~ get odds ~~ — does not exist. Use search markets or get markets to find market prices. ~~ get team schedule ~~ — does not exist. Kalshi has markets, not schedules. Use the sport specific skill for schedules. ~~ get scores ~~ / ~~ get results ~~ — does not exist. Kalshi is a prediction market. Use the sport specific skill. If a command is not listed in references/api reference.md , it does not exist. Troubleshooting Error: search markets returns 0 results Cause: The sport parameter is missing — without it, search only returns high volume futures and misses single game markets Solution: Always pass sport='<code ' to search markets . Check references/api reference.md for valid sport codes Error: Markets returned include settled/expired contracts Cause: status parameter is not set Solution: Always pass status="open" to filter to open markets only Error: Series ticker returns no results Cause: The series ticker may be incorrect or have no open markets Solution: Call get series list() to discover available tickers, or check references/series tickers.md Error: Football/soccer markets not found when searching "Football" Cause: On Kalshi, "Football" refers to NFL — soccer uses league specific codes Solution: Use sport='epl' , sport='ucl' , sport='laliga' , etc. for soccer leagues