curl --request GET \
--url https://test.deribit.com/api/v2/private/get_positions \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 2236,
"method": "private/get_positions",
"params": {
"currency": "BTC",
"kind": "future"
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_positions"
payload = {
"jsonrpc": "2.0",
"id": 2236,
"method": "private/get_positions",
"params": {
"currency": "BTC",
"kind": "future"
}
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2236,
method: 'private/get_positions',
params: {currency: 'BTC', kind: 'future'}
})
};
fetch('https://test.deribit.com/api/v2/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://test.deribit.com/api/v2/private/get_positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'id' => 2236,
'method' => 'private/get_positions',
'params' => [
'currency' => 'BTC',
'kind' => 'future'
]
]),
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://test.deribit.com/api/v2/private/get_positions"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}")
req, _ := http.NewRequest("GET", 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.get("https://test.deribit.com/api/v2/private/get_positions")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 2236,
"result": [
{
"average_price": 7440.18,
"delta": 0.006687487,
"direction": "buy",
"estimated_liquidation_price": 1.74,
"floating_profit_loss": 0,
"index_price": 7466.79,
"initial_margin": 0.000197283,
"instrument_name": "BTC-PERPETUAL",
"interest_value": 1.7362511643080387,
"kind": "future",
"leverage": 34,
"maintenance_margin": 0.000143783,
"mark_price": 7476.65,
"open_orders_margin": 0.000197288,
"realized_funding": -1e-8,
"realized_profit_loss": -9e-9,
"settlement_price": 7476.65,
"size": 50,
"size_currency": 0.006687487,
"total_profit_loss": 0.000032781
}
]
}{
"jsonrpc": "2.0",
"message": "<string>",
"error": 123,
"id": 123
}private/get_positions
Retrieves all open positions for the authenticated account. Returns position details including size, average entry price, mark price, unrealized P&L, initial margin, maintenance margin, and other position-related information.
Results can be filtered by currency and instrument kind (future, option, etc.). To retrieve positions for a specific subaccount, use the subaccount_id parameter.
Scope: trade:read
curl --request GET \
--url https://test.deribit.com/api/v2/private/get_positions \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 2236,
"method": "private/get_positions",
"params": {
"currency": "BTC",
"kind": "future"
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_positions"
payload = {
"jsonrpc": "2.0",
"id": 2236,
"method": "private/get_positions",
"params": {
"currency": "BTC",
"kind": "future"
}
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2236,
method: 'private/get_positions',
params: {currency: 'BTC', kind: 'future'}
})
};
fetch('https://test.deribit.com/api/v2/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://test.deribit.com/api/v2/private/get_positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'id' => 2236,
'method' => 'private/get_positions',
'params' => [
'currency' => 'BTC',
'kind' => 'future'
]
]),
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://test.deribit.com/api/v2/private/get_positions"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}")
req, _ := http.NewRequest("GET", 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.get("https://test.deribit.com/api/v2/private/get_positions")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"id\": 2236,\n \"method\": \"private/get_positions\",\n \"params\": {\n \"currency\": \"BTC\",\n \"kind\": \"future\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 2236,
"result": [
{
"average_price": 7440.18,
"delta": 0.006687487,
"direction": "buy",
"estimated_liquidation_price": 1.74,
"floating_profit_loss": 0,
"index_price": 7466.79,
"initial_margin": 0.000197283,
"instrument_name": "BTC-PERPETUAL",
"interest_value": 1.7362511643080387,
"kind": "future",
"leverage": 34,
"maintenance_margin": 0.000143783,
"mark_price": 7476.65,
"open_orders_margin": 0.000197288,
"realized_funding": -1e-8,
"realized_profit_loss": -9e-9,
"settlement_price": 7476.65,
"size": 50,
"size_currency": 0.006687487,
"total_profit_loss": 0.000032781
}
]
}{
"jsonrpc": "2.0",
"message": "<string>",
"error": 123,
"id": 123
}Query Parameters
Currency name or "any" if don't care
BTC, ETH, USDC, USDT, EURR, any "BTC"
Kind filter on positions
Instrument kind: "future", "option", "future_combo", "option_combo" (spot is excluded as spot trades are settled immediately and have no open positions)
future, option, future_combo, option_combo "future"
The user id for the subaccount
Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
Unique instrument identifier
"BTC-PERPETUAL"
Instrument kind: "future", "option", "spot", "future_combo", "option_combo"
future, option, spot, future_combo, option_combo Average price of trades that built this position
Direction: buy, sell or zero
buy, sell, zero Current mark price for position's instrument
Delta parameter
Current index price
Initial margin
Maintenance margin
Optional (not added for spot). Last settlement price for position's instrument 0 if instrument wasn't settled yet
Profit or loss from position
Floating profit or loss
Realized profit or loss
Position size for futures size in quote currency (e.g. USD), for options size is in base currency (e.g. BTC)
Estimated liquidation price, added only for futures, for users with segregated_sm margin model
Open orders margin
Only for options, Gamma parameter
Only for options, Vega parameter
Only for options, Theta parameter
Only for futures, position size in base currency
Only for options, average price in USD
Only for options, floating profit or loss in USD
Current available leverage for future position
Realized Funding in current session included in session realized profit or loss, only for positions of perpetual instruments
Value used to calculate realized_funding (perpetual only)
The id that was sent in the request
Was this page helpful?