Skip to main content
Type: TPO_AGG | Weight: 5x | Max points: 20,000 Time Price Opportunity (Market Profile) data. Shows how price distributes over time blocks within a session. Includes structural features like Point of Control, Value Area, Initial Balance Range, poor highs/lows, and single prints.
TPO is a Kiyotaka exclusive — no other crypto data API offers Market Profile data.

Parameters

ParameterTypeRequiredDescription
tpoBlockSizeMinutesint32NoSize of each time block: 5, 30, 60, or 240 minutes. Default: 30.
tpoSessionTPOSessionNoSession type. Default: unspecified (uses interval).

TPO sessions

ValueDescription
TPO_SESSION_DAILYDaily session profile
TPO_SESSION_WEEKLYWeekly session profile
TPO_SESSION_MONTHLYMonthly session profile

Response fields

FieldTypeDescription
timestampTimestampSession start
period_startTimestampProfile period start
period_endTimestampProfile period end
levelsTPOLevel[]Array of price levels (see below)
TPO responses currently use snake_case JSON field names. Additional derived fields such as block_size_minutes, poc_price, vah_price, val_price, profile_high, profile_low, opening_price, closing_price, ibr_high, ibr_low, total_tpo_count, value_area_percentage, poor_highs, poor_lows, total_volume, and single_prints may be omitted when the backend does not populate them.
Unlike most REST types, TPO currently returns its payload under Point.TpoAggregation instead of inlining fields directly under Point.

TPOLevel fields

Each entry in the levels array contains:
FieldTypeDescription
pricedoublePrice level
block_idsint32[]Time block indices where this price was visited
buy_volumedoubleBuy volume at this price
sell_volumedoubleSell volume at this price
Current /v1/points responses may omit derived levels fields such as tpo_count, volume, first_touch_block, and last_touch_block when they are not populated.

Capabilities

FeatureSupportedDetails
USD denominationYestransform.normalize.quote=USD
Multi-exchange aggregationYestransform.groupBy.type=GROUP_BY_TYPE_SUM with coin param
Session typesYesDaily, weekly, monthly profiles
Configurable block sizeYes5, 30, 60, or 240 minute blocks

Examples

Daily profile with 30-minute blocks

Fetches 1 day of daily Market Profile for BTCUSDT on Binance Futures. Each session is divided into 30-minute time blocks (the default). Returns POC, Value Area, Initial Balance Range, and per-price-level TPO counts.
curl "https://api.kiyotaka.ai/v1/points?type=TPO_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=DAY&from=1774800000&period=86400&tpoSession=TPO_SESSION_DAILY&tpoBlockSizeMinutes=30" \
  -H "X-Kiyotaka-Key: YOUR_API_KEY"

Weekly profile

Fetches 1 week of weekly Market Profile with 60-minute time blocks. Useful for identifying higher-timeframe value areas and structural features.
curl "https://api.kiyotaka.ai/v1/points?type=TPO_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=WEEK&from=1774800000&period=604800&tpoSession=TPO_SESSION_WEEKLY&tpoBlockSizeMinutes=60" \
  -H "X-Kiyotaka-Key: YOUR_API_KEY"

High-resolution (5-minute blocks)

Same daily profile but with 5-minute time blocks instead of 30. Produces more granular TPO data with more time blocks per session — useful for intraday analysis.
curl "https://api.kiyotaka.ai/v1/points?type=TPO_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=DAY&from=1774800000&period=86400&tpoSession=TPO_SESSION_DAILY&tpoBlockSizeMinutes=5" \
  -H "X-Kiyotaka-Key: YOUR_API_KEY"

Response

{
  "series": [
    {
      "id": {
        "type": "TPO_AGG",
        "exchange": "BINANCE_FUTURES",
        "rawSymbol": "BTCUSDT",
        "normalizedSymbol": "BTC-USDT",
        "category": "PERPETUAL",
        "interval": "FIFTEEN_MINUTES",
        "coin": "BTC"
      },
      "points": [
        {
          "Point": {
            "TpoAggregation": {
              "timestamp": { "s": 1774828800 },
              "period_start": { "s": 1774828800 },
              "period_end": { "s": 1774886400 },
              "levels": [
                {
                  "price": 65754,
                  "block_ids": [0],
                  "buy_volume": 10.413000000000006,
                  "sell_volume": 10.654999999999998
                }
              ]
            }
          }
        }
      ]
    }
  ]
}