- Skill ID
- machina-sports/sports-skills/kalshi
- Publisher
- machina-sports
- Repository
- sports-skills
- Installs
- 0
- Files
- 6
- License
- MIT
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
machina-sports/sports-skills/kalshiInstalls these files- SKILL.md
- references/api-reference.md
- references/api.md
- references/commands.md
- references/series-tickers.md
- scripts/validate_params.sh
What this skill tells the agent
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:
sports-skills kalshi search_markets --sport=nba
sports-skills kalshi get_todays_events --sport=nba
sports-skills kalshi get_sports_config
sports-skills kalshi get_markets --series_ticker=KXNBA --status=openPython SDK (alternative):
from sports_skills import kalshi
kalshi.search_markets(sport='nba')
kalshi.search_markets(sport='nba', query='Lakers')
kalshi.get_todays_events(sport='nba')
kalshi.get_sports_config()
kalshi.get_markets(series_ticker="KXNBA", status="open")CRITICAL: Before Any Query
CRITICAL: Before calling any market endpoint, verify:
- The
sportparameter is always passed tosearch_marketsandget_todays_eventsfor 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:
WRONG: search_markets(query="Leeds") → 0 results
RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds marketsImportant 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_priceof 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=...), andget_sports_config()work the same way on both platforms.
Workflows
Sport Market Search (Recommended)
search_markets --sport=nba— finds all open NBA markets.- Optionally add
--query="Lakers"to filter by keyword. - Results include yes_bid, no_bid, volume for each market.
Today's Events
get_todays_events --sport=nba— open events with nested markets.- Present events with prices (price = implied probability, 0-100 scale).
Futures Market Check
get_markets --series_ticker=<ticker> --status=open- Sort by
last_pricedescending. - Present top contenders with probability and volume.
Market Price History
- Get market ticker from
search_markets --sport=nba. get_market_candlesticks --series_ticker=<s> --ticker=<t> --start_ts=<start> --end_ts=<end> --period_interval=60- 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:
- 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:
- 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:
- 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:
- Call
search_markets(sport='ucl')orget_markets(series_ticker="KXUCL", status="open") - Sort by
last_pricedescending (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:
- Get market ticker from
search_markets(sport='nba') - 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. Usesearch_marketsorget_marketsto 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
More from machina-sports
Use this skill in a project
Open any RiverX project, search the Skills panel for machina-sports/sports-skills/kalshi, and install it in one click.
