kalshi
Original:🇺🇸 English
Translated
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers soccer, basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes. Don't use when: user asks about actual match results, scores, or statistics — use football-data or fastf1 instead. Don't use for general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead.
3installs
Added on
NPX Install
npx skill4agent add machina-sports/sports-skills kalshiTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Kalshi — Prediction Markets
Setup
Before first use, check if the CLI is available:
bash
which sports-skills || pip install sports-skillsIf fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
pip installbash
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-skillsNo 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=openPython 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
category - (str, optional): Filter by tags
tags
get_series
Get details for a specific series.
- (str, required): Series ticker (see table below)
series_ticker
get_events
Get events with optional filtering.
- (int, optional): Max results (default: 100, max: 200)
limit - (str, optional): Pagination cursor
cursor - (str, optional): Filter by status ("open", "closed", "settled")
status - (str, optional): Filter by series ticker
series_ticker - (bool, optional): Include nested markets
with_nested_markets
get_event
Get details for a specific event.
- (str, required): Event ticker
event_ticker - (bool, optional): Include nested markets
with_nested_markets
get_markets
Get markets with optional filtering.
- (int, optional): Max results (default: 100)
limit - (str, optional): Pagination cursor
cursor - (str, optional): Filter by event
event_ticker - (str, optional): Filter by series
series_ticker - (str, optional): Filter ("unopened", "open", "closed", "settled")
status - (str, optional): Comma-separated market tickers
tickers
get_market
Get details for a specific market.
- (str, required): Market ticker
ticker
get_trades
Get recent trades.
- (int, optional): Max results (default: 100, max: 1000)
limit - (str, optional): Pagination cursor
cursor - (str, optional): Filter by market ticker
ticker - (int, optional): After Unix timestamp
min_ts - (int, optional): Before Unix timestamp
max_ts
get_market_candlesticks
Get OHLC candlestick data.
- (str, required): Series ticker
series_ticker - (str, required): Market ticker
ticker - (int, required): Start Unix timestamp
start_ts - (int, required): End Unix timestamp
end_ts - (int, required): Interval in minutes (1, 60, or 1440)
period_interval
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.
get_sports_filters()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%)
last_price - Present top teams with ,
yes_sub_title, andlast_pricevolume
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
sports-skills. If pip fails with a Python version error, you need Python 3.10+ — see Setup section.pip install sports-skills - : Same as above — install the package. Prefer the CLI over Python imports to avoid path issues.
ModuleNotFoundError: No module named 'sports_skills' - Empty market results: Use to filter for active markets. Default returns all statuses including settled/closed.
status="open" - 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.
get_sports_filters() - "Football" returned NFL, not soccer: Kalshi categorizes American Football as "Football" and soccer as "Soccer". Use ,
KXUCL, etc. for soccer — see tickers table.KXLALIGA - Pagination: Default limit is 100. If results are truncated, use the value from the response to fetch the next page.
cursor - Candlestick timestamps: and
start_tsmust be Unix timestamps (seconds).end_tsis in minutes: 1 (1-min), 60 (1-hour), or 1440 (1-day).period_interval
API
- Base URL:
https://api.elections.kalshi.com/trade-api/v2 - All endpoints are public, read-only. No authentication required.