curl --request GET \
--url https://test.deribit.com/api/v2/private/change_margin_model \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "private/change_margin_model",
"params": {
"user_id": 3,
"margin_model": "cross_pm"
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/change_margin_model"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "private/change_margin_model",
"params": {
"user_id": 3,
"margin_model": "cross_pm"
}
}
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: 1,
method: 'private/change_margin_model',
params: {user_id: 3, margin_model: 'cross_pm'}
})
};
fetch('https://test.deribit.com/api/v2/private/change_margin_model', 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/change_margin_model",
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' => 1,
'method' => 'private/change_margin_model',
'params' => [
'user_id' => 3,
'margin_model' => 'cross_pm'
]
]),
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/change_margin_model"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\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/change_margin_model")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/change_margin_model")
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\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"old_state": {
"maintenance_margin_rate": 0,
"initial_margin_rate": 0,
"available_balance": 0
},
"new_state": {
"maintenance_margin_rate": 0,
"initial_margin_rate": 0,
"available_balance": 0
},
"currency": "eth"
},
{
"old_state": {
"maintenance_margin_rate": 0.02862727,
"initial_margin_rate": 0.45407615,
"available_balance": 0.553590509
},
"new_state": {
"maintenance_margin_rate": 0.02710204,
"initial_margin_rate": 0.03252245,
"available_balance": 0.98106428
},
"currency": "btc"
}
]
}private/change_margin_model
Changes the margin model for the authenticated account or a specified subaccount. Margin models determine how margin requirements are calculated (e.g., Standard Margin vs. Portfolio Margin).
Changing the margin model may affect margin requirements, available funds, and trading capabilities. Use the dry_run parameter to preview the impact of the change before applying it.
๐ Related Article: Margin types and usage
Scope: account:read_write
curl --request GET \
--url https://test.deribit.com/api/v2/private/change_margin_model \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "private/change_margin_model",
"params": {
"user_id": 3,
"margin_model": "cross_pm"
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/change_margin_model"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "private/change_margin_model",
"params": {
"user_id": 3,
"margin_model": "cross_pm"
}
}
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: 1,
method: 'private/change_margin_model',
params: {user_id: 3, margin_model: 'cross_pm'}
})
};
fetch('https://test.deribit.com/api/v2/private/change_margin_model', 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/change_margin_model",
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' => 1,
'method' => 'private/change_margin_model',
'params' => [
'user_id' => 3,
'margin_model' => 'cross_pm'
]
]),
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/change_margin_model"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\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/change_margin_model")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/change_margin_model")
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\": 1,\n \"method\": \"private/change_margin_model\",\n \"params\": {\n \"user_id\": 3,\n \"margin_model\": \"cross_pm\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"old_state": {
"maintenance_margin_rate": 0,
"initial_margin_rate": 0,
"available_balance": 0
},
"new_state": {
"maintenance_margin_rate": 0,
"initial_margin_rate": 0,
"available_balance": 0
},
"currency": "eth"
},
{
"old_state": {
"maintenance_margin_rate": 0.02862727,
"initial_margin_rate": 0.45407615,
"available_balance": 0.553590509
},
"new_state": {
"maintenance_margin_rate": 0.02710204,
"initial_margin_rate": 0.03252245,
"available_balance": 0.98106428
},
"currency": "btc"
}
]
}Query Parameters
Id of a (sub)account - by default current user id is used
1
Margin model
cross_pm, cross_sm, segregated_pm, segregated_sm If true request returns the result without switching the margining model. Default: false
true
Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
Represents portfolio state before change
Represents portfolio state after change
Currency, i.e "BTC", "ETH", "USDC"
BTC, ETH, USDC, USDT, EURR The id that was sent in the request
Was this page helpful?