TL;DR
Jupiter’s Prediction API lets you add prediction market trading to your Solana app. Users can trade on real-world event outcomes (sports, crypto, politics) with liquidity aggregated from Polymarket and Kalshi. The API handles order matching, position tracking, and settlement. Base URL:https://api.jup.ag/prediction/v1
Prerequisites
- Get an API key at portal.jup.ag
- All requests require the
x-api-keyheader - Users need JupUSD (or USDC) to trade
BETAThe Prediction Market API is currently in beta and subject to breaking changes. If you have feedback, reach out in Discord.
Quick start
When you need this
You’re building an app where users can:- Trade on event outcomes — “Will BTC hit $100k by end of 2026?”
- Bet on sports, politics, or crypto — Binary YES/NO markets
- Build a prediction market frontend — Custom UI for trading
- Add speculation features — Let users put money on their predictions
- Track trading performance — Leaderboards, P&L history, profiles
- “prediction market api solana”
- “binary options solana”
- “bet on events solana api”
- “polymarket on solana”
Why Jupiter
Building prediction markets from scratch requires:- Liquidity sourcing and market making
- Order matching infrastructure
- Settlement and payout systems
- Real-world event data feeds
- Aggregates liquidity from Polymarket and Kalshi
- Keeper network matches and fills orders
- On-chain settlement with guaranteed payouts
- No payout fees — winners receive full $1 per contract
How prediction markets work
Binary outcomes: Every market is YES or NO. “Will X happen?” → YES or NO. Contract pricing: Prices range from 0.99. Price = implied probability.- 70¢ YES price = market thinks 70% chance of YES
- If you buy YES at 70¢ and YES wins, you profit 30¢ per contract
- Losing contracts expire worthless
API reference
Base URL:https://api.jup.ag/prediction/v1
| Endpoint | Description |
|---|---|
GET /events | List prediction events with filters |
GET /events/search?query={term} | Search events by keyword |
GET /events/{eventId} | Get event details |
GET /markets/{marketId} | Get market pricing and status |
POST /orders | Create order (returns unsigned tx) |
GET /orders?ownerPubkey={pubkey} | Get user’s orders |
GET /positions?ownerPubkey={pubkey} | Get user’s positions |
POST /positions/{positionPubkey}/claim | Claim winnings (returns unsigned tx) |
Code examples
Browse available events
category:all,crypto,sports,politics,esports,culture,economics,techfilter:new(last 24h),live(in progress),trendingprovider:polymarket(default),kalshi
Search for specific events
Create a buy order
- 70¢ = 700,000 micro USD
- Valid range: 10,000 (0.99)
Get user positions
Claim winnings from a settled position
Response format
Event
Market
Position
Create order response
Order lifecycle
- Create order: Call
POST /orders→ get unsigned transaction - Sign & submit: User signs, you submit to Solana
- Keeper fills: Jupiter’s keeper network matches the order
- Position updates: Position reflects new contracts
- Market settles: When event resolves, result is recorded
- Claim payout: If position won, call
/claimto withdraw
Common questions
What tokens can users deposit?
What tokens can users deposit?
JupUSD or USDC. Specify via
depositMint parameter (defaults to USDC).How do I know if a market is tradeable?
How do I know if a market is tradeable?
Check
market.metadata.isTradable and market.status === 'open'.What happens if my order doesn't fill?
What happens if my order doesn't fill?
Orders can be closed via
DELETE /orders. Unfilled funds return to the user.How do I calculate potential profit?
How do I calculate potential profit?
How do I handle the micro USD format?
How do I handle the micro USD format?
Which data provider should I use?
Which data provider should I use?
Polymarket (default) has more markets. Kalshi is US-regulated. Use the
provider query param to switch.Next steps
- Prediction API Reference — Full endpoint documentation
- About Prediction Markets — Architecture and concepts
- Jupiter Developer Portal — Get your API key
- Jupiter Dev Notifications — API updates and announcements
