curl --request GET \
--url https://test.deribit.com/api/v2/private/get_lsp_usage \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 8803,
"method": "private/get_lsp_usage",
"params": {}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_lsp_usage"
payload = {
"jsonrpc": "2.0",
"id": 8803,
"method": "private/get_lsp_usage",
"params": {}
}
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: 8803, method: 'private/get_lsp_usage', params: {}})
};
fetch('https://test.deribit.com/api/v2/private/get_lsp_usage', 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_lsp_usage",
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' => 8803,
'method' => 'private/get_lsp_usage',
'params' => [
]
]),
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_lsp_usage"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\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_lsp_usage")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_lsp_usage")
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\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 8803,
"result": {
"cooldown_period_ms": 300000,
"groups": {
"1": {
"pct": 15,
"used": 250000,
"cooldown_start": 1750000100000,
"cooldown_end": 1750000400000
},
"2": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"3": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"4": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"5": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"6": {
"pct": 0,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"rwa": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
}
}
}
}{
"jsonrpc": "2.0",
"message": "<string>",
"error": 123,
"id": 123
}private/get_lsp_usage
Retrieves the current per-cooldown-group assignment usage for the authenticated LSP (Liquidity Support Program) participant subaccount within its current fixed cooldown window.
Must be called with an API key belonging to the LSP participant subaccount itself — returns an error if the authenticated account is not an LSP participant.
Instruments are bucketed into one of 7 cooldown groups (6 crypto tiers plus a real-world-asset group); each group has its own limit (pct, as a percentage of the participant’s equity), fixed-window usage (used, in USD — this does not decay smoothly; it stays flat until the window closes at cooldown_end, then resets to 0 in one step), and the window’s timing (cooldown_start/cooldown_end). Neither the absolute limit nor the remaining capacity is computed for you — derive it from pct, used, and the participant’s own equity from private/get_account_summary. Even a self-computed remaining-capacity figure won’t reflect the additional margin/leverage-derived cap applied at assignment time, which isn’t exposed on any user-facing endpoint.
Scope: account:read
curl --request GET \
--url https://test.deribit.com/api/v2/private/get_lsp_usage \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 8803,
"method": "private/get_lsp_usage",
"params": {}
}
'import requests
url = "https://test.deribit.com/api/v2/private/get_lsp_usage"
payload = {
"jsonrpc": "2.0",
"id": 8803,
"method": "private/get_lsp_usage",
"params": {}
}
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: 8803, method: 'private/get_lsp_usage', params: {}})
};
fetch('https://test.deribit.com/api/v2/private/get_lsp_usage', 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_lsp_usage",
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' => 8803,
'method' => 'private/get_lsp_usage',
'params' => [
]
]),
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_lsp_usage"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\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_lsp_usage")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/get_lsp_usage")
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\": 8803,\n \"method\": \"private/get_lsp_usage\",\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 8803,
"result": {
"cooldown_period_ms": 300000,
"groups": {
"1": {
"pct": 15,
"used": 250000,
"cooldown_start": 1750000100000,
"cooldown_end": 1750000400000
},
"2": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"3": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"4": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"5": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"6": {
"pct": 0,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
},
"rwa": {
"pct": 10,
"used": 0,
"cooldown_start": null,
"cooldown_end": null
}
}
}
}{
"jsonrpc": "2.0",
"message": "<string>",
"error": 123,
"id": 123
}Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
Length of the rolling cooldown window in milliseconds.
Per-cooldown-group assignment usage, keyed by group ("1"-"6" for crypto tiers, "rwa" for real-world-asset instruments). Groups with no configured limit and no usage may be absent.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
The effective limit for this group as a percentage of the participant's equity (the participant's group_limits override if set, otherwise the platform-wide default for that group).
USD notional already assigned to this group within the current fixed cooldown window.
This is a fixed window, not a smoothly-decaying rolling one: usage accumulates from the first assignment in the window and stays flat — it does not decrease as individual entries "age" — until the window as a whole expires (cooldown_end), at which point it resets to 0 in one step and the next assignment starts a brand new window.
Note: neither the absolute limit (pct / 100 * equity) nor the remaining capacity is returned directly — compute it yourself from pct, used, and your own equity (private/get_account_summary). Even that computed figure won't reflect the additional margin/leverage-derived cap (max_leverage * equity - notional) applied at assignment time, which is not exposed on any user-facing endpoint.
Timestamp (milliseconds since the UNIX epoch) of the first assignment that opened this group's current fixed window, or null if the group has no tracked usage.
Timestamp (milliseconds since the UNIX epoch) at which the current fixed window closes (cooldown_start + cooldown_period_ms) and this group's used resets to 0, or null if the group has no tracked usage.
The id that was sent in the request
Was this page helpful?