Overview
Kalshi is the leading CFTC-regulated prediction market in the United States, operating as a designated contract market for event contracts. Unlike Polymarket (which is blockchain-based), Kalshi operates traditional financial infrastructure with USD settlement. Its REST API gives agents programmatic access to market data, order management, and portfolio tracking.
For agents that need to operate within a fully regulated US framework, or that prefer traditional financial rails over crypto, Kalshi is the primary option.
Key Features
Regulated US exchange — CFTC-regulated as a designated contract market. Event contracts are derivatives, not gambling. Important for compliance-conscious operators.
REST API — Standard HTTP API with JSON responses. Supports market listing, order placement (market and limit), position management, and account management.
USD settlement — Operates in US dollars via bank transfer or card. No crypto, no USDC, no gas fees.
Broad market coverage — Politics, economics (Fed decisions, GDP, inflation), weather, sports, entertainment, and more. Often offers markets that Polymarket doesn’t.
Real-time data — WebSocket feeds for live order book updates and trade streams.
Agent-Friendliness
| Aspect | Rating |
|---|---|
| API quality | Good — standard REST with clear docs |
| Authentication | Email/password login, session tokens |
| JSON support | Yes — all endpoints return JSON |
| Documentation | Good — trading-api.readme.io |
| Read-only access | Requires authentication for all endpoints |
| Regulatory clarity | Excellent — fully CFTC-regulated |
Pricing
No platform fee for account creation. Per-contract trading fees apply. See Kalshi’s fee schedule for current rates.
Links
- Website: kalshi.com
- API docs: docs.kalshi.com
Quick Start
import requests
KALSHI_API = "https://api.elections.kalshi.com/trade-api/v2"
# Use demo environment for testing:
# KALSHI_API = "https://demo-api.kalshi.co/trade-api/v2"
# Authenticate with RSA-PSS (login/token auth is deprecated)
from kalshi_python_sync import Configuration, KalshiClient
config = Configuration(host=KALSHI_API)
config.api_key_id = "your-api-key-id"
with open("kalshi_private_key.pem", "r") as f:
config.private_key_pem = f.read()
client = KalshiClient(config)
# Browse markets
markets = client.get_markets(limit=10, status="open")
for market in markets.markets:
print(f"{market.ticker}: {market.title} — Yes: {market.yes_ask_dollars}")
# Place a limit order (demo environment)
order = client.create_order(
ticker="MARKET_TICKER",
action="buy",
side="yes",
count_fp="10.00",
yes_price_dollars="0.4500",
)
Kalshi provides a free demo environment at demo-api.kalshi.co with fake money — ideal for testing agent logic before going live. Switch to production by changing the base URL.
Kalshi vs. Polymarket for Agent Builders
| Feature | Kalshi API | Polymarket CLI |
|---|---|---|
| Regulation | CFTC-regulated (DCM) | Unregulated (offshore) |
| Settlement | USD via bank/card | USDC on Polygon |
| Authentication | RSA-PSS signed requests (API key + private key) | Wallet private key |
| Read without auth | Yes — public endpoints need no auth | Yes — most commands |
| Order types | Limit (market orders removed in 2026) | Market and limit |
| Market categories | Politics, economics, weather, sports, entertainment | Politics, crypto, current events |
| Demo environment | Yes — free with fake funds | No |
For compliance-conscious agent builders, Kalshi is the only option. For agents that need permissionless read access without credentials, Polymarket is more convenient. Many arbitrage agents connect to both.
Best For
Agents that need US regulatory compliance, prefer USD settlement, or want access to Kalshi-exclusive markets (particularly economics and weather). Also suitable for arbitrage agents that compare prices across Kalshi and Polymarket.
