The existing Portal is being replaced by the Jupiter Developer Platform with new pricing, rate limits, and features. We will share more details about the migration plan soon.
Claim your winnings after prediction markets resolve. Each winning contract pays out $1.
BETAThe Prediction Market API is currently in beta and subject to breaking changes as we continue to improve the product. If you have any feedback, please reach out in Discord.
This doc explains how to claim payouts after a prediction market resolves in your favor. Each winning contract is worth $1.00, and there are no fees for claiming.
Winning PayoutEach winning contract pays out exactly $1.00 (1,000,000 native token units for JupUSD or USDC). If you hold 10 YES contracts and the market resolves to YES, your payout is $10.00.There are no fees for claiming payouts.
If you do not manually claim a payout from a winning position within 24 hours of the market settling in your favor, your claimable position will be automatically claimed on your behalf by the keeper network. The payout will be credited to your account wallet, and the position will be marked as claimed.
You can always claim manually as soon as your position is claimable.
Auto-claim ensures you never lose out on winnings if you forget to claim.
The payout amount is the same as a manual claim, and no fees are charged for auto-claiming.
You can check your claim status after settlement and see the updated claimed: true field and your payout even if you did not claim manually.
When a market settles against your position, the contracts expire worthless. No action is needed - the position simply has no claimable value.Lost positions appear in your transaction history with the position_lost event type.
// Check history for lost positionsconst historyResponse = await fetch( 'https://api.jup.ag/prediction/v1/history?' + new URLSearchParams({ ownerPubkey: wallet.publicKey.toString() }), { headers: { 'x-api-key': 'your-api-key' } });const history = await historyResponse.json();const lostPositions = history.data.filter(event => event.eventType === 'position_lost');