Volume
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/volumeimport requests
url = "https://api.cabalspy.xyz/v1/transactions/volume"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/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://api.cabalspy.xyz/v1/transactions/volume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.cabalspy.xyz/v1/transactions/volume"
req, _ := http.NewRequest("GET", url, nil)
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.cabalspy.xyz/v1/transactions/volume")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "volume",
"volume": 842.5,
"volume_usd": 69388.6,
"currency": "SOL",
"time_window_seconds": 3600
},
"meta": {
"request_id": "req_5162c7cf7f87",
"cached": false,
"cache_age_seconds": 0,
"version": "1.0.0",
"timestamp": "2026-07-06T11:01:57Z"
}
}
Transactions
Volume
Total trading volume of tracked wallets within a time window, up to 24 hours back, in native currency and USD, optionally per token.
GET
/
v1
/
transactions
/
volume
Volume
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/volumeimport requests
url = "https://api.cabalspy.xyz/v1/transactions/volume"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/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://api.cabalspy.xyz/v1/transactions/volume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.cabalspy.xyz/v1/transactions/volume"
req, _ := http.NewRequest("GET", url, nil)
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.cabalspy.xyz/v1/transactions/volume")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "volume",
"volume": 842.5,
"volume_usd": 69388.6,
"currency": "SOL",
"time_window_seconds": 3600
},
"meta": {
"request_id": "req_5162c7cf7f87",
"cached": false,
"cache_age_seconds": 0,
"version": "1.0.0",
"timestamp": "2026-07-06T11:01:57Z"
}
}
The volume counterpart to Count. Returns the total trading volume of tracked wallets within a time window, up to 24 hours back, in both native currency and USD. Optionally filter to a single token with mint.
Use it for volume indicators, for example how much SOL of KOL volume flowed through a token in the last hour, without pulling every transaction.
The window is built from seconds, minutes and hours, summed, up to a maximum of 24 hours. volume_usd is null when no USD value could be derived. This endpoint returns only the totals, not the transactions.
Query Parameters
string
required
Chain. One of solana, bnb, base, eth.
string
required
Wallet category kol, smart or whale.
integer
Seconds to look back. Combined with minutes and hours.
integer
Minutes to look back.
integer
Hours to look back. Maximum total window is 24 hours.
string
Optional token mint to measure only that token volume.
string
required
Your API key. Alternatively pass it as an Authorization Bearer header.
Usage Example
curl "https://api.cabalspy.xyz/v1/transactions/volume?blockchain=solana&type=kol&hours=1&api_key=YOUR_KEY"
import requests
params = {"blockchain": "solana", "type": "kol", "hours": 1, "api_key": "YOUR_KEY"}
r = requests.get("https://api.cabalspy.xyz/v1/transactions/volume", params=params)
d = r.json()["data"]
print("volume", d["volume"], d["currency"], "usd", d["volume_usd"])
const p = new URLSearchParams({
blockchain: "solana", type: "kol", hours: "1", api_key: "YOUR_KEY",
});
const res = await fetch(`https://api.cabalspy.xyz/v1/transactions/volume?${p}`);
const { data } = await res.json();
console.log("volume", data.volume, data.currency);
Response
boolean
True on success.
object
Show data
Show data
string
Requested chain.
string
Requested wallet type.
string
volume.
number
Total traded volume in the window (native currency).
number
Total traded volume in USD, or null if no USD value could be derived.
string
Native currency.
integer
The effective window in seconds, after capping.
string
Present only when a mint filter was passed.
array
Present only if the requested window exceeded the 24 hour maximum and was capped.
{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "volume",
"volume": 842.5,
"volume_usd": 69388.6,
"currency": "SOL",
"time_window_seconds": 3600
},
"meta": {
"request_id": "req_5162c7cf7f87",
"cached": false,
"cache_age_seconds": 0,
"version": "1.0.0",
"timestamp": "2026-07-06T11:01:57Z"
}
}
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_parameter | blockchain or type missing or invalid. |
| 401 | unauthorized | API key missing. |
| 403 | forbidden | API key invalid or credits exhausted. |
| 429 | rate_limited | Rate limit exceeded. |

