public/get_vault
Returns the full vault record — on-chain state plus curator metadata — for one vault subaccount id. Unauthenticated and read-only.
curl --request POST \
--url https://api.derive.xyz/v3/public/get_vault \
--header 'Content-Type: application/json' \
--data '
{
"subaccount_id": 1
}
'import requests
url = "https://api.derive.xyz/v3/public/get_vault"
payload = { "subaccount_id": 1 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({subaccount_id: 1})
};
fetch('https://api.derive.xyz/v3/public/get_vault', 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://api.derive.xyz/v3/public/get_vault",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subaccount_id' => 1
]),
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://api.derive.xyz/v3/public/get_vault"
payload := strings.NewReader("{\n \"subaccount_id\": 1\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.derive.xyz/v3/public/get_vault")
.header("Content-Type", "application/json")
.body("{\n \"subaccount_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/public/get_vault")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"subaccount_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"curator": "<string>",
"curator_shares": "<string>",
"description": "<string>",
"name": "<string>",
"protocol": {
"closed": true,
"config": {
"cooldown_sec": 1,
"deposit_spot_asset": "<string>",
"management_fee_bps": 1,
"max_slippage_bps": 1,
"performance_fee_bps": 1,
"benchmark_asset": "<string>"
},
"global_hwm": "<string>",
"last_fee_settled_at_sec": 1,
"protocol_fee_share_bps": 1,
"subaccount_id": 1,
"total_shares": "<string>"
},
"whitelist_only": true,
"benchmark_price": null,
"mtm_cap": null,
"nav_benchmark": null,
"nav_usd": null,
"simulated_share_price_usd": null
}Body
x >= 0Response
Success
The vault's curator — the owner wallet of the vault subaccount.
42^0x[0-9a-fA-F]{40}$Shares held by the curator (the vault subaccount's owner) — their skin-in-the-game. Same units as protocol.total_shares.
Show child attributes
Show child attributes
USD spot price of the HWM benchmark asset (1.0 for feed-less USD vaults). null when a configured benchmark has no resolvable price.
Optional non-negative decimal string of the human value (e.g. "1.5"), up to 12 fractional digits, or null; a string or JSON number is accepted
Live NAV expressed in the HWM benchmark asset's units. null when the vault couldn't be priced or its configured benchmark has no spot price.
Live mark-to-market NAV (USD) — signed, so an insolvent vault surfaces as a negative value. null only when the vault couldn't be priced (e.g. missing data). Divide by protocol.total_shares for the pre-fee share price.
Live share price (USD/share) as if curator fees were settled now — the price a depositor/withdrawer faces. null when unpriceable or the vault is insolvent (a fee settlement on negative NAV is meaningless).
curl --request POST \
--url https://api.derive.xyz/v3/public/get_vault \
--header 'Content-Type: application/json' \
--data '
{
"subaccount_id": 1
}
'import requests
url = "https://api.derive.xyz/v3/public/get_vault"
payload = { "subaccount_id": 1 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({subaccount_id: 1})
};
fetch('https://api.derive.xyz/v3/public/get_vault', 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://api.derive.xyz/v3/public/get_vault",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subaccount_id' => 1
]),
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://api.derive.xyz/v3/public/get_vault"
payload := strings.NewReader("{\n \"subaccount_id\": 1\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.derive.xyz/v3/public/get_vault")
.header("Content-Type", "application/json")
.body("{\n \"subaccount_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/public/get_vault")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"subaccount_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"curator": "<string>",
"curator_shares": "<string>",
"description": "<string>",
"name": "<string>",
"protocol": {
"closed": true,
"config": {
"cooldown_sec": 1,
"deposit_spot_asset": "<string>",
"management_fee_bps": 1,
"max_slippage_bps": 1,
"performance_fee_bps": 1,
"benchmark_asset": "<string>"
},
"global_hwm": "<string>",
"last_fee_settled_at_sec": 1,
"protocol_fee_share_bps": 1,
"subaccount_id": 1,
"total_shares": "<string>"
},
"whitelist_only": true,
"benchmark_price": null,
"mtm_cap": null,
"nav_benchmark": null,
"nav_usd": null,
"simulated_share_price_usd": null
}