curl --request POST \
--url https://api.jup.ag/prediction/v1/orders \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"isBuy": true,
"ownerPubkey": "<string>",
"marketId": "<string>",
"positionPubkey": "<string>",
"isYes": true,
"contracts": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"depositAmount": "<string>",
"depositMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
'import requests
url = "https://api.jup.ag/prediction/v1/orders"
payload = {
"isBuy": True,
"ownerPubkey": "<string>",
"marketId": "<string>",
"positionPubkey": "<string>",
"isYes": True,
"contracts": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"depositAmount": "<string>",
"depositMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
isBuy: true,
ownerPubkey: '<string>',
marketId: '<string>',
positionPubkey: '<string>',
isYes: true,
contracts: '<string>',
contractsMicro: '<string>',
contractsDecimal: '<string>',
depositAmount: '<string>',
depositMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
})
};
fetch('https://api.jup.ag/prediction/v1/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jup.ag/prediction/v1/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'isBuy' => true,
'ownerPubkey' => '<string>',
'marketId' => '<string>',
'positionPubkey' => '<string>',
'isYes' => true,
'contracts' => '<string>',
'contractsMicro' => '<string>',
'contractsDecimal' => '<string>',
'depositAmount' => '<string>',
'depositMint' => 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jup.ag/prediction/v1/orders"
payload := strings.NewReader("{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jup.ag/prediction/v1/orders")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/prediction/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": "<string>",
"txMeta": {
"blockhash": "<string>",
"lastValidBlockHeight": 1
},
"externalOrderId": "<string>",
"order": {
"orderPubkey": "<string>",
"orderAtaPubkey": "<string>",
"userPubkey": "<string>",
"marketId": "<string>",
"marketIdHash": "<string>",
"positionPubkey": "<string>",
"isBuy": true,
"isYes": true,
"contracts": "<string>",
"newContracts": "<string>",
"maxBuyPriceUsd": "<string>",
"minSellPriceUsd": "<string>",
"externalOrderId": "<string>",
"orderCostUsd": "<string>",
"newAvgPriceUsd": "<string>",
"newSizeUsd": "<string>",
"newPayoutUsd": "<string>",
"estimatedProtocolFeeUsd": "<string>",
"estimatedVenueFeeUsd": "<string>",
"estimatedTotalFeeUsd": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"newContractsMicro": "<string>",
"newContractsDecimal": "<string>",
"payoutUsd": "<string>",
"slippageBps": 1,
"maxSlippageBps": 1
},
"requiredSigners": [
"<string>"
],
"execution": {
"endpoint": "/api/v1/execute",
"context": {}
},
"executionModel": "<string>",
"settlement": "<string>",
"jupiterSwapRequestId": "<string>"
}{
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Create Order
Request an unsigned transaction to create a new order
curl --request POST \
--url https://api.jup.ag/prediction/v1/orders \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"isBuy": true,
"ownerPubkey": "<string>",
"marketId": "<string>",
"positionPubkey": "<string>",
"isYes": true,
"contracts": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"depositAmount": "<string>",
"depositMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
'import requests
url = "https://api.jup.ag/prediction/v1/orders"
payload = {
"isBuy": True,
"ownerPubkey": "<string>",
"marketId": "<string>",
"positionPubkey": "<string>",
"isYes": True,
"contracts": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"depositAmount": "<string>",
"depositMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
isBuy: true,
ownerPubkey: '<string>',
marketId: '<string>',
positionPubkey: '<string>',
isYes: true,
contracts: '<string>',
contractsMicro: '<string>',
contractsDecimal: '<string>',
depositAmount: '<string>',
depositMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
})
};
fetch('https://api.jup.ag/prediction/v1/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jup.ag/prediction/v1/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'isBuy' => true,
'ownerPubkey' => '<string>',
'marketId' => '<string>',
'positionPubkey' => '<string>',
'isYes' => true,
'contracts' => '<string>',
'contractsMicro' => '<string>',
'contractsDecimal' => '<string>',
'depositAmount' => '<string>',
'depositMint' => 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jup.ag/prediction/v1/orders"
payload := strings.NewReader("{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jup.ag/prediction/v1/orders")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/prediction/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"isBuy\": true,\n \"ownerPubkey\": \"<string>\",\n \"marketId\": \"<string>\",\n \"positionPubkey\": \"<string>\",\n \"isYes\": true,\n \"contracts\": \"<string>\",\n \"contractsMicro\": \"<string>\",\n \"contractsDecimal\": \"<string>\",\n \"depositAmount\": \"<string>\",\n \"depositMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": "<string>",
"txMeta": {
"blockhash": "<string>",
"lastValidBlockHeight": 1
},
"externalOrderId": "<string>",
"order": {
"orderPubkey": "<string>",
"orderAtaPubkey": "<string>",
"userPubkey": "<string>",
"marketId": "<string>",
"marketIdHash": "<string>",
"positionPubkey": "<string>",
"isBuy": true,
"isYes": true,
"contracts": "<string>",
"newContracts": "<string>",
"maxBuyPriceUsd": "<string>",
"minSellPriceUsd": "<string>",
"externalOrderId": "<string>",
"orderCostUsd": "<string>",
"newAvgPriceUsd": "<string>",
"newSizeUsd": "<string>",
"newPayoutUsd": "<string>",
"estimatedProtocolFeeUsd": "<string>",
"estimatedVenueFeeUsd": "<string>",
"estimatedTotalFeeUsd": "<string>",
"contractsMicro": "<string>",
"contractsDecimal": "<string>",
"newContractsMicro": "<string>",
"newContractsDecimal": "<string>",
"payoutUsd": "<string>",
"slippageBps": 1,
"maxSlippageBps": 1
},
"requiredSigners": [
"<string>"
],
"execution": {
"endpoint": "/api/v1/execute",
"context": {}
},
"executionModel": "<string>",
"settlement": "<string>",
"jupiterSwapRequestId": "<string>"
}{
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Authorizations
Get API key via https://developers.jup.ag/portal
Body
Order owner public key
Hashed or canonical market ID for buys
1Required for sells
32Legacy whole-contract sell quantity (only when isBuy is false). Cannot express fractions; prefer contractsMicro or contractsDecimal. Provide only one of contracts, contractsMicro, or contractsDecimal.
Exact sell quantity in micro-contract units (1000000 = 1 contract). Provide only one of contracts, contractsMicro, or contractsDecimal.
Exact sell quantity as a decimal (e.g. 5.777773). Provide only one of contracts, contractsMicro, or contractsDecimal.
Amount must conform to the token decimals used by the token mint in depositMint
Mint address for the deposit token
Response
Unsigned transaction for creating an order
Base64 encoded transaction
Transaction metadata
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Public keys that must sign the returned transaction
Execution details returned with an order build. Sign the build's transaction, then pass context unchanged to POST /execute.
Show child attributes
Show child attributes
Execution model for the order. atomic_swap for Jupiter Forecast (bisonfi) orders, which execute as a single atomic swap through POST /execute. null for keeper-filled prediction orders.
Settlement mode. auto for Jupiter Forecast orders, which settle automatically. null for keeper-filled prediction orders.
Jupiter swap request id when the order executes as a swap (Jupiter Forecast). null otherwise.
Was this page helpful?
