public/get_all_currencies
Returns detailed metadata for every configured currency, including supported instrument types, risk managers, spot price and 24h-ago price, SRM/portfolio margin collateral discounts, lending borrow/supply APYs, open-interest caps and utilization per manager, and protocol asset addresses. Currencies that exist but have no configured assets are omitted. Public endpoint, no authentication required.
curl --request POST \
--url https://api.derive.xyz/v3/public/get_all_currencies \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.derive.xyz/v3/public/get_all_currencies"
payload = {}
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({})
};
fetch('https://api.derive.xyz/v3/public/get_all_currencies', 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_all_currencies",
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([
]),
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_all_currencies"
payload := strings.NewReader("{}")
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_all_currencies")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/public/get_all_currencies")
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 = "{}"
response = http.request(request)
puts response.read_body[
{
"currency": "<string>",
"managers": [
{
"risk_universe_id": 1,
"pm": 1,
"risk_universe_name": "<string>",
"sm": 1
}
],
"market_type": "ALL",
"spot": [
{
"address": "<string>",
"erc20": {
"decimals": 1,
"underlying_erc20": "<string>"
},
"min_deposit_usd": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"pm2_im_discount": "<string>",
"pm2_mm_discount": "<string>",
"risk_universe_id": 1,
"srm_im_discount": "<string>",
"srm_mm_discount": "<string>",
"lending": {
"borrow_apy": "<string>",
"supply_apy": "<string>",
"total_borrow": "<string>",
"total_borrow_cap": "<string>"
}
}
]
}
],
"spot_price": "<string>",
"option": {
"address": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"risk_universe_id": 1,
"risk_universe_name": "<string>",
"srm_perp_margin_requirements": {
"im_perp_req": "<string>",
"max_leverage": "<string>",
"mm_perp_req": "<string>"
}
}
]
},
"perp": {
"address": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"risk_universe_id": 1,
"risk_universe_name": "<string>",
"srm_perp_margin_requirements": {
"im_perp_req": "<string>",
"max_leverage": "<string>",
"mm_perp_req": "<string>"
}
}
]
},
"spot_price_24h": "<string>"
}
]{
"error": {
"code": 123,
"message": "<string>",
"data": "<string>"
}
}Body
This method takes no parameters; send an empty object {}.
Braced rather than a unit struct so schemars emits {"type": "object"}: a unit struct emits null, which contradicts the line above and forced every generated client to cast around the params type.
Response
Success
Managers risk-pricing this currency, one entry per universe where at least one manager covers it.
Show child attributes
Show child attributes
Which instrument/collateral classes the currency is enabled for.
ALL, SRM_BASE_ONLY, SRM_OPTION_ONLY, SRM_PERP_ONLY, CASH Every spot asset registered to this currency (e.g. lending "USDC" and non-lending "USDC-NL").
Show child attributes
Show child attributes
The option asset for this currency, if one is registered.
Show child attributes
Show child attributes
The perp asset for this currency, if one is registered.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.derive.xyz/v3/public/get_all_currencies \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.derive.xyz/v3/public/get_all_currencies"
payload = {}
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({})
};
fetch('https://api.derive.xyz/v3/public/get_all_currencies', 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_all_currencies",
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([
]),
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_all_currencies"
payload := strings.NewReader("{}")
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_all_currencies")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/public/get_all_currencies")
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 = "{}"
response = http.request(request)
puts response.read_body[
{
"currency": "<string>",
"managers": [
{
"risk_universe_id": 1,
"pm": 1,
"risk_universe_name": "<string>",
"sm": 1
}
],
"market_type": "ALL",
"spot": [
{
"address": "<string>",
"erc20": {
"decimals": 1,
"underlying_erc20": "<string>"
},
"min_deposit_usd": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"pm2_im_discount": "<string>",
"pm2_mm_discount": "<string>",
"risk_universe_id": 1,
"srm_im_discount": "<string>",
"srm_mm_discount": "<string>",
"lending": {
"borrow_apy": "<string>",
"supply_apy": "<string>",
"total_borrow": "<string>",
"total_borrow_cap": "<string>"
}
}
]
}
],
"spot_price": "<string>",
"option": {
"address": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"risk_universe_id": 1,
"risk_universe_name": "<string>",
"srm_perp_margin_requirements": {
"im_perp_req": "<string>",
"max_leverage": "<string>",
"mm_perp_req": "<string>"
}
}
]
},
"perp": {
"address": "<string>",
"name": "<string>",
"universes": [
{
"oi": {
"current_open_interest": "<string>",
"interest_cap": "<string>"
},
"risk_universe_id": 1,
"risk_universe_name": "<string>",
"srm_perp_margin_requirements": {
"im_perp_req": "<string>",
"max_leverage": "<string>",
"mm_perp_req": "<string>"
}
}
]
},
"spot_price_24h": "<string>"
}
]{
"error": {
"code": 123,
"message": "<string>",
"data": "<string>"
}
}