REST API

Volume Profile

Volume distributed across price levels via the Kiyotaka Data API.

GET/v1/points

VOLUME_PROFILE_AGGWeight: 2x | Max points: 20,000

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)
  • from and period (the time range)
  • One of: coin, rawSymbol, or normalizedSymbol

Response fields

FieldTypeDescription
profiledouble[]Alternating [price, buyVolume, sellVolume] triplets
timestampTimestampInterval 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

FeatureSupportedDetails
USD denominationYestransform.normalize.quote=USD converts volume to USD
Multi-exchange aggregationYestransform.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

JSON
{
  "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 level
  • profile[1] is the buy volume at that price
  • profile[2] is the sell volume at that price
  • profile[3] is the next price level
  • profile[4] is the buy volume at that next price
  • profile[5] is the sell volume at that next price