curl --request DELETE \
--url https://api.jup.ag/prediction/v1/positions/{positionPubkey} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"ownerPubkey": "<string>"
}
'import requests
url = "https://api.jup.ag/prediction/v1/positions/{positionPubkey}"
payload = { "ownerPubkey": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({ownerPubkey: '<string>'})
};
fetch('https://api.jup.ag/prediction/v1/positions/{positionPubkey}', 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/positions/{positionPubkey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'ownerPubkey' => '<string>'
]),
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/positions/{positionPubkey}"
payload := strings.NewReader("{\n \"ownerPubkey\": \"<string>\"\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.jup.ag/prediction/v1/positions/{positionPubkey}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ownerPubkey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/prediction/v1/positions/{positionPubkey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ownerPubkey\": \"<string>\"\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>"
}{
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Close Position
Request an unsigned transaction to sell all contracts in a position
curl --request DELETE \
--url https://api.jup.ag/prediction/v1/positions/{positionPubkey} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"ownerPubkey": "<string>"
}
'import requests
url = "https://api.jup.ag/prediction/v1/positions/{positionPubkey}"
payload = { "ownerPubkey": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({ownerPubkey: '<string>'})
};
fetch('https://api.jup.ag/prediction/v1/positions/{positionPubkey}', 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/positions/{positionPubkey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'ownerPubkey' => '<string>'
]),
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/positions/{positionPubkey}"
payload := strings.NewReader("{\n \"ownerPubkey\": \"<string>\"\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.jup.ag/prediction/v1/positions/{positionPubkey}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ownerPubkey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/prediction/v1/positions/{positionPubkey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ownerPubkey\": \"<string>\"\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>"
}{
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Authorizations
Get API key via https://developers.jup.ag/portal
Path Parameters
Position account public key
32Body
Position owner public key
32Response
Unsigned transaction that sells all contracts for a position
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?
