Kalshi — Prediction Markets
Setup
Before first use, check if the CLI is available:
bash
which sports-skills || pip install sports-skills
If
fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
bash
python3 --version # check version
# If < 3.10, try: python3.12 -m pip install sports-skills
# On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills
No API keys required.
Quick Start
Prefer the CLI — it avoids Python import path issues:
bash
sports-skills kalshi get_markets --series_ticker=KXNBA
sports-skills kalshi get_events --series_ticker=KXNBA --status=open
Python SDK (alternative):
python
from sports_skills import kalshi
markets = kalshi.get_markets(series_ticker="KXNBA")
event = kalshi.get_event(event_ticker="KXNBA-26FEB14")
Commands
get_exchange_status
Get exchange status (trading active, maintenance). No params.
get_exchange_schedule
Get exchange operating schedule. No params.
get_series_list
Get all available series.
- (str, optional): Filter by category
- (str, optional): Filter by tags
get_series
Get details for a specific series.
- (str, required): Series ticker (see table below)
get_events
Get events with optional filtering.
- (int, optional): Max results (default: 100, max: 200)
- (str, optional): Pagination cursor
- (str, optional): Filter by status ("open", "closed", "settled")
- (str, optional): Filter by series ticker
- (bool, optional): Include nested markets
get_event
Get details for a specific event.
- (str, required): Event ticker
- (bool, optional): Include nested markets
get_markets
Get markets with optional filtering.
- (int, optional): Max results (default: 100)
- (str, optional): Pagination cursor
- (str, optional): Filter by event
- (str, optional): Filter by series
- (str, optional): Filter ("unopened", "open", "closed", "settled")
- (str, optional): Comma-separated market tickers
get_market
Get details for a specific market.
- (str, required): Market ticker
get_trades
Get recent trades.
- (int, optional): Max results (default: 100, max: 1000)
- (str, optional): Pagination cursor
- (str, optional): Filter by market ticker
- (int, optional): After Unix timestamp
- (int, optional): Before Unix timestamp
get_market_candlesticks
Get OHLC candlestick data.
- (str, required): Series ticker
- (str, required): Market ticker
- (int, required): Start Unix timestamp
- (int, required): End Unix timestamp
- (int, required): Interval in minutes (1, 60, or 1440)
get_sports_filters
Get available sports filter categories. No params.
Common Series Tickers
IMPORTANT: On Kalshi, "Football" = American Football (NFL). Soccer is under "Soccer".
| Sport | Series Ticker | Notes |
|---|
| NBA | | Games + futures |
| NFL | | Games + futures |
| MLB | | Games + futures |
| Champions League | | Futures (winner) |
| La Liga | | Futures (winner) |
| Bundesliga | | Futures (winner) |
| Serie A | | Futures (winner) |
| Ligue 1 | | Futures (winner) |
| FA Cup | | Futures |
| Europa League | | Futures |
| Conference League | | Futures |
Not all soccer leagues have futures/winner markets. EPL has match-day games but
no title winner market. Use
to discover all available competitions.
Examples
User: "What NBA markets are on Kalshi?"
- Call
get_events(series_ticker="KXNBA", status="open", with_nested_markets=True)
- Present events with their nested markets, yes/no prices, and volume
User: "Who will win the Champions League?"
- Call
get_markets(series_ticker="KXUCL", status="open")
- Sort by descending — price = implied probability (e.g., 20 = 20%)
- Present top teams with , , and
User: "Show me the price history for this NBA game"
- Get the market ticker from
get_markets(series_ticker="KXNBA")
- Call
get_market_candlesticks(series_ticker="KXNBA", ticker="...", start_ts=..., end_ts=..., period_interval=60)
- Present OHLC data with volume
Troubleshooting
- command not found: Package not installed. Run
pip install sports-skills
. If pip fails with a Python version error, you need Python 3.10+ — see Setup section.
ModuleNotFoundError: No module named 'sports_skills'
: Same as above — install the package. Prefer the CLI over Python imports to avoid path issues.
- Empty market results: Use to filter for active markets. Default returns all statuses including settled/closed.
- Series ticker unknown: Check the Common Series Tickers table above. Use to discover categories, but note: "Football" = NFL, "Soccer" = football/soccer. Not all soccer leagues have futures markets.
- "Football" returned NFL, not soccer: Kalshi categorizes American Football as "Football" and soccer as "Soccer". Use , , etc. for soccer — see tickers table.
- Pagination: Default limit is 100. If results are truncated, use the value from the response to fetch the next page.
- Candlestick timestamps: and must be Unix timestamps (seconds). is in minutes: 1 (1-min), 60 (1-hour), or 1440 (1-day).
API
- Base URL:
https://api.elections.kalshi.com/trade-api/v2
- All endpoints are public, read-only. No authentication required.