snake_case. It adds Server-Sent Events
(SSE) for live quote pricing and a WebSocket for post-trade events.
Base URL
Try it without a key
Market data is public:Authentication
Send your API key in theX-API-Key header on every authenticated request:
Authorization: Bearer <jwt>. Either
scheme works on any authenticated endpoint. Minting a new API key (POST /v1/api-keys) requires a
Privy JWT or a key with the keys:manage scope.
Every key is scoped. The scope catalog is on Authentication.
Response envelope
Successful responses wrap the resource indata:
meta:
meta.cursor as ?cursor=. Cursors are opaque, so do not
parse or build them.
Units
Any field whose name ends in
_micro is an integer of microUSDC, where 1000000 equals 1.00
USDC. Every other money field is a decimal USDC number. Both conventions appear in the same
payload on the cashout surface.Errors
Every error, on every endpoint, has the same shape:error.code, never on error.message. Codes, rejection reasons, and retry guidance are
on Errors.
Rate limits
Every response carriesX-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. The
per-minute limits are on Limits and fees.
Endpoint groups
Markets
Browse prediction markets across Kalshi and Polymarket. Public.
Quote service
Open a quote request, stream live pricing, and commit the best quote.
Parlays
List your parlays and read settlement detail.
Funds and vault
Balances, portfolio, P&L, and withdrawals.
Webhooks
Configure signed event delivery.
Market maker
Stream quote requests, submit quotes, and confirm trades.
Errors
Every code and rejection reason, and which to retry.
Changelog
Endpoints added, retired, and renamed.

