snake_case. Not sure which channel fits your integration? Start with Real time & data channels.
Base URL
Authentication
Send your API key in theX-API-Key header on every request:
Authorization: Bearer <jwt>. Either scheme works on any authenticated endpoint. The exception is minting a new API key (POST /v1/api-keys), which requires a Privy JWT or a key with the keys:manage scope. Each key is scoped — see Authentication for the catalog.
Response envelope
Successful responses wrap the resource indata:
meta:
meta.cursor as ?cursor=. Cursors are opaque — don’t parse or build them yourself.
Errors
Errors use a consistent envelope:error.code is one of: VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, CONFLICT, RATE_LIMITED, PAYLOAD_TOO_LARGE, INTERNAL_ERROR, SERVICE_UNAVAILABLE. On a 429, error.retry_after gives the seconds to wait before retrying.
Rate limits
100 requests/minute unauthenticated, 300/minute authenticated. Every response carriesX-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
Endpoint groups
Markets
Browse prediction markets across Kalshi and Polymarket.
Quote service
Open a quote request, stream live pricing, and commit the best quote.
Parlays
List your parlays and read settlement detail.
Funds & vault
Balances, portfolio, P&L, and withdrawals.
Webhooks
Configure signed event delivery.
Market maker
Stream quote requests, submit quotes, and confirm trades.
