Subaccounts
Get active positions for a subaccount
Returns the subaccount ID and the list of its active positions, including size, mark price, average price, unrealized and realized PnL, and Greeks where applicable, valued against live feed data at request time. A lighter alternative to get_subaccount when only positions are needed.
POST
/
private
/
get_positions
Get active positions for a subaccount
curl --request POST \
--url https://api.derive.xyz/v3/private/get_positions \
--header 'Content-Type: application/json' \
--data '
{
"subaccount_id": 1
}
'import requests
url = "https://api.derive.xyz/v3/private/get_positions"
payload = { "subaccount_id": 1 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({subaccount_id: 1})
};
fetch('https://api.derive.xyz/v3/private/get_positions', 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.derive.xyz/v3/private/get_positions",
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([
'subaccount_id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.derive.xyz/v3/private/get_positions"
payload := strings.NewReader("{\n \"subaccount_id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
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.derive.xyz/v3/private/get_positions")
.header("Content-Type", "application/json")
.body("{\n \"subaccount_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/private/get_positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"subaccount_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"positions": [
{
"amount": "<string>",
"amount_step": "<string>",
"average_price": "<string>",
"average_price_excl_fees": "<string>",
"creation_timestamp": 123,
"cumulative_funding": "<string>",
"delta": "<string>",
"gamma": "<string>",
"index_price": "<string>",
"initial_margin": "<string>",
"instrument_name": "<string>",
"instrument_type": "<string>",
"maintenance_margin": "<string>",
"mark_price": "<string>",
"mark_value": "<string>",
"net_settlements": "<string>",
"open_orders_margin": "<string>",
"pending_funding": "<string>",
"realized_pnl": "<string>",
"realized_pnl_excl_fees": "<string>",
"theta": "<string>",
"total_fees": "<string>",
"unrealized_pnl": "<string>",
"unrealized_pnl_excl_fees": "<string>",
"vega": "<string>",
"leverage": "<string>",
"liquidation_price": "<string>"
}
],
"subaccount_id": 1
}Related topics
Get full portfolio for a subaccountGet full portfolios for all of a wallet's subaccountsGet option settlement history for a subaccount⌘I
Get active positions for a subaccount
curl --request POST \
--url https://api.derive.xyz/v3/private/get_positions \
--header 'Content-Type: application/json' \
--data '
{
"subaccount_id": 1
}
'import requests
url = "https://api.derive.xyz/v3/private/get_positions"
payload = { "subaccount_id": 1 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({subaccount_id: 1})
};
fetch('https://api.derive.xyz/v3/private/get_positions', 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.derive.xyz/v3/private/get_positions",
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([
'subaccount_id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.derive.xyz/v3/private/get_positions"
payload := strings.NewReader("{\n \"subaccount_id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
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.derive.xyz/v3/private/get_positions")
.header("Content-Type", "application/json")
.body("{\n \"subaccount_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/private/get_positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"subaccount_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"positions": [
{
"amount": "<string>",
"amount_step": "<string>",
"average_price": "<string>",
"average_price_excl_fees": "<string>",
"creation_timestamp": 123,
"cumulative_funding": "<string>",
"delta": "<string>",
"gamma": "<string>",
"index_price": "<string>",
"initial_margin": "<string>",
"instrument_name": "<string>",
"instrument_type": "<string>",
"maintenance_margin": "<string>",
"mark_price": "<string>",
"mark_value": "<string>",
"net_settlements": "<string>",
"open_orders_margin": "<string>",
"pending_funding": "<string>",
"realized_pnl": "<string>",
"realized_pnl_excl_fees": "<string>",
"theta": "<string>",
"total_fees": "<string>",
"unrealized_pnl": "<string>",
"unrealized_pnl_excl_fees": "<string>",
"vega": "<string>",
"leverage": "<string>",
"liquidation_price": "<string>"
}
],
"subaccount_id": 1
}