The Jupiter Developer Platform is live. Previous portal users keep their rate limits for free until 30 June 2026 — set up billing on the new platform before then. See the Migration Guide for details.
Create buy orders to open YES or NO positions in Jupiter Prediction Markets.
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 walks through creating a buy order to open a position in a prediction market. You’ll learn how to construct the order request, sign the returned transaction, and submit it to the Solana network.
Use POST /orders to create a buy order for YES or NO contracts.
Parameter
Type
Required
Description
ownerPubkey
string
Yes
Your wallet’s public key
marketId
string
Yes
The market identifier
isYes
boolean
Yes
true for YES contracts, false for NO
isBuy
boolean
Yes
true for buy orders
contracts
string
No
Number of contracts to purchase
depositAmount
string
Yes
Amount to deposit (in native token units of JupUSD or USDC)
depositMint
string
Yes
Token mint for deposit (JupUSD or USDC)
The minimum order is 5 USD (5000000 native token units). Smaller deposits return 400 Minimum order is $5.Example: Create a buy order for 5 USD worth of contracts
Base64-encoded Solana transaction to sign and submit
txMeta
Transaction metadata: blockhash and lastValidBlockHeight
order.orderPubkey
The order’s on-chain account address
order.positionPubkey
The position’s on-chain account address
order.contracts
Legacy whole-contract quantity. Contracts are fractional: use order.contractsMicro (1000000 = 1 contract) or order.contractsDecimal for the exact amount
After submitting, the order enters the keeper network for matching and execution. Use GET /orders/status/{orderPubkey} to check the fill status.
Order Flow
Create Order: You sign a transaction that creates an order account on-chain - this transaction only opens an order account and does not guarantee that the order will be filled.
Keeper Fills: Jupiter’s keeper network matches your order with the underlying prediction market
Position Updated: Once filled, your position account reflects the new contracts
Order Closed: The order account is closed after completion
Polling immediately after submitting the transaction might return a pending status or a no order history found error. Wait for a few slots before polling again.
Status
Description
created
Order account created on-chain, waiting to be filled
partiallyfilled
Order partially filled
filled
Order fully executed
failed
Order could not be filled
GET /orders/{orderPubkey} returns 400 once an order has filled and its account is closed; use GET /orders/status/{orderPubkey} or GET /history to track a completed order.