curl --request POST \
--url https://perps-api.vooi.io/broker-statistics/users-volume \
--header 'Content-Type: application/json' \
--header 'X-Broker-Key: <x-broker-key>' \
--data '
{
"usersList": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"startedFrom": 123
}
],
"exchanges": [],
"from": 1767225600000,
"resolution": "day",
"to": 1769903999000
}
'import requests
url = "https://perps-api.vooi.io/broker-statistics/users-volume"
payload = {
"usersList": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"startedFrom": 123
}
],
"exchanges": [],
"from": 1767225600000,
"resolution": "day",
"to": 1769903999000
}
headers = {
"X-Broker-Key": "<x-broker-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Broker-Key': '<x-broker-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
usersList: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', startedFrom: 123}],
exchanges: [],
from: 1767225600000,
resolution: 'day',
to: 1769903999000
})
};
fetch('https://perps-api.vooi.io/broker-statistics/users-volume', 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://perps-api.vooi.io/broker-statistics/users-volume",
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([
'usersList' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'startedFrom' => 123
]
],
'exchanges' => [
],
'from' => 1767225600000,
'resolution' => 'day',
'to' => 1769903999000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Broker-Key: <x-broker-key>"
],
]);
$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://perps-api.vooi.io/broker-statistics/users-volume"
payload := strings.NewReader("{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Broker-Key", "<x-broker-key>")
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://perps-api.vooi.io/broker-statistics/users-volume")
.header("X-Broker-Key", "<x-broker-key>")
.header("Content-Type", "application/json")
.body("{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/broker-statistics/users-volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Broker-Key"] = '<x-broker-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}"
response = http.request(request)
puts response.read_body[
{
"exchanges": {
"brokerFees": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
},
"fees": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
},
"volume": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
}
},
"totalVolume": "103000.00",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]Get per-user trade volume and broker fees, broken down by exchange, for a list of users
curl --request POST \
--url https://perps-api.vooi.io/broker-statistics/users-volume \
--header 'Content-Type: application/json' \
--header 'X-Broker-Key: <x-broker-key>' \
--data '
{
"usersList": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"startedFrom": 123
}
],
"exchanges": [],
"from": 1767225600000,
"resolution": "day",
"to": 1769903999000
}
'import requests
url = "https://perps-api.vooi.io/broker-statistics/users-volume"
payload = {
"usersList": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"startedFrom": 123
}
],
"exchanges": [],
"from": 1767225600000,
"resolution": "day",
"to": 1769903999000
}
headers = {
"X-Broker-Key": "<x-broker-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Broker-Key': '<x-broker-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
usersList: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', startedFrom: 123}],
exchanges: [],
from: 1767225600000,
resolution: 'day',
to: 1769903999000
})
};
fetch('https://perps-api.vooi.io/broker-statistics/users-volume', 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://perps-api.vooi.io/broker-statistics/users-volume",
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([
'usersList' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'startedFrom' => 123
]
],
'exchanges' => [
],
'from' => 1767225600000,
'resolution' => 'day',
'to' => 1769903999000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Broker-Key: <x-broker-key>"
],
]);
$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://perps-api.vooi.io/broker-statistics/users-volume"
payload := strings.NewReader("{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Broker-Key", "<x-broker-key>")
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://perps-api.vooi.io/broker-statistics/users-volume")
.header("X-Broker-Key", "<x-broker-key>")
.header("Content-Type", "application/json")
.body("{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/broker-statistics/users-volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Broker-Key"] = '<x-broker-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"usersList\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"startedFrom\": 123\n }\n ],\n \"exchanges\": [],\n \"from\": 1767225600000,\n \"resolution\": \"day\",\n \"to\": 1769903999000\n}"
response = http.request(request)
puts response.read_body[
{
"exchanges": {
"brokerFees": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
},
"fees": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
},
"volume": {
"aster": "<string>",
"binance": "<string>",
"bybit": "<string>",
"extended": "<string>",
"gate": "<string>",
"hyperliquid": "<string>",
"lighter": "<string>",
"mexc": "<string>",
"ondo": "<string>",
"robinhood": "<string>"
}
},
"totalVolume": "103000.00",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]Headers
Broker API key
Body
Users to compute stats for (1-100).
1 - 100 elementsShow child attributes
Show child attributes
Count trades only on these exchanges. When omitted, all supported exchanges are counted. Excluded exchanges are still present in the response with zero amounts.
1Supported perpetual exchange
aster, binance, bybit, extended, gate, hyperliquid, lighter, mexc, ondo, robinhood Start of the period as unix timestamp in milliseconds (inclusive). Defaults to now - 30 days (1 day for hour resolution).
x <= 90071992547409911767225600000
Aggregation interval: day (UTC calendar day) or hour (UTC clock hour). from/to snap to interval boundaries. On series endpoints, items span one interval and hour limits the range to 7 days. Defaults to day.
day, hour End of the period as unix timestamp in milliseconds (inclusive). Defaults to now.
x <= 90071992547409911769903999000
Response
Per-exchange breakdown of volume and broker fees.
Show child attributes
Show child attributes
Total executed notional across all exchanges.
"103000.00"
User id.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$