You can trade prediction market contracts on Kalshi, taking positions on real-world events ranging from financial markets to sports outcomes.
Prediction markets use a pay-per-trade model. When you buy contracts, USDC is transferred from your wallet. When you sell, proceeds are sent directly back to your wallet as USDC.
How Kalshi markets work
Each Kalshi market resolves to either yes or no at a defined settlement date. Contracts are priced in cents, from 1 to 99, representing the market’s implied probability of the yes outcome (e.g., a price of 65 means the market assigns a 65% probability to yes). If you hold the winning side at settlement, each contract pays out $1.00.
Markets are organized in a hierarchy:
Series — a topic area (e.g., Bitcoin price)
Events — a specific occurrence within a series
Markets — individual yes/no questions within an event
Browse categories
View all available market categories and their associated tags:
curl https://api.useknot.xyz/predictions/categories \
-H "Authorization: Bearer <token>"
Sports filters
Get sports-specific filters including available competitions and scopes:
curl https://api.useknot.xyz/predictions/sports \
-H "Authorization: Bearer <token>"
View markets
List prediction markets with optional filters:
curl "https://api.useknot.xyz/predictions/markets?status=open&limit=20&tradeable_only=true" \
-H "Authorization: Bearer <token>"
Query parameters
Filter by market status: unopened, open, closed, or settled.
Filter markets by event ticker.
Filter markets by series ticker.
Maximum number of markets to return.
Pagination cursor returned from a previous response.
When true, only markets with active liquidity are returned.
Response
{
"status" : true ,
"data" : {
"markets" : [
{
"ticker" : "KXBTC-26MAR31-T100000" ,
"eventTicker" : "KXBTC" ,
"title" : "Bitcoin above $100,000?" ,
"subtitle" : "Will BTC be at or above $100,000 on March 31?" ,
"status" : "open" ,
"yesBid" : 65 ,
"yesAsk" : 67 ,
"volume24h" : 125000
}
],
"cursor" : "next-page-cursor"
}
}
Show market object properties
Unique market identifier (e.g., KXBTC-26MAR31-T100000). Use this as the ticker parameter when buying or selling.
The event this market belongs to.
Detailed description of what the market resolves on.
Current market status: unopened, open, closed, or settled.
Best bid price for the yes side (in cents).
Best ask price for the yes side (in cents).
24-hour trading volume in number of contracts.
Pagination cursor to pass in the next request to retrieve the following page.
Get market details
Retrieve full details for a specific market by its ticker:
curl https://api.useknot.xyz/predictions/markets/KXBTC-26MAR31-T100000 \
-H "Authorization: Bearer <token>"
Get market orderbook
View the current order book for a market:
curl "https://api.useknot.xyz/predictions/markets/KXBTC-26MAR31-T100000/orderbook?depth=10" \
-H "Authorization: Bearer <token>"
View events
Events are groups of related markets. Browse open events:
curl "https://api.useknot.xyz/predictions/events?status=open&limit=20" \
-H "Authorization: Bearer <token>"
Get event details
curl https://api.useknot.xyz/predictions/events/KXBTC \
-H "Authorization: Bearer <token>"
View series
Browse series, optionally filtered by category:
curl "https://api.useknot.xyz/predictions/series?category=Crypto&limit=100" \
-H "Authorization: Bearer <token>"
Get series details
curl https://api.useknot.xyz/predictions/series/KXBTC \
-H "Authorization: Bearer <token>"
View milestones
Milestones represent scheduled real-world events such as games or matches:
curl "https://api.useknot.xyz/predictions/milestones?category=Sports&competition=Champions%20League&limit=50" \
-H "Authorization: Bearer <token>"
Get milestone details
curl https://api.useknot.xyz/predictions/milestones/milestone-id \
-H "Authorization: Bearer <token>"
Check balance
View your current prediction market balance:
curl https://api.useknot.xyz/predictions/balance \
-H "Authorization: Bearer <token>"
Buy contracts
Purchase contracts on a market. USDC is transferred from your wallet to fund the purchase:
curl -X POST https://api.useknot.xyz/predictions/buy \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"ticker": "KXBTC-26MAR31-T100000",
"side": "yes",
"count": 10
}'
Request parameters
The market ticker to trade (e.g., KXBTC-26MAR31-T100000).
The contract side to buy: yes or no.
Number of contracts to purchase.
Response
{
"status" : true ,
"data" : {
"orderId" : "order-uuid" ,
"ticker" : "KXBTC-26MAR31-T100000" ,
"side" : "yes" ,
"count" : 10 ,
"pricePerContract" : 65 ,
"totalCostDollars" : 6.50 ,
"feeDollars" : 0.17 ,
"status" : "filled"
}
}
Unique identifier for the order.
The market ticker the order was placed on.
The side purchased: yes or no.
Number of contracts filled.
The average price paid per contract in cents.
Total cost of the order in USD.
Kalshi fee charged on the order in USD.
Order status: filled, partially_filled, or cancelled.
Sell contracts
Sell contracts you hold. Proceeds are sent directly to your wallet as USDC:
curl -X POST https://api.useknot.xyz/predictions/sell \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"ticker": "KXBTC-26MAR31-T100000",
"side": "yes",
"count": 5
}'
Request parameters
The market ticker of the position to sell.
The side to sell: yes or no.
Number of contracts to sell.
View positions
List your current prediction market positions:
curl "https://api.useknot.xyz/predictions/positions?settled=false" \
-H "Authorization: Bearer <token>"
Query parameters
Filter by settlement status. Pass false to see open positions or true to see settled ones.
View order history
Retrieve past orders, optionally filtered by market:
curl "https://api.useknot.xyz/predictions/orders?ticker=KXBTC-26MAR31-T100000&limit=50" \
-H "Authorization: Bearer <token>"
Query parameters
Filter orders by market ticker.
Maximum number of orders to return.
Withdraw funds
Withdraw your prediction market balance back to your wallet as USDC:
curl -X POST https://api.useknot.xyz/predictions/withdraw \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"amountDollars": 50.00}'
Amount to withdraw in USD.
Contract settlement
At market close, Kalshi settles each contract based on the real-world outcome:
Winning contracts — each contract pays out $1.00
Losing contracts — expire worthless
Settled proceeds are automatically credited to your prediction market balance. Use the withdraw endpoint to move settled funds back to your wallet.
Policy constraints
Prediction markets must be enabled in your agent’s policy. Check allowPredictionMarkets in your policy settings if you receive a 403 error.