Skip to content
Back to skills

Sports Kalshi

ASecurity

|

  • 10 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 9, 2026
ai-agentspythonbashgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 9, 2026

npx -y skills add yanacuti1121/Yana-AI --skill sports--kalshi --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sports Kalshi?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sports  Kalshi
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yanacuti1121-sports-kalshi/badge)](https://www.skillsdirectory.com/skills/yanacuti1121-sports-kalshi)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sports--kalshi
description: >-
  |
origin: "github.com/machina-sports/sports-skills (skill: kalshi)"
license: MIT
version: "1.0.0"
compatibility: "yana-ai >= 0.14.0"
---

# 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:
```bash
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):
```python
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 `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:
```
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`.
- **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_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

Files in this skill

  • SKILL.md5.9 KB
  • scripts/validate_params.sh625 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.