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

AspectRating
API qualityGood — standard REST with clear docs
AuthenticationEmail/password login, session tokens
JSON supportYes — all endpoints return JSON
DocumentationGood — trading-api.readme.io
Read-only accessRequires authentication for all endpoints
Regulatory clarityExcellent — fully CFTC-regulated

Pricing

No platform fee for account creation. Per-contract trading fees apply. See Kalshi’s fee schedule for current rates.

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

FeatureKalshi APIPolymarket CLI
RegulationCFTC-regulated (DCM)Unregulated (offshore)
SettlementUSD via bank/cardUSDC on Polygon
AuthenticationRSA-PSS signed requests (API key + private key)Wallet private key
Read without authYes — public endpoints need no authYes — most commands
Order typesLimit (market orders removed in 2026)Market and limit
Market categoriesPolitics, economics, weather, sports, entertainmentPolitics, crypto, current events
Demo environmentYes — free with fake fundsNo

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.