---
title: Parameters & Enums
description: Exchanges, symbols, intervals, time ranges, sort direction, and transforms for the Kiyotaka Data API.
---

# Parameters & Enums

Reference tables for exchange IDs, symbol formats, and interval values used across the API. Use the metadata endpoints to discover available exchanges and symbols programmatically.

## Exchanges

Pass exchange IDs via the `exchange` query parameter. Values are case-sensitive.

### Crypto -- Derivatives

| Exchange ID | Exchange |
| --- | --- |
| `BINANCE_FUTURES` | Binance USDT-M Futures |
| `BINANCE_DELIVERY` | Binance Coin-M Futures |
| `BYBIT` | Bybit Perpetual |
| `OKEX_SWAP` | OKX Perpetual Swaps |
| `OKEX_FUTURES` | OKX Futures |
| `DERIBIT` | Deribit |
| `BITMEX` | BitMEX |
| `BITGET` | Bitget |
| `BITFINEX_DERIVATIVES` | Bitfinex Derivatives |
| `GATE_IO_FUTURES` | Gate.io Futures |
| `HYPERLIQUID_FUTURES` | Hyperliquid Futures |
| `HYPERLIQUID_HIP3` | Hyperliquid HIP-3 |
| `HUOBI_DM` | Huobi DM |
| `HUOBI_DM_SWAP` | Huobi DM Swap |
| `HUOBI_DM_LINEAR_SWAP` | Huobi DM Linear Swap |
| `CME` | CME Group |

### Crypto -- Spot

| Exchange ID | Exchange |
| --- | --- |
| `BINANCE` | Binance |
| `BYBIT_SPOT` | Bybit Spot |
| `COINBASE` | Coinbase |
| `OKEX` | OKX Spot |
| `BITFINEX` | Bitfinex |
| `GATE_IO` | Gate.io |
| `BITSTAMP` | Bitstamp |
| `UPBIT` | Upbit |
| `HUOBI` | Huobi |
| `HYPERLIQUID` | Hyperliquid Spot |

### Prediction Markets

| Exchange ID | Exchange |
| --- | --- |
| `POLYMARKET` | Polymarket |

### Equities

| Exchange ID | Exchange |
| --- | --- |
| `NYSE` | New York Stock Exchange |
| `NASDAQ` | Nasdaq |
| `FINRA` | FINRA |
| `CBOE` | Cboe |
| `IEX` | IEX |
| `LTSE` | Long-Term Stock Exchange |
| `MIAX_PEARL` | MIAX Pearl |
| `MEMBERS_EXCHANGE` | Members Exchange |
| `OTC_EQUITY_SECURITY` | OTC Equity |

### Commodities

| Exchange ID | Exchange |
| --- | --- |
| `CBOT` | Chicago Board of Trade |
| `NYMEX` | NYMEX |
| `COMEX` | COMEX |
| `ICE` | ICE |
| `LME` | London Metal Exchange |
| `LBMA` | London Bullion Market |
| `PLATTS` | S&P Global Platts |

### FX

| Exchange ID | Exchange |
| --- | --- |
| `INTERBANK_FX` | Interbank FX |

## Categories

`category` tells you what kind of market the instrument is. It describes the trading venue's market class, not the API data type.
Use `SPOT` for the underlying asset traded directly, and `PERPETUAL` for non-expiring derivative contracts.

| Value | Description |
| --- | --- |
| `SPOT` | Spot market. You are trading the asset itself for immediate settlement, such as `BTC-USD` on Coinbase. |
| `PERPETUAL` | Perpetual futures / swap market. You are trading a derivative contract with no expiry, such as `BTCUSDT` on Binance Futures. |

<Callout kind="note">

Categories describe the instrument itself. For example, `TRADE_AGG` data can exist for both `SPOT` and `PERPETUAL` markets, while data such as funding rates and open interest only applies to `PERPETUAL` markets.

</Callout>

## Side

Used in per-side data types like `TRADE_AGG` and `LIQUIDATION_AGG`. Returned in the series identifier to distinguish buy vs. sell data.

| Value | Description |
| --- | --- |
| `BUY` | Buy side |
| `SELL` | Sell side |

You can filter by side using the `side` query parameter:

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-c"># Get only buy-side candles</span>
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTCUSDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span>
    <span class="s-p">&amp;side</span>=<span class="s-s">BUY</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=3600&side=BUY "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=3600&side=BUY "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

## Symbol formats

There are three ways to specify which instrument you want data for:

### `rawSymbol` (recommended)

The exchange-native trading pair symbol. This is the most precise way to target a specific instrument.

<CodeBlock lang="cURL">
<pre><span class="s-c"># Binance Futures BTC perpetual</span>
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTCUSDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span>
&#10;
<span class="s-c"># Coinbase BTC spot</span>
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">COINBASE</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTC-USD</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

Symbols are exchange-specific. `BTCUSDT` on Binance Futures is not the same as `BTCUSDT` on Bybit. Always pair `rawSymbol` with the correct `exchange`.

### `coin`

The base asset. Returns data for all matching instruments on the specified exchange(s).

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-c"># All BTC pairs on Binance Futures</span>
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;coin</span>=<span class="s-s">BTC</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&coin=BTC&interval=HOUR&from=1774800000&period=3600 "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&coin=BTC&interval=HOUR&from=1774800000&period=3600 "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

Useful for heatmap queries where you want aggregated data across all pairs for an asset.

### `normalizedSymbol`

A cross-exchange normalized market symbol. Use this when you want the same market represented in a consistent format across exchanges, such as `BTC-USDT` or `BTC-USD`.

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;normalizedSymbol</span>=<span class="s-s">BTC-USDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&normalizedSymbol=BTC-USDT&interval=HOUR&from=1774800000&period=3600 "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&normalizedSymbol=BTC-USDT&interval=HOUR&from=1774800000&period=3600 "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

<Callout kind="note">

Use `rawSymbol` when you need the exchange-native market identifier. Use `normalizedSymbol` when you want a normalized market identifier like `BTC-USDT` across exchanges. Use `coin` when you want broader coverage across pairs.

</Callout>

### `tokenName`

Some market-independent datasets use `tokenName` alongside `coin` instead of exchange or symbol filters.

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TOKEN_SUPPLY_AGG</span>
    <span class="s-p">&amp;coin</span>=<span class="s-s">BTC</span>
    <span class="s-p">&amp;tokenName</span>=<span class="s-s">Bitcoin</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">DAY</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1775635290</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">604800</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

Use `tokenName` for token supply and dominance-style queries. In practice it usually matches the `coinName` returned by `GET /v1/markets`.

## Intervals

Set the `interval` parameter to control aggregation granularity.

| Value | Duration |
| --- | --- |
| `MINUTE` | 1 minute |
| `FIVE_MINUTES` | 5 minutes |
| `FIFTEEN_MINUTES` | 15 minutes |
| `THIRTY_MINUTES` | 30 minutes |
| `HOUR` | 1 hour |
| `FOUR_HOURS` | 4 hours |
| `DAY` | 1 day |
| `WEEK` | 1 week |

Not all intervals are available for all data types. The API returns an error if you request an unsupported combination.

## Tenors

Used by option summary types such as Implied Volatility and Skew.
A tenor is the time-to-expiry bucket of the option summary series you want to query. For example, `ONE_W` means the one-week expiry bucket, while `ONE_M` means the one-month expiry bucket.
Tenor is part of the market selection. It is different from `interval`, which controls how the returned data is time-bucketed.

| Value | Description |
| --- | --- |
| `ONE_D` | 1 day |
| `THREE_D` | 3 days |
| `ONE_W` | 1 week |
| `ONE_M` | 1 month |
| `TWO_M` | 2 months |
| `THREE_M` | 3 months |
| `SIX_M` | 6 months |
| `ONE_Y` | 1 year |

Use market discovery to find which tenor values are actually available for a given summary symbol.

## Time range

Specify the query window with `from` and `period`:

| Parameter | Type | Description |
| --- | --- | --- |
| `from` | int64 | Start time as a Unix timestamp in seconds (inclusive). |
| `period` | int64 | Duration in seconds from the `from` timestamp. |

For example, to query 6 hours of hourly candles starting from a specific time:

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTCUSDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">21600</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=21600 "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=21600 "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

This returns data from `1774800000` to `1774821600` (6 hours = 21,600 seconds).

## Sort direction

Control the ordering of returned data points.

| Value | Description |
| --- | --- |
| `SORT_DIRECTION_ASC` | Ascending (oldest first) -- default |
| `SORT_DIRECTION_DESC` | Descending (newest first) |

## Transforms

Transforms modify how data is processed before it reaches you. Use them to get USD-denominated values or aggregate data across multiple exchanges.

### Coin vs. USD denomination

By default, values are returned in **coin terms** (e.g., volume in BTC). To get USD-denominated values, add `transform.normalize.quote=USD`:

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTCUSDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span>
    <span class="s-p">&amp;transform.normalize.quote</span>=<span class="s-s">USD</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=3600&transform.normalize.quote=USD "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=3600&transform.normalize.quote=USD "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

**Applies to:** Candles (volume), Open Interest, Liquidations, Volume Profile, Orderbook Heatmap, Liquidation Heatmap.
**Does not apply to:** Funding Rate -- rates are already normalized. Use `transform.normalize.fundingInterval` instead (see below).

### Multi-exchange aggregation

To aggregate data across multiple exchanges into a single series, pass multiple `exchange` parameters with a group-by transform. Use `coin` instead of `rawSymbol` since symbols differ across exchanges:

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">TRADE_SIDE_AGNOSTIC_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BYBIT</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">OKEX_SWAP</span>
    <span class="s-p">&amp;coin</span>=<span class="s-s">BTC</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">3600</span>
    <span class="s-p">&amp;transform.groupBy.type</span>=<span class="s-s">GROUP_BY_TYPE_SUM</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&exchange=BYBIT&exchange=OKEX_SWAP&coin=BTC&interval=HOUR&from=1774800000&period=3600&transform.groupBy.type=GROUP_BY_TYPE_SUM "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=TRADE_SIDE_AGNOSTIC_AGG&exchange=BINANCE_FUTURES&exchange=BYBIT&exchange=OKEX_SWAP&coin=BTC&interval=HOUR&from=1774800000&period=3600&transform.groupBy.type=GROUP_BY_TYPE_SUM "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

<Callout kind="note">

Multi-exchange aggregation requires **Advanced** tier. When `groupBy` is specified without an explicit `transform.normalize.quote`, USD normalization is applied automatically so values are comparable across exchanges.

</Callout>

### GroupBy types per data type

| Data Type | GroupBy Type | Description |
| --- | --- | --- |
| Candles | `GROUP_BY_TYPE_SUM` | Sums volume, preserves OHLC extremes |
| Open Interest | `GROUP_BY_TYPE_SUM` | Sums OI across exchanges |
| Funding Rate | `GROUP_BY_TYPE_OPEN_INTEREST_WEIGHTED_AVG` | OI-weighted average rate |
| Liquidations | `GROUP_BY_TYPE_SUM` | Sums liquidation volume |
| Volume Profile | `GROUP_BY_TYPE_SUM` | Sums volume per price level |
| TPO | `GROUP_BY_TYPE_SUM` | Sums TPO data |
| Orderbook Heatmap | `GROUP_BY_TYPE_SUM` | Combines orderbook depth |

Funding rate uses **open interest weighted average (OIWA)** instead of sum -- this produces a more accurate cross-exchange rate by weighting each exchange proportionally to its OI.

### Funding rate normalization

Funding rates can be normalized to a specific interval:

<CodeTabs>

<CodePanel lang="curl">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/points</span>
    <span class="s-p">?type</span>=<span class="s-s">FUNDING_RATE_AGG</span>
    <span class="s-p">&amp;exchange</span>=<span class="s-s">BINANCE_FUTURES</span>
    <span class="s-p">&amp;rawSymbol</span>=<span class="s-s">BTCUSDT</span>
    <span class="s-p">&amp;interval</span>=<span class="s-s">HOUR</span>
    <span class="s-p">&amp;from</span>=<span class="s-n">1774800000</span>
    <span class="s-p">&amp;period</span>=<span class="s-n">28800</span>
    <span class="s-p">&amp;transform.normalize.fundingInterval</span>=<span class="s-n">28800000</span><span class="s-s">"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodePanel>

<CodePanel lang="python">
<pre><span class="s-k">import</span> <span class="s-v">requests</span>
&#10;
<span class="s-v">response</span> = requests.<span class="s-f">get</span>(
    <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=FUNDING_RATE_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=28800&transform.normalize.fundingInterval=28800000 "</span>,
    headers={<span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span>}
)
<span class="s-v">data</span> = response.<span class="s-f">json</span>()</pre>
</CodePanel>

<CodePanel lang="javascript">
<pre><span class="s-k">const</span> <span class="s-v">response</span> = <span class="s-k">await</span> <span class="s-f">fetch</span>(
  <span class="s-s">"https://api.kiyotaka.ai/v1/points?type=FUNDING_RATE_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=28800&transform.normalize.fundingInterval=28800000 "</span>,
  { headers: { <span class="s-s">"X-Kiyotaka-Key"</span>: <span class="s-s">"YOUR_API_KEY"</span> } }
)
<span class="s-k">const</span> <span class="s-v">data</span> = <span class="s-k">await</span> response.<span class="s-f">json</span>()</pre>
</CodePanel>

</CodeTabs>

The `fundingInterval` value is in **milliseconds**. The default is `28800000` (8 hours).