machina-sports/sports-skills

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, 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 the sport-s…

First seen Feb 16, 2026

Installation

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

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from machina-sports/sports-skills · top by installs.

npx skills add machina-sports/sports-skills

Browse all from machina-sports/sports-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 215
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version0.2.0
LicenseMIT
More metadata
author
machina-sports
version
0.2.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 7,028 B
  • docs SUMMARY.md 963 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 904 installs

SKILL.md

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=open

Python 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 sport parameter is always passed to searchmarkets and gettodays_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:

WRONG: search_markets(query="Leeds")           → 0 results
RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds markets

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: searchmarkets(sport=...), gettodaysevents(sport=...), and getsports_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 yesbid, nobid, volume for each market.

Today's Events

  1. gettodaysevents --sport=nba — open events with nested markets.
  2. Present events with prices (price = implied probability, 0-100 scale).

Futures Market Check

  1. getmarkets --seriesticker=<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. getmarketcandlesticks --seriesticker=<s> --ticker=<t> --startts=<start> --endts=<end> --periodinterval=60
  3. Present OHLC with volume.

Commands

See references/api-reference.md for the full command list with parameters.

Command Description
getsportsconfig Available sport codes and series tickers
gettodaysevents Today's events for a sport with nested markets
search_markets Find markets by sport and/or keyword
getesportsodds Esports markets (cs2/lol/dota2): prices in cents (0-100) plus impliedprobability (0-1) and decimalodds
get_markets Market listing (raw API)
get_event Event details
get_market Market details
get_trades Recent trades
getmarketcandlesticks 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 gettodaysevents(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 searchmarkets(sport='ucl') or getmarkets(series_ticker="KXUCL", status="open")
  2. Sort by last_price descending (price = implied probability)

Result: Top UCL contenders with yessubtitle, 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 getmarketcandlesticks(seriesticker="KXNBA", ticker="...", startts=..., endts=..., periodinterval=60)

Result: OHLC price data with volume

Commands that DO NOT exist — never call these

  • getodds — does not exist. Use searchmarkets or get_markets to find market prices.
  • getteamschedule — does not exist. Kalshi has markets, not schedules. Use the sport-specific skill for schedules.
  • getscores / getresults — 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: searchmarkets 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 searchmarkets. 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 getserieslist() 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