Volume distributed across price levels for a given interval. Shows where the most trading activity occurred.
The server chooses the price bucket size automatically from market metadata. Do not pass blockSize in the request -- it is ignored for VOLUME_PROFILE_AGG. Each profile entry already contains its own price level (see How to read profile below).
Required parameters
exchange(at least one)fromandperiod(the time range)- One of:
coin,rawSymbol, ornormalizedSymbol
Response fields
| Field | Type | Description |
|---|---|---|
profile | double[] | Alternating [price, buyVolume, sellVolume] triplets |
timestamp | Timestamp | Interval start |
The profile array contains repeating price / buy volume / sell volume triplets:
[price1, buyVolume1, sellVolume1, price2, buyVolume2, sellVolume2, ...]
Each triplet already includes the bucket's price level, so you can read the profile directly from the response without sending blockSize.
Capabilities
| Feature | Supported | Details |
|---|---|---|
| USD denomination | Yes | transform.normalize.quote=USD converts volume to USD |
| Multi-exchange aggregation | Yes | transform.groupBy.type=GROUP_BY_TYPE_SUM with coin param |
Examples
Single exchange
Fetches 1 hour of volume profile data for BTCUSDT on Binance Futures. The server chooses the price bucket size automatically.
curl "https://api.kiyotaka.ai/v1/points ?type=VOLUME_PROFILE_AGG &exchange=BINANCE_FUTURES &rawSymbol=BTCUSDT &interval=HOUR &from=1774800000 &period=3600" \\ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Aggregated across exchanges (USD)
Combines volume profile data from Binance Futures and Bybit for BTC, with volume converted to USD. Gives a cross-exchange view of where trading activity concentrated.
curl "https://api.kiyotaka.ai/v1/points ?type=VOLUME_PROFILE_AGG &exchange=BINANCE_FUTURES &exchange=BYBIT &coin=BTC &interval=HOUR &from=1774800000 &period=3600 &transform.groupBy.type=GROUP_BY_TYPE_SUM &transform.normalize.quote=USD" \\ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Response
{
"series": [
{
"id": {
"type": "VOLUME_PROFILE_AGG",
"exchange": "BINANCE_FUTURES",
"rawSymbol": "BTCUSDT",
"normalizedSymbol": "BTC-USDT",
"category": "PERPETUAL",
"interval": "HOUR",
"coin": "BTC"
},
"points": [
{
"Point": {
"profile": [66108, 0, 5.466999999999996, 66114, 6.239000000000001, 25.31399999999998, 66120, 7.307999999999996, 20.503000000000004, ...],
"timestamp": { "s": 1774803600 }
}
}
]
}
]
}
How to read profile
profile is a flat array of repeating triplets:
[price1, buyVolume1, sellVolume1, price2, buyVolume2, sellVolume2, ...]
So:
profile[0]is the first price levelprofile[1]is the buy volume at that priceprofile[2]is the sell volume at that priceprofile[3]is the next price levelprofile[4]is the buy volume at that next priceprofile[5]is the sell volume at that next price