REST API

TPO / Market Profile

Time Price Opportunity data -- a Kiyotaka exclusive. Not available on any other crypto data API.

GET/v1/points

TPO_AGGWeight: 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.

Required parameters

TPO requests must include:

  • exchange (at least one)
  • from and period (the time range)
  • One of: coin, rawSymbol, or normalizedSymbol
  • tpoSession -- the session type to roll up TPO blocks into.

Parameters

ParameterTypeRequiredDescription
tpoSessionTPOSessionYesSession type. See TPO sessions.
tpoBlockSizeMinutesint32NoSize of each time block: 5, 30, 60, or 240 minutes. Default: 30.

TPO sessions

ValueDescription
TPO_SESSION_DAILYDaily session profile. from must be aligned to 00:00:00 UTC.
TPO_SESSION_WEEKLYWeekly session profile. from must align to a session boundary.
TPO_SESSION_MONTHLYMonthly session profile. from must align to a session boundary.

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

JSON
{
  "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
                }
              ]
            }
          }
        }
      ]
    }
  ]
}