curl --request GET \
--url https://drb.coinbase.com/api/v2/private/get_margins \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": 7,
"jsonrpc": "2.0",
"method": "private/get_margins",
"params": {
"amount": 10000,
"instrument_name": "BTC-PERPETUAL",
"price": 3725
}
}
'import requests
url = "https://drb.coinbase.com/api/v2/private/get_margins"
payload = {
"id": 7,
"jsonrpc": "2.0",
"method": "private/get_margins",
"params": {
"amount": 10000,
"instrument_name": "BTC-PERPETUAL",
"price": 3725
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: 7,
jsonrpc: '2.0',
method: 'private/get_margins',
params: {amount: 10000, instrument_name: 'BTC-PERPETUAL', price: 3725}
})
};
fetch('https://drb.coinbase.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://drb.coinbase.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([
'id' => 7,
'jsonrpc' => '2.0',
'method' => 'private/get_margins',
'params' => [
'amount' => 10000,
'instrument_name' => 'BTC-PERPETUAL',
'price' => 3725
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://drb.coinbase.com/api/v2/private/get_margins"
payload := strings.NewReader("{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://drb.coinbase.com/api/v2/private/get_margins")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://drb.coinbase.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["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 7,
"jsonrpc": "2.0",
"result": {
"buy": 0.0219949,
"buy_maker_fee": 0.000017,
"buy_taker_fee": 0.000085,
"max_price": 3759.24,
"min_price": 3684.8,
"sell": 0,
"sell_maker_fee": 0.000017,
"sell_taker_fee": 0.000085
}
}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.
curl --request GET \
--url https://drb.coinbase.com/api/v2/private/get_margins \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": 7,
"jsonrpc": "2.0",
"method": "private/get_margins",
"params": {
"amount": 10000,
"instrument_name": "BTC-PERPETUAL",
"price": 3725
}
}
'import requests
url = "https://drb.coinbase.com/api/v2/private/get_margins"
payload = {
"id": 7,
"jsonrpc": "2.0",
"method": "private/get_margins",
"params": {
"amount": 10000,
"instrument_name": "BTC-PERPETUAL",
"price": 3725
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: 7,
jsonrpc: '2.0',
method: 'private/get_margins',
params: {amount: 10000, instrument_name: 'BTC-PERPETUAL', price: 3725}
})
};
fetch('https://drb.coinbase.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://drb.coinbase.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([
'id' => 7,
'jsonrpc' => '2.0',
'method' => 'private/get_margins',
'params' => [
'amount' => 10000,
'instrument_name' => 'BTC-PERPETUAL',
'price' => 3725
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://drb.coinbase.com/api/v2/private/get_margins"
payload := strings.NewReader("{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://drb.coinbase.com/api/v2/private/get_margins")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://drb.coinbase.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["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 7,\n \"jsonrpc\": \"2.0\",\n \"method\": \"private/get_margins\",\n \"params\": {\n \"amount\": 10000,\n \"instrument_name\": \"BTC-PERPETUAL\",\n \"price\": 3725\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 7,
"jsonrpc": "2.0",
"result": {
"buy": 0.0219949,
"buy_maker_fee": 0.000017,
"buy_taker_fee": 0.000085,
"max_price": 3759.24,
"min_price": 3684.8,
"sell": 0,
"sell_maker_fee": 0.000017,
"sell_taker_fee": 0.000085
}
}Authorizations
Call public/auth with grant_type: coinbase_cdp and a CDP JWT. Send the returned access_token as Authorization: Bearer.
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
If true, calculates margin requirements and estimated fees under isolated margin scope instead of cross margin. Default - false
Was this page helpful?