curl --request GET \
--url https://test.deribit.com/api/v2/private/get_margins \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 7,
"method": "private/get_margins",
"params": {
"instrument_name": "BTC-PERPETUAL",
"amount": 10000,
"price": 3725
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_margins"
payload = {
"jsonrpc": "2.0",
"id": 7,
"method": "private/get_margins",
"params": {
"instrument_name": "BTC-PERPETUAL",
"amount": 10000,
"price": 3725
}
}
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: 7,
method: 'private/get_margins',
params: {instrument_name: 'BTC-PERPETUAL', amount: 10000, price: 3725}
})
};
fetch('https://test.deribit.com/api/v2/private/get_margins', 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_margins",
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' => 7,
'method' => 'private/get_margins',
'params' => [
'instrument_name' => 'BTC-PERPETUAL',
'amount' => 10000,
'price' => 3725
]
]),
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_margins"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\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_margins")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_margins")
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\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 7,
"result": {
"sell": 0,
"sell_taker_fee": 0.00134,
"sell_maker_fee": 0,
"min_price": 3684.8,
"max_price": 3759.24,
"buy": 0.0219949,
"buy_taker_fee": 0.00135,
"buy_maker_fee": 0
}
}private/get_margins
Calculates margin requirements for a hypothetical order on a given instrument. Returns initial margin and maintenance margin for the specified instrument, quantity, and price.
This method is useful for estimating margin requirements before placing an order, helping to ensure sufficient funds are available and understanding the margin impact of potential trades.
Scope: trade:read
curl --request GET \
--url https://test.deribit.com/api/v2/private/get_margins \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 7,
"method": "private/get_margins",
"params": {
"instrument_name": "BTC-PERPETUAL",
"amount": 10000,
"price": 3725
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_margins"
payload = {
"jsonrpc": "2.0",
"id": 7,
"method": "private/get_margins",
"params": {
"instrument_name": "BTC-PERPETUAL",
"amount": 10000,
"price": 3725
}
}
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: 7,
method: 'private/get_margins',
params: {instrument_name: 'BTC-PERPETUAL', amount: 10000, price: 3725}
})
};
fetch('https://test.deribit.com/api/v2/private/get_margins', 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_margins",
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' => 7,
'method' => 'private/get_margins',
'params' => [
'instrument_name' => 'BTC-PERPETUAL',
'amount' => 10000,
'price' => 3725
]
]),
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_margins"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\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_margins")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_margins")
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\": 7,\n \"method\": \"private/get_margins\",\n \"params\": {\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"amount\": 10000,\n \"price\": 3725\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 7,
"result": {
"sell": 0,
"sell_taker_fee": 0.00134,
"sell_maker_fee": 0,
"min_price": 3684.8,
"max_price": 3759.24,
"buy": 0.0219949,
"buy_taker_fee": 0.00135,
"buy_maker_fee": 0
}
}Query Parameters
Instrument name Unique instrument identifier
"BTC-PERPETUAL"
It represents the requested order size. For perpetual and inverse futures the amount is in USD units. For options and linear futures it is the underlying base currency coin.
Price
3725
Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
Margin when buying
0.01681367
Margin when selling
0.01680479
Estimated taker fee when buying
0.00135
Estimated maker fee when buying
0
Estimated taker fee when selling
0.00134
Estimated maker fee when selling
0
The minimum price for the future. Any sell orders you submit lower than this price will be clamped to this minimum.
The maximum price for the future. Any buy orders you submit higher than this price, will be clamped to this maximum.
The id that was sent in the request
Was this page helpful?