Volume history
curl --request GET \
--url https://api.polynode.dev/v3/perps/volume/{instrument} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/volume/{instrument}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v3/perps/volume/{instrument}', 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.polynode.dev/v3/perps/volume/{instrument}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-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"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v3/perps/volume/{instrument}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.polynode.dev/v3/perps/volume/{instrument}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/volume/{instrument}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"bucket": "1h",
"data": [
{
"notional_volume": "88142.80821",
"quantity": "1.37503",
"timestamp": 1783738800000,
"trade_count": 258
},
{
"notional_volume": "186684.57225",
"quantity": "2.91545",
"timestamp": 1783735200000,
"trade_count": 514
}
],
"instrument_id": 6,
"more": true,
"symbol": "BTC-USD"
}Perps Market Data
Volume History
Bucketed notional volume and trade counts. bucket = 1m,5m,15m,1h,4h,1d.
GET
/
v3
/
perps
/
volume
/
{instrument}
Volume history
curl --request GET \
--url https://api.polynode.dev/v3/perps/volume/{instrument} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/volume/{instrument}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v3/perps/volume/{instrument}', 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.polynode.dev/v3/perps/volume/{instrument}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-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"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v3/perps/volume/{instrument}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.polynode.dev/v3/perps/volume/{instrument}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/volume/{instrument}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"bucket": "1h",
"data": [
{
"notional_volume": "88142.80821",
"quantity": "1.37503",
"timestamp": 1783738800000,
"trade_count": 258
},
{
"notional_volume": "186684.57225",
"quantity": "2.91545",
"timestamp": 1783735200000,
"trade_count": 514
}
],
"instrument_id": 6,
"more": true,
"symbol": "BTC-USD"
}| Parameter | Description |
|---|---|
bucket | 1m, 5m, 15m, 1h, 4h, 1d (default 1h) |
after / before | Time window (Unix seconds or ms) |
limit | Max buckets (default 200, up to 2000) |
notional_volume is price × quantity summed in USD; quantity is base-asset units. Buckets are newest first. Rolled up from every archived execution, accruing from July 9, 2026 onward.Authorizations
Path Parameters
Instrument id (e.g. 6), symbol (BTC-USD), or bare asset (btc).
Query Parameters
Bucket size (default 1h).
Only rows after this time (Unix seconds or ms).
Only rows before this time (Unix seconds or ms).
Max rows to return.
Response
200 - application/json
Success
⌘I

