At a glance
Prerequisites
- A funded Kalshi account
- A Kalshi API key pair — generate at kalshi.com/account/api by uploading the public half of an RSA keypair you generate locally
- Your RSA private key in PEM format
kalshi-key.pub to Kalshi. Note the API key ID it returns (a UUID).
One-time setup: register credentials
Place an order
Order parameters
Kalshi prices are in cents, not dollars or fractions. A 54¢ limit means
price_cents: '54', not '0.54'.Query and cancel
Common pitfalls
Order rejected: 'invalid market ticker'
Order rejected: 'invalid market ticker'
Kalshi tickers can change format between events. Pull the latest market list from
GET /api/v1/klsi/markets (or the Kalshi API directly) before placing orders to confirm the ticker is current.Position limit error
Position limit error
Kalshi imposes per-market position limits (often $25,000 max exposure per market for retail accounts). Check your remaining headroom in the Kalshi UI before placing a large order.
Sandbox vs production
Sandbox vs production
Kalshi has separate
api.elections.kalshi.com (production) and demo-api.kalshi.co (sandbox) endpoints. The Delphi server uses production by default. Sandbox API keys are not interchangeable. If you want sandbox access for testing, contact Delphi support.API reference
POST /api/v1/orders— accepts aKalshiLimitOrderinsigned_orderPOST /api/v1/users/{userID}/credentials— pass_as the path segment

