arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 25

Kaiko Indices

GETTING STARTED

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Reference Rates (Crypto)

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Reference Rates (Capital Market)

Loading...

Loading...

Loading...

Loading...

Loading...

Multi-Asset Indices

Loading...

Customized Indices

Loading...

Loading...

Timestamps

All timestamps use the ISO 8601 format in the UTC zone.

For example: 2024-11-26T14:17:15.124Z

Index codes

When querying any API, you will need to include an index code (also known as tickers). You can find a list of all our tickers or using the i.

herearrow-up-right
reference ap

About Kaiko Indices

hashtag
Trusted Rates and Indices for Financial Professionals

Kaiko Indices provides innovative and trusted rates and indices solutions throughout the crypto industry. These underpin financial products for some of the most respected exchanges and issuers in the world, delivering a strong foundation to help them build, innovate, and grow.

Here, you will find everything you need to use Kaiko Indices solutions effectively.

circle-exclamation

For any customers still using formerly Vinter APIs, please visit the dedicated section .

General information

hashtag
Headers

When interacting with any Kaiko you are expected to pass two pieces of information in a header:

  • Accept: application/json: API responses will be in JSON format.

API Key

You'll need to provide your API Key to access Kaiko Indices services.

hashtag
Using Kaiko Stream

Include your API key in your access credentials - see the code examples provided.

hashtag

Using REST API

When using REST API, include your API key in the header - see the code examples provided.

hashtag
Timestamp input

All time parameters are in UTC time zone and returned in the following ISO 8601 datetime format:

YYYY-MM-DDThh:mm:ss.sssZ

For example:

2017-12-17T13:35:24.351Z

The "T" separates the date from the time. The trailing "Z" indicates UTC time.

hashtag
Exchange codes

Find exchange codes here: .

hashtag
Instrument codes

Find instrument codes here: .

curl --compressed -H 'Accept: application/json' 'https://<api_hostname>/<endpoint>'

Composition data

hashtag
What is this endpoint for?

This endpoint retrieves the historical compositions of our Reference Rates, determined by our periodic rate rebalances. You can learn more about our Reference Rates .

hashtag
Endpoint

FOREX conversion

Convert your USD rate into a currency of your choosing.

hashtag
What is this endpoint for?

This endpoint retrieves any single-asset Benchmark Reference Rate and converts USD into a local currency of your choosing using as the source for the conversion. Currencies available are:

  • CHF

REST API Pagination

hashtag
Pagination

For queries that result in a larger dataset than can be returned in a single response, a continuation_token field is included. Calling the same endpoint again with the continuation_token query parameter added will return the next result page. For convenience, a next_url field is also included, containing a URL that can be called directly to get the next page. Paginated endpoints also takes a page_size parameter that specifies the maximum number of items that should be included in each response. Only the first call should include

hashtag
Request parameters

Parameter
Required
Description
Example

index_code

Yes

The desired rate ticker

KK_BRR_BTCUSD

start_time

No

hashtag
Response Fields

Field
Description

index_code

The ticker of the rate

start_period

Start of the composition period

end_period

End of the composition period

circle-info

** These are the exchanges that constitute the eligible universe of trading venues for the queried rate and time.

For each publication of a rate, the methodology will use trade data from these source exchanges based on actual trading activity.

Being listed as a source exchange does not guarantee that trades from exchange will be included in any given rate calculation. For the specific exchanges used for each publication, use the replication data endpoint.

hashtag
Request example

curl -H "X-Api-Key: $KAIKO_API_KEY" \
     -H 'Accept: application/json' \
    "https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_compo?index_code=KK_BRR_BTCUSD&start_time=2025-06-01T00:00:00Z"

hashtag
Response example

{
  "query": {
    "data_version": "v1",
    "request_time": "2025-09-22T12:39:25.097Z",
    "start_time": "2025-02-01T00:00:00Z",
    "end_time": "2025-04-01T00:00:00Z"
  },
  "time": "2025-09-22T12:39:25.107Z",
  "timestamp": 1758544765107,
  "data": [
    {
      "index_code": "KK_BRR_BTCUSD",
      "start_period": "2025-03-24T21:04:22.523Z",
      "end_period": "2025-06-23T21:06:13.244716Z",
      "exchanges": [
        "cbse",
        "gmni",
        "krkn",
        "lmax",
        "stmp"
      ],
      "window_seconds": 15,
      "partition_seconds": 3
    },
    {
      "index_code": "KK_BRR_BTCUSD",
      "start_period": "2025-01-07T22:00:58.271494Z",
      "end_period": "2025-03-24T21:29:22.526544Z",
      "exchanges": [
        "cbse",
        "gmni",
        "krkn",
        "lmax",
        "stmp"
      ],
      "window_seconds": 15,
      "partition_seconds": 3
    },
    {
      "index_code": "KK_BRR_ETHUSD",
      "start_period": "2025-03-24T21:04:22.523Z",
      "end_period": "2025-06-23T21:06:13.244716Z",
      "exchanges": [
        "cbse",
        "crco",
        "krkn",
        "lmax",
        "stmp"
      ],
      "window_seconds": 15,
      "partition_seconds": 3
    },
    {
      "index_code": "KK_BRR_ETHUSD",
      "start_period": "2025-01-07T22:00:58.271494Z",
      "end_period": "2025-03-24T21:29:22.526544Z",
      "exchanges": [
        "cbse",
        "crco",
        "krkn",
        "lmax",
        "stmp"
      ],
      "window_seconds": 15,
      "partition_seconds": 3
    }
  ],
  "result": "success"
}
herearrow-up-right
https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_compo

EUR

  • GBP

  • JPY

  • KRW

  • hashtag
    Endpoints

    gateway-v0-grpc.kaiko.ovh
    gateway-v0-http.kaiko.ovh
    https://gateway-v0-http.kaiko.ovh/api/stream/index_forex_rate_v1

    hashtag
    Request parameters

    Parameter
    Description
    Examples

    index_code

    The Kaiko Benchmark Reference Rate ticker. You can find a full list of our tickers .

    KK_BRR_BTCUSD_EUR

    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same stream, provide the indexCode as a comma separated list eg KK_BRR_BTCUSD_EUR,KK_BRR_BTCUSDC_USD Alternatively, use a wildcard by entering a * and you'll receive all tickers you have as part of you Kaiko subscription.

    hashtag
    Response fields

    Field
    Description

    indexCode

    The ticker identifying the rate.

    commodity

    The type of publication. Either real-time or fixings

    interval_startTime

    The start time for the interval.

    hashtag
    Request examples

    cURL requests are intended for testing purposes only.

    curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/index_forex_rate_v1" -H "accept: application/json" -H "X-Api-Key: $KAIKO_API_KEY" -H "Content-Type: application/json" -d "{\"indexCode\": \"KK_BRR_BTCUSD\"}"

    For more advanced users, you can access our full SDK herearrow-up-right, where you'll find more coding languages, examples and guidance.

    hashtag
    Response Example

    TP-ICAParrow-up-right
    {
      "indexCode": "KK_BRR_BTCUSD_EUR",
      "commodity": "SIC_REAL_TIME",
      "interval": {
        "startTime": "2024-09-12T21:42:35Z",
        "endTime": "2024-09-12T21:42:50Z"
      },
      "composition": {
        "underlying": {
          "name": "KK_BRR_BTCUSD",
          "tsEvent": "2024-09-12T21:42:50.658126160Z"
        },
        "fxrate": {
          "name": "USD/EUR",
          "tsEvent": "2024-09-12T21:42:01.048683287Z"
        }
      },
      "price": 52215.539302000085,
      "tsEvent": "2024-09-12T21:42:50.857862111Z",
      "detail": {
        "underlying": {
          "name": "KK_BRR_BTCUSD",
          "price": 57826.099,
          "tsEvent": "2024-09-12T21:42:50.658126160Z"
        }
      }
    }
    page_size
    , all subsequent calls should only use
    continuation_token
    . Paginating over a request with
    set to latest will preserve the current version across subsequent pagination requests.

    hashtag
    Parameters

    Parameter
    Required?
    Description

    continuation_token

    No

    The token auto-generated at when a response hits its page_size limit.

    page_size

    No

    Maximum number of records to return in one response

    hashtag
    Browsing pages when using Python

    The following script can be used to browse pages in Python. Make sure to update your trade_url and X-Api-Key.

    import http.client
    import json
    conn = http.
    
    import requests
    import pandas as pd
    
    trade_url = "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/usp3/spot/usdc-weth/trades?start_time=2022-11-01T00:00:00.000Z&end_time=2022-12-01T00:00:00.000Z"
    headers = {"X-Api-Key": "XXX","Accept": "application/json"}
    output = requests.get(trade_url, headers = headers).json()
    df = pd.DataFrame(output["data"])
    
    while "next_url" in output:
            output = requests.get(output["next_url"], headers = headers).json()
            df_to_add = pd.DataFrame(output["data"])
            print(df_to_add)
            df= pd.concat([df, df_to_add])
    print(df)
    versionarrow-up-right

    Historical prices

    hashtag
    What is this endpoint for?

    This endpoint returns our historical values for our Reference Rates. To subscribe to the live rate, please use . More information on the rates and its methodology can be found herearrow-up-right.

    hashtag
    Endpoint

    hashtag
    Path Parameters

    Parameter
    Required
    Description
    Example

    hashtag
    Query Parameters

    Parameter
    Required
    Description
    Example

    hashtag
    Fields

    Field
    Description
    Example

    hashtag
    Request examples

    hashtag
    Response example

    client
    .
    HTTPSConnection
    (
    "
    us.market-api.kaiko.io
    "
    )
    endpoint = "/v2/data/trades.v1/spot_exchange_rate/btc/usd"
    params = "?interval=1h&start_time=2024-09-01T00:00:00.000Z&end_time=2024-09-10T00:00:00.000Z"
    headers = {
    "X-Api-Key": "XXX",
    "Accept": "application/json"
    }
    all_trades = []
    next_url = endpoint + params
    while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_trades.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_trades)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
    break
    conn.close()
    print(f" datapoints fetched: {(all_trades)}")py

    Starting time in ISO 8601 (inclusive).

    2023-01-25T00:00:00.000Z

    end_time

    No

    Ending time in ISO 8601 (exclusive).

    2023-04-25T00:00:00.000Z

    exchanges

    Exchanges used during the composition period **

    window_seconds

    Calculation window in seconds for the period

    partition_seconds

    Partition size in seconds for the period

    result

    Status of the query

    2023-01-26T00:00:00.000Z

    parameters

    No

    boolean. If true, returns the underlying composition data of the rate such as exchanges and calculation window Default: false

    detail

    No

    boolean. If true, returns the underlying partition data for each publication Default: false

    page_size

    No

    (min: 1, default: 100, max: 5000). See

    Automatically included in continuation tokens.

    continuation_token

    No

    See

    sort

    No

    Return the data in ascending (asc) or descending (desc) order. Default asc

    Automatically included in continuation tokens.

    Price of the reference rate at interval_end

    67685.61363636363

    parameters

    Underlying composition data of the rate such as exchanges and calculation window

    'asset': 'btc',

    'exchanges': ['cbse', 'gmni', 'krkn', 'lmax', 'stmp'],

    'calc_window': 300

    detail

    Underlying partition data for each publication including price, volume, trade count and underlying data of the trade selected from the partition.

    'partition': 0,

    'price': 67678,

    'volume': 5.14445852,

    'count': 125,

    'underlying_trade': {'datetime': '2024-10-27T15:55:17.334Z',

    'exchange': 'stmp',

    https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_price/{index_code}

    index_code

    Yes

    The desired rate ticker

    KK_BRR_BTCUSD

    start_time

    Yes

    Starting time in ISO 8601 (inclusive).

    2023-01-25T00:00:00.000Z

    end_time

    Yes

    interval_start

    Starting timestamp of calculation window

    2023-01-25T01:01:00.000Z

    interval_end

    Ending timestamp of calculation window

    2023-01-25T01:02:00.000Z

    curl -X GET "https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_price/KK_BRR_BTCUSD_LDN" \
      -H "X-API-KEY: $KAIKO_API_KEY" \
      -H "accept: application/json" \
      -G \
      --data-urlencode "start_time=2024-10-27T00:00:00.000Z" \
      --data-urlencode "end_time=2024-10-28T00:00:00.000Z" \
      --data-urlencode "parameters=True" \
      --data-urlencode "detail=True"

    Ending time in ISO 8601 (exclusive).

    price

    interval_endTime

    The end time for the interval.

    composition_underlying_name

    The Kaiko Reference Rate ticker.

    composition_underlying_tsEvent

    The exact time of original Reference Rate publication.

    price

    The price of the Reference Rate in the converted currency.

    tsEvent

    The exact time of converted reference rate publication.

    detail_underlying_name

    The ticker of the underlying reference rate.

    detail_underlying_price

    The original published price of the Reference Rate in USD.

    detail_underlying_tsEvent

    The exact timestamp of original reference rate publication.

    herearrow-up-right

    Reference data

    hashtag
    What is this endpoint for?

    This endpoint retrieves a list of our Single-Asset Rates. You can learn more about Kaiko Rates and Indices herearrow-up-right.

    hashtag
    Endpoint

    https://us.market-api.kaiko.io/v2/data/index_reference_data.v1/rates

    hashtag
    Request parameters

    No parameters supported

    hashtag
    Response Fields

    Field
    Description

    hashtag
    Request example

    hashtag
    Response example

    Replay

    hashtag
    What is this endpoint for?

    This service is for any Reference Rates from an asset class that belongs to Capital Market

    hashtag
    Endpoint

    Replication data

    Identify the underlying trades used to calculate each rate publication

    hashtag
    What is this endpoint for?

    Kaiko Reference Rates are available exclusively through our Service. This helps you identify the underlying trades used to calculate each publication. Simply take the sequence_id field from any published rate you receive via Stream, and query this endpoint. The endpoint then generates a URL to query our endpoint where you'll see all the trades.

    circle-exclamation

    Category to which the rate belongs . i.e . Reference Rate or Benchmark Reference Rate

    dissemination

    Frequency of publication of the rate

    quote

    Long and short name of the quote asset

    base

    Long and short name of the base asset

    pair

    Asset pair represented by the rate.

    launch_date

    Date when the rate was launched and entered into production.

    inception_date

    Earliest effective date of historical data for a rate.

    brand

    Qualifies if the rate is issued from a partnership or from Kaiko standard offer.

    isin

    The ISIN code of the rate

    exposition

    "Public" : Indicates that it is open reference data accessible to all users.

    ticker

    The ticker of the rate.

    long_name

    Extensive name format of the rate issued

    short_name

    Short name format of the rate issued

    type

    curl --compressed -H 'Accept: application/json' 'https://us.market-api.kaiko.io/v2/data/index_reference_data.v1/rates'
    
    {'query': {'data_version': 'v1', 'commodity': 'indices', 'request_time': ''},
     'time': '2024-10-28T09:11:18.832Z',
     'timestamp': 1730106678832,
     'data': [{'ticker': 'KK_RFR_KNCUSD_SGP',
       'long_name': 'Kaiko KNC Reference_Rate Daily Fixing SGP',
       'short_name': 'Kaiko KNC Reference_Rate SGP',
       'type': 'Reference_Rate',
       'dissemination': 'Daily Fixing SGP',
       'quote': {'short_name': 'usd', 'long_name': 'United States Dollar'},
       'base': {'short_name': 'knc', 'long_name': 'Kyber Network'},
       'pair': 'knc-usd',
       'launch_date': '2024-03-04T00:00:00Z',
       'inception_date': '2024-03-04T00:00:00Z',
       'brand': 'Kaiko',
       'isin': 'NA',
       'exposition': 'Public'},
      ...],
     'result': 'success'}

    'volume': 0.20137745,

    'id': '366038625'}

    Paginationarrow-up-right
    Paginationarrow-up-right
    gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/ReplayIndex

    hashtag
    Request parameters

    Parameter
    Description
    Examples

    index_codes

    The list of Kaiko Reference Rate ticker. You can find a full list of our tickers .

    KK_RFR_AAPLUSD

    start_time

    Start date of exDate in ISO 8601 (exclusive).

    2026-04-22T05:04:32.000Z

    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same call, provide the index_codes as a comma-separated list, e.g. ["KK_RFR_AAPLUSD", "KK_RFR_TSLAUSD"] .

    hashtag
    Response fields

    Field
    Description

    index_codes

    The list of tickers identifying the rate.

    commodity

    The type of publication. Either real-time or fixings

    interval

    The time period in which transaction data are considered for the calculation of the rate. If a rate's calculation methodology has an interval of 15 seconds, startTime and endTime will be separated by 15s.

    hashtag
    Request examples

    cURL requests are intended for testing purposes only.

    grpcurl \
      -H "Authorization: Bearer $KAIKO_API_KEY" \
      -d '{
        "index_codes": ["KK_RFR_TSLAUSD"],
        "start_time":  "2026-04-27T20:04:32.000Z",
        "end_time":    "2026-04-27T20:04:33.000Z"
      }' \
      gateway.equ.kaiko.io:443 \
      kaiko.equities.EquitiesService/ReplayIndex

    hashtag
    Response Example

    {
      "index": {
        "indexCode": "KK_RFR_TSLAUSD",
        "commodity": "INDEX_COMMODITY_REAL_TIME",
        "interval": {
          "startTime": "2026-04-27T20:04:17Z",
          "endTime": "2026-04-27T20:04:32Z"
        },
        "quote": "usd",
        "bases": [
          {
            "asset": "tsla",
            "weight": 1
          }
        ],
        "exchanges": [
          "nutp",
          "boat",
          "xcta"
        ],
        "percentages": [
          {
            "percentage": 1,
            "price": 378.03249999999997,
            "pairs": [
              {
                "pair": "tsla-usd",
                "weight": 1,
                "instruments": [
                  {
                    "partition": "2",
                    "price": 378.025,
                    "volume": 40,
                    "count": "1",
                    "underlyingTrade": {
                      "volume": 40,
                      "exchange": "nutp",
                      "id": "019dd08b-0635-7077-a949-0c4aa816bedd",
                      "datetime": "2026-04-27T20:04:25.247777Z"
                    }
                  },
                  {
                    "partition": "3",
                    "price": 378.035,
                    "volume": 240,
                    "count": "2",
                    "underlyingTrade": {
                      "volume": 200,
                      "exchange": "nutp",
                      "id": "019dd08b-0d81-7cd5-914c-5a4c62cdbcb3",
                      "datetime": "2026-04-27T20:04:27.122012Z"
                    }
                  },
                  {
                    "partition": "4",
                    "price": 378.035,
                    "volume": 200,
                    "count": "1",
                    "underlyingTrade": {
                      "volume": 200,
                      "exchange": "nutp",
                      "id": "019dd08b-1833-7ef6-931e-2ef59a4bcb81",
                      "datetime": "2026-04-27T20:04:29.866528Z"
                    }
                  }
                ]
              }
            ]
          }
        ],
        "tsEvent": "2026-04-27T20:04:32.346558794Z",
        "sequenceId": "d7ns2k20qd5c72pg0220",
        "lastIngestTime": "2026-04-27T20:04:30.678413576Z"
      },
      "sessionDetector": "INDEX_SESSION_DETECTOR_LATE_HOURS"
    }
    We support publications for up to 72 hours using this endpoint. If you require the trades for a rate published more than 72 hours ago, contact our operations team.

    hashtag
    Endpoint

    hashtag
    Request parameters

    Parameter
    Required
    Description
    Example

    sequence_id

    Yes

    List of publication ID to explore. A publication is defined by event occurring on a specific instrument at a given point in time. Publication IDs can be retrieved from your index response.

    cmrqt2dugrtbh9jbhlk0,cmt40b74tfbpmrtbk180

    sort

    No

    hashtag
    Response fields

    Field
    Description
    Example

    index_code

    Ticker identifying the rate.

    KK_PR_BTCUSD

    index_type

    Type of publication: real-time or fixings.

    SIC_REAL_TIME

    hashtag
    Request example

    curl --compressed \
      -H 'Accept: application/json' \
      -H 'X-Api-Key: <client-api-key>' \
      'https://us.market-api.kaiko.io/v1/data/index_replication.v1/rates?sequence_id=csibfhkth8ejovmc3fcg'
    import http.client
    import json
    
    # Enter your Kaiko API Key
    api_key = "KAIKO_API_KEY"
    api_host = "us.market-api.kaiko.io"
    api_base_endpoint = "/v1/data/index_replication.v1/rates"
    # Start of mandatory parameter configuration
    mandatory_params = {
        "sequence_id": "csibfhkth8ejovmc3fcg",
    }
    # End of mandatory parameter configuration
    # Start of optional parameter configuration
    optional_params = {
            "sort": "asc",
    }
    # End of optional parameter configuration
    conn = http.client.HTTPSConnection(api_host)
    headers = {
        "X-Api-Key": api_key,
        "Accept": "application/json"
    }
    
    all_params = {**mandatory_params, **optional_params}
    
    url_params = []
    for param, value in all_params.items():
        url_params.append(f"{param}={value}")
    url_params = '&'.join(url_params)
    
    endpoint_with_params = f"{api_base_endpoint}?{url_params}"
    
    # Pagination for next pages
    all_data = []
    next_url = endpoint_with_params
    while next_url:
        conn.request("GET", next_url, headers=headers)
        response = conn.getresponse()
        data = json.loads(response.read().decode("utf-8"))
        all_data.extend(data.get("data", []))
        print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
        next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
        if not next_url:
            break
    conn.close()
    print(f" datapoints fetched: {(all_data)}")

    hashtag
    Response example

    Stream
    https://us.market-api.kaiko.io/v1/data/index_replication.v1/rates
    {
        "time": "2024-11-01T11:18:09.931Z",
        "timestamp": 1730459889931,
        "data": [
            {
                "index_code": "KK_BRR_BTCUSD",
                "index_type": "SIC_REAL_TIME",
                "sequence_id": "csibfhkth8ejovmc3fcg",
                "underlying_data": [
                    "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/cbse/spot/btc-usd/trades?start_time=2024-11-01T11:12:55Z&end_time=2024-11-01T11:13:10Z&index_inserted_at=2024-11-01T11:13:09.839473378Z&sort=asc",
                    "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/gmni/spot/btc-usd/trades?start_time=2024-11-01T11:12:55Z&end_time=2024-11-01T11:13:10Z&index_inserted_at=2024-11-01T11:13:09.839473378Z&sort=asc",
                    "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/krkn/spot/btc-usd/trades?start_time=2024-11-01T11:12:55Z&end_time=2024-11-01T11:13:10Z&index_inserted_at=2024-11-01T11:13:09.839473378Z&sort=asc",
                    "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/lmax/spot/btc-usd/trades?start_time=2024-11-01T11:12:55Z&end_time=2024-11-01T11:13:10Z&index_inserted_at=2024-11-01T11:13:09.839473378Z&sort=asc",
                    "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/stmp/spot/btc-usd/trades?start_time=2024-11-01T11:12:55Z&end_time=2024-11-01T11:13:10Z&index_inserted_at=2024-11-01T11:13:09.839473378Z&sort=asc"
                ]
            }
        ],
        "result": "success",
        "continuation_token": "",
        "next_url": "",
        "access": {
            "access_range": {
                "start_timestamp": 1454284800000,
                "end_timestamp": null
            },
            "data_range": {
                "start_timestamp": null,
                "end_timestamp": null
            }
        }
    }

    Corporate action reference data

    hashtag
    What is this endpoint for?

    This endpoint offers supplementary corporate action reference data for any user subscribing to Capital Market Reference Rates from Kaiko. The data covers single stocks and ETFs, including dividends, stock splits, mergers, spin-offs, and other structural events that impact equity prices and trading. This endpoint provides real-time updates and historical corporate action events with event classifications and critical dates including ex-date, and payment date. The data can be used for price adjustment validations, corporate action tracking, and anticipating upcoming events that affect equity valuation.

    hashtag
    Endpoints

    hashtag
    Request fields

    Parameter
    Required
    Description
    Example

    hashtag
    Response fields

    Field
    Description

    hashtag
    Request examples

    cURL requests are intended for testing purposes only.

    hashtag
    Response Example

    Subscribe

    How to configure a Reference Rate stream.

    hashtag
    What is this endpoint for?

    Reference Rates that average the prices over a period of time to determine an average value and daily “close” prices (as crypto is 24/7, "close" prices are always synthetic). They can be used for several use cases, from settlement of derivatives contracts to asset pricing and valuation. More information on the specific rates can be found .

    hashtag

    Reference Data

    hashtag
    What is this endpoint for?

    This endpoint retrieves a list of our Capital Market Single-Asset Rates. You can learn more about Kaiko Rates and Indices .

    hashtag
    Endpoint

    Market calendar and trading sessions

    hashtag
    What is this endpoint for?

    This endpoint offers supplementary market calendar and trading session reference data for user subscribing to Capital Market Reference Rates from Kaiko. Users can query by date range, exchange code, region, asset class, or trading status to retrieve a full breakdown of trading sessions alongside holiday flags, regular trading day indicators, and the previous and next regular trading days. Data is sourced from and maintained by Kaiko, with ad hoc updates when new exchanges are onboarded.

    Subscribe

    How to configure a Kaiko Reference Rates [Beta].

    hashtag
    What is this endpoint for?

    This service is for any Reference Rates from an asset class that belongs to Capital Market

    hashtag
    Endpoint

    end_time

    Start date of exDate in ISO 8601 (inclusive).

    2026-04-22T05:04:33.000Z

    quote

    The quote asset used for the rate denomination.

    bases

    The list of base assets included in the rate and their weight. For reference rates, this will always be a single asset.

    exchanges

    The exchanges involved in the computation. This list may change every quarter during the rebalancing period and depending on the new results of the Kaiko Exchange Ranking.

    percentages

    The different distribution levels included in the price computation.

    price

    The value of the rate in the quote denomination.

    pairs

    The list of pairs combined with additional details included in the computation.

    sessionDetector

    The status of market session for US (in Eastern Time):

    • INDEX_SESSION_DETECTOR_EARLY_HOURS : 4:00AM - 9:30AM

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:30AM - 4:00PM

    • INDEX_SESSION_DETECTOR_LATE_HOURS : 4:00PM - 8:00PM

    • INDEX_SESSION_DETECTOR_OVERNIGHT : 8:00PM - 4:00AM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : For weekend and holidays, last trading day 8:00PM - the day prior to the next trading day 8:00PM

    The status of market session for Hong Kong (in Hong Kong Time):

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:30AM - 12:00PM, 1PM - 4PM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : 12:00PM - 1:00 PM, 4PM - 9:30AM next day

    The status of market session for Korea (in Korea Standard Time):

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:00AM - 15:20PM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : 15:20PM - 9:00AM next day

    tsEvent

    The exact time of price publication.

    herearrow-up-right

    2023-01-26T00:00:00.000Z

    end_ex_date

    No

    End date of exDate in ISO 8601 (exclusive).

    2023-01-26T00:00:00.000Z

    The event identifier.

    status

    The status of the action. The response can be UPCOMING, ACTIVE, COMPLETED, HISTORICAL, UNKNOWN.

    eventCreatedAt

    The UTC datetime that the event is created

    lastUpdatedAt

    The UTC datetime that the event is updated

    caDetails

    The details of the action

    .actionType

    The type of the action

    .exDate

    The UTC datetime of the first trading day when the equity is trading without the right in question.

    .recordDate

    The UTC datetime when the records are checked to identify the eligible recipients of a specific corporate action.

    .paymentDate

    The UTC datetime when the action is executed.

    .dividendType

    The type of dividend. The response can be REGULAR, SPECIAL, INTERIM, FINAL

    idDetails

    The details of the underlying security

    .isin

    The International Securities Identification Number (ISIN) code

    .ticker

    The asset identifier in the local exchanges

    .issuerName

    The name of the issuer

    .exchangeMic

    The Market Identifier Code (MIC) where the asset is traded on

    .bbgCompId

    The issuer ID on Bloomberg

    .bbgCompTicker

    The issuer Ticker on Bloomberg

    .figi

    The Financial Instrument Global Identifier (FIGI) code

    .figiTicker

    The Financial Instrument Global Identifier (FIGI) ticker

    .timezone

    The IANA timezone of the main trading venue

    isins

    No

    List of Isin codes

    ["US78462F1030","US0378331005"]

    start_ex_date

    No

    eventUniqueID

    The unique event ID

    eventId

    The event ID of the corporation

    actionType

    The type of the action. The output can be CASH_DIVIDEND, STOCK_DIVIDEND, SPECIAL_DIVIDEND, BONUS, STOCK_SPLIT, REVERSE_SPLIT, MERGER, TAKEOVER, SPINOFF, CAPITAL_REDUCTION, RIGHTS_ISSUE, ENTITLEMENT, DISTRIBUTION, RETURN_OF_CAPITAL, DELISTING.

    gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService.CorporateActions

    Start date of exDate in ISO 8601 (exclusive).

    ediEventCode

    grpcurl \
      -H "Authorization: Bearer $KAIKO_API_KEY" \
      -d '{
        "start_ex_date": "2026-02-01T00:00:00.000Z",
        "end_ex_date":   "2026-02-28T00:00:00.000Z"
      }' \
      gateway.equ.kaiko.io:443 \
      kaiko.equities.EquitiesService.CorporateActions
    {
      "corporateActions": [
        {
          "eventUniqueId": "201010274603172",
          "eventId": "4603172",
          "actionType": "CASH_DIVIDEND",
          "ediEventCode": "DIV",
          "status": "UNKNOWN",
          "eventCreatedAt": "2026-02-07T05:00:00Z",
          "lastUpdatedAt": "2026-02-07T14:11:01Z",
          "caDetails": {
            "actionType": "CASH_DIVIDEND",
            "exDate": "2026-02-20T05:00:00Z",
            "recordDate": "2026-02-20T05:00:00Z",
            "paymentDate": "2026-03-19T04:00:00Z",
            "currency": "USD",
            "grossDividend": 0.68,
            "dividendType": "REGULAR"
          },
          "idDetails": {
            "isin": "US75513E1010",
            "ticker": "RTX",
            "issuerName": "RTX Corp",
            "exchangeMic": "XNYS",
            "bbgCompId": "BBG000BW8S60",
            "bbgCompTicker": "RTX US",
            "figi": "BBG000BW8TX8",
            "figiTicker": "RTX UN",
            "timezone": "America/New_York"
          }
        },
        {
          "eventUniqueId": "201010274577840",
          "eventId": "4577840",
          "actionType": "CASH_DIVIDEND",
          "ediEventCode": "DIV",
          "status": "UNKNOWN",
          "eventCreatedAt": "2026-01-27T15:00:00Z",
          "lastUpdatedAt": "2026-01-28T08:33:22Z",
          "caDetails": {
            "actionType": "CASH_DIVIDEND",
            "exDate": "2026-02-25T15:00:00Z",
            "recordDate": "2026-02-27T15:00:00Z",
            "currency": "KRW",
            "grossDividend": 1875,
            "dividendType": "REGULAR"
          },
          "idDetails": {
            "isin": "KR7000660001",
            "ticker": "000660",
            "issuerName": "SK Hynix Inc",
            "exchangeMic": "XKRX",
            "bbgCompId": "BBG000GQVT51",
            "bbgCompTicker": "000660 KS",
            "figi": "BBG000GQVTN1",
            "figiTicker": "000660 KP",
            "timezone": "Asia/Seoul"
          }
        },
        ...
      ]
    }
    Endpoints
    gateway-v0-grpc.kaiko.ovh
    gateway-v0-http.kaiko.ovh
    https://gateway-v0-http.kaiko.ovh/api/stream/index_v1

    hashtag
    Request parameters

    Parameter
    Description
    Examples

    index_code

    The Kaiko Benchmark Reference Rate ticker. You can find a full list of our tickers or by API .

    KK_BRR_BTCUSD

    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same stream, provide the indexCode as a comma-separated list, e.g. KK_PR_BTCUSD,KK_AAVE_USD

    Alternatively, use a wildcard by entering a * ,and you'll receive all tickers you have as part of you Kaiko subscription.

    hashtag
    Response fields

    Field
    Description

    indexCode

    The ticker identifying the rate.

    commodity

    The type of publication. Either real-time or fixings

    interval

    The time period in which transaction data are considered for the calculation of the rate. If a rate's calculation methodology has an interval of 15 seconds, startTime and endTime will be separated by 15s.

    hashtag
    Request examples

    This example demonstrates how to request historical data using replay. The maximum amount of data you can request for one replay cannot exceed a total of 24 hours in hours, seconds, and minutes. Replay data is available on a 72-hour rolling basis and should only be used to retrieve missed data. If full history is required, please use Rest API or CSV deployment methods.

    cURL requests are intended for testing purposes only.

    curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/index_v1" -H "accept: application/json" -H "X-Api-Key: $KAIKO_API_KEY" -H "Content-Type: application/json" -d "{\"indexCode\": \"KK_BRR_BTCUSD\"}"

    For more advanced users, you can access our full SDK herearrow-up-right, where you'll find more coding languages, examples and guidance.

    hashtag
    Response Example

    herearrow-up-right
    {
      "result": {
        "indexCode": "KK_BRR_BTCUSD_LDNLF",
        "commodity": "SIC_DAILY_FIXING",
        "interval": {
          "startTime": "2026-03-15T15:55:00Z",
          "endTime": "2026-03-15T16:00:00Z"
        },
        "quote": "usd",
        "bases": [
          {
            "asset": "btc",
            "weight": 1
          }
        ],
        "exchanges": [
          "crco",
          "gmni",
          "krkn",
          "lmax",
          "stmp"
        ],
        "percentages": [
          {
            "percentage": 1,
            "price": 71504.35309090909,
            "pairs": [
              {
                "pair": "btc-usd",
                "weight": 1,
                "instruments": [
                  {
                    "partition": "0",
                    "price": 71494,
                    "volume": 0.19981715,
                    "count": "12",
                    "underlyingTrade": {
                      "volume": 0.04441,
                      "exchange": "crco",
                      "id": "1773590109095301942",
                      "datetime": "2026-03-15T15:55:09.095Z"
                    }
                  },
                  {
                    "partition": "1",
                    "price": 71499.01,
                    "volume": 0.9988525499999997,
                    "count": "59",
                    "underlyingTrade": {
                      "volume": 0.03,
                      "exchange": "crco",
                      "id": "1773590139013290780",
                      "datetime": "2026-03-15T15:55:39.013Z"
                    }
                  },
                  {
                    "partition": "2",
                    "price": 71521.99,
                    "volume": 7.455164940000001,
                    "count": "85",
                    "underlyingTrade": {
                      "volume": 0.06718,
                      "exchange": "crco",
                      "id": "1773590166944032527",
                      "datetime": "2026-03-15T15:56:06.944Z"
                    }
                  },
                  {
                    "partition": "3",
                    "price": 71520.55,
                    "volume": 0.65069622,
                    "count": "38",
                    "underlyingTrade": {
                      "volume": 0.07051,
                      "exchange": "crco",
                      "id": "1773590209541279735",
                      "datetime": "2026-03-15T15:56:49.541Z"
                    }
                  },
                  {
                    "partition": "6",
                    "price": 71499,
                    "volume": 0.33936496,
                    "count": "51",
                    "underlyingTrade": {
                      "volume": 0.03062718,
                      "exchange": "krkn",
                      "id": "97190194",
                      "datetime": "2026-03-15T15:58:23.269434Z"
                    }
                  },
                  {
                    "partition": "7",
                    "price": 71485.44,
                    "volume": 0.96415299,
                    "count": "85",
                    "underlyingTrade": {
                      "volume": 0.05482,
                      "exchange": "crco",
                      "id": "1773590318011259597",
                      "datetime": "2026-03-15T15:58:38.011Z"
                    }
                  },
                  {
                    "partition": "4",
                    "price": 71520,
                    "volume": 2.8886697400000005,
                    "count": "85",
                    "underlyingTrade": {
                      "volume": 0.1,
                      "exchange": "stmp",
                      "id": "547083599",
                      "datetime": "2026-03-15T15:57:29Z"
                    }
                  },
                  {
                    "partition": "8",
                    "price": 71500.79,
                    "volume": 0.88407981,
                    "count": "50",
                    "underlyingTrade": {
                      "volume": 0.03509,
                      "exchange": "crco",
                      "id": "1773590342864005707",
                      "datetime": "2026-03-15T15:59:02.864Z"
                    }
                  },
                  {
                    "partition": "9",
                    "price": 71499.56,
                    "volume": 0.57279782,
                    "count": "43",
                    "underlyingTrade": {
                      "volume": 0.06,
                      "exchange": "crco",
                      "id": "1773590373299603299",
                      "datetime": "2026-03-15T15:59:33.299Z"
                    }
                  },
                  {
                    "partition": "5",
                    "price": 71520,
                    "volume": 2.172445329999999,
                    "count": "97",
                    "underlyingTrade": {
                      "volume": 0.06991051,
                      "exchange": "stmp",
                      "id": "547083602",
                      "datetime": "2026-03-15T15:57:30.071Z"
                    }
                  }
                ]
              }
            ]
          }
        ],
        "tsEvent": "2026-03-15T16:00:00.806764411Z",
        "sequenceId": "d6rdf01r6s9c72s1gun0",
        "lastIngestTime": "2026-03-15T15:59:59.822071833Z",
        "lastAnomalyIngestTime": null,
        "fallbackInfo": {
          "fallbackUsed": false
        }
      }
    }
    hashtag
    Query parameters
    Parameter
    Required
    Description
    Example

    tickers

    No

    Array of tickers identifying the rate

    ["KK_RFR_AAPLUSD", "KK_RFR_TSLAUSD"]

    base_asset_codes

    No

    hashtag
    Response Fields

    Field
    Description

    indexCode

    The ticker of the rate.

    rateName

    Extensive name format of the rate issued

    pair

    Short name format of the rate issued

    hashtag
    Request example

    grpcurl \
      -d '{
        "tickers":            ["KK_RFR_AAPLUSD", "KK_RFR_700HKD"],
        "base_asset_codes":   ["aapl", "700"],
        "base_asset_classes": ["equity", "etf"],
        "base_asset_isins":   ["US0378331005", "KYG875721634"],
        "quote_asset_codes":  ["usd", "hkd"],
        "timezones":          ["America/New_York", "Asia/Hong_Kong"]
      }' \
      octopus-stg.stg.k8s.kaiko.ovh:443 \
      kaiko.equities.EquitiesService.ReferenceData

    hashtag
    Response example

    {
      "entries": [
        {
          "indexCode": "KK_RFR_AAPLUSD",
          "rateName": "Kaiko Apple USD Equity Reference Rate",
          "pair": "AAPL-USD",
          "exchanges": [
            "nutp",
            "xcta",
            "boat"
          ],
          "baseAsset": {
            "assetCode": "aapl",
            "assetClass": "Equity",
            "name": "Apple",
            "isin": "US0378331005",
            "bbgCompId": "BBG000B9XRY4",
            "timezone": "America/New_York",
            "taxonomy": {
              "taxonomyVersion": "1.0",
              "kaikoTaxonomyCode": "EQ.STK.SPOT.XCHG.US",
              "assetClass": "Equity",
              "instrumentType": "Stock",
              "marketPhase": "Spot",
              "marketVenue": "Exchange",
              "geoRegion": "Americas",
              "geoCountry": "US"
            }
          },
          "quoteAsset": {
            "assetCode": "usd",
            "name": "US Dollar"
          },
          "dissemination": "Real-time",
          "timezone": "America/New_York",
          "launchDate": "2026-01-01",
          "exposition": "Public"
        },
        {
          "indexCode": "KK_RFR_700HKD",
          "rateName": "Kaiko TENCENT HKD Equity Reference Rate",
          "pair": "700-HKD",
          "exchanges": [
            "xhkg"
          ],
          "baseAsset": {
            "assetCode": "700",
            "assetClass": "Equity",
            "name": "TENCENT",
            "isin": "KYG875721634",
            "bbgCompId": "BBG000BJ35F4",
            "timezone": "Asia/Hong_Kong",
            "taxonomy": {
              "taxonomyVersion": "1.0",
              "kaikoTaxonomyCode": "EQ.STK.SPOT.XCHG.HK",
              "assetClass": "Equity",
              "instrumentType": "Stock",
              "marketPhase": "Spot",
              "marketVenue": "Exchange",
              "geoRegion": "Asia-Pacific",
              "geoCountry": "HK"
            }
          },
          "quoteAsset": {
            "assetCode": "hkd",
            "name": "Hong Kong Dollar"
          },
          "dissemination": "Real-time",
          "timezone": "Asia/Hong_Kong",
          "launchDate": "2026-03-25",
          "exposition": "Public"
        },
      ]
    }
    
    gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService.ReferenceData
    herearrow-up-right
    hashtag
    Endpoints
    gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/MarketCalendarV2

    hashtag
    Request fields

    Parameter
    Required
    Description
    Example

    start_date

    Yes

    Start date (yyyy-mm-dd) Cannot be earlier than 30 days before today.

    2026-03-31

    end_date

    Yes

    hashtag
    Response fields

    timezone

    IANA timezone of the exchange.

    asset_class

    Asset class of the returned data.

    data

    List of daily market calendar entries.

    .date

    Date of the entry (yyyy-mm-dd).

    hashtag
    Request examples

    cURL requests are intended for testing purposes only.

    grpcurl \
     -H "Authorization: Bearer $KAIKO_API_KEY" \
     -d @ gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/MarketCalendarV2 <<EOM
    {
      "start_date": "2026-03-23",
      "end_date": "2026-03-25",
      "asset_class": "equities",
      "exch":["XNAS","BOAT"],
      "region":"America/New_York",
      "status":["OPEN_REGULAR"],
      "is_holiday":false
    }
    EOM

    hashtag
    Response Example

    TradingHours.comarrow-up-right
    {
      "marketCalendars": [
        {
          "timezone": "America/New_York",
          "data": [
            {
              "date": "2026-04-02",
              "marketMics": [
                "BOAT",
                "XNYS"
              ],
              "status": "OPEN_REGULAR",
              "isTradingDay": true,
              "isRegularTradingDay": true,
              "sessionSchedule": [
                {
                  "exchanges": [
                    "XNYS"
                  ],
                  "phaseType": "Pre-Trading Session",
                  "description": "Pre-Trading Session",
                  "start": "2026-04-02T04:00:00-04:00",
                  "end": "2026-04-02T09:30:00-04:00",
                  "isTrading": true
                },
                {
                  "exchanges": [
                    "XNYS"
                  ],
                  "phaseType": "Primary Trading Session",
                  "description": "Core Trading Session",
                  "start": "2026-04-02T09:30:00-04:00",
                  "end": "2026-04-02T16:00:00-04:00",
                  "isTrading": true
                },
                {
                  "exchanges": [
                    "XNYS"
                  ],
                  "phaseType": "Post-Trading Session",
                  "description": "Extended Hours",
                  "start": "2026-04-02T16:00:00-04:00",
                  "end": "2026-04-02T20:00:00-04:00",
                  "isTrading": true
                }
              ]
            }
          ],
          "assetClass": "equities"
        }
      ]
    }
    
    gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/StreamIndex

    hashtag
    Request parameters

    Parameter
    Description
    Examples

    index_codes

    The list of Kaiko Reference Rate ticker. You can find a full list of our tickers .

    ["KK_RFR_AAPLUSD", "KK_RFR_TSLAUSD"]

    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same stream, provide the indexCode as a comma-separated list, e.g. ["KK_RFR_AAPLUSD", "KK_RFR_TSLAUSD"] . Note: if subscribing to an equity Reference Rate, users can also subscribe to the replay and corporate action reference data.

    hashtag
    Response fields

    Field
    Description

    indexCode

    The ticker identifying the rate.

    commodity

    The type of publication. Either real-time or fixings

    interval

    The time period in which transaction data are considered for the calculation of the rate. If a rate's calculation methodology has an interval of 15 seconds, startTime and endTime will be separated by 15s.

    hashtag
    Request examples

    cURL requests are intended for testing purposes only.

    grpcurl -H "Authorization: Bearer your_api_key" -d '{"index_codes": ["KK_RFR_AAPLUSD"], "commodities": []}' gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/StreamIndex

    hashtag
    Response Example

    {
      "index": {
        "indexCode": "KK_RFR_AAPLUSD",
        "commodity": "INDEX_COMMODITY_REAL_TIME",
        "interval": {
          "startTime": "2026-01-30T16:01:44Z",
          "endTime": "2026-01-30T16:01:59Z"
        },
        "quote": "usd",
        "bases": [
          {
            "asset": "aapl",
            "weight": 1
          }
        ],
        "exchanges": [
          "nutp",
          "boat",
          "xcta"
        ],
        "percentages": [
          {
            "percentage": 1,
            "price": 254.8586666666667,
            "pairs": [
              {
                "pair": "aapl-usd",
                "weight": 1,
                "instruments": [
                  {
                    "partition": "0",
                    "price": 254.89666666666668,
                    "volume": 12750,
                    "count": "58",
                    "underlyingTrade": {
                      "volume": 300,
                      "exchange": "nutp",
                      "id": "019c0fa3-9a36-77b9-9c7f-c0e79be94469",
                      "datetime": "2026-01-30T16:01:46.025693Z"
                    }
                  },
                  {
                    "partition": "1",
                    "price": 254.895,
                    "volume": 15200,
                    "count": "67",
                    "underlyingTrade": {
                      "volume": 100,
                      "exchange": "nutp",
                      "id": "019c0fa3-a222-78ef-a733-3cd1a4cbab76",
                      "datetime": "2026-01-30T16:01:48.054573Z"
                    }
                  },
                  {
                    "partition": "2",
                    "price": 254.81,
                    "volume": 22500,
                    "count": "101",
                    "underlyingTrade": {
                      "volume": 150,
                      "exchange": "nutp",
                      "id": "019c0fa3-b17b-7fde-9591-ea858d3ad2c0",
                      "datetime": "2026-01-30T16:01:51.980566Z"
                    }
                  },
                  {
                    "partition": "4",
                    "price": 254.85666666666665,
                    "volume": 150,
                    "count": "1",
                    "underlyingTrade": {
                      "volume": 150,
                      "exchange": "nutp",
                      "id": "019c0fa3-c4c0-7b73-b83b-88385d9e9f89",
                      "datetime": "2026-01-30T16:01:56.915Z"
                    }
                  },
                  {
                    "partition": "3",
                    "price": 254.87,
                    "volume": 3000,
                    "count": "17",
                    "underlyingTrade": {
                      "volume": 150,
                      "exchange": "nutp",
                      "id": "019c0fa3-ba8f-7ad3-890a-525d3eade5ea",
                      "datetime": "2026-01-30T16:01:54.303Z"
                    }
                  }
                ]
              }
            ]
          }
        ],
        "sessionDetector": "INDEX_SESSION_DETECTOR_REGULAR_HOURS",
        "tsEvent": "2026-01-30T16:01:59.085746807Z",
        "sequenceId": "d5udbtrpd0uc72rjbjf0",
        "lastIngestTime": "2026-01-30T16:01:58.545644421Z"
      }
    }

    If asc, sort time-series in ascending. If desc, sort time-series in descending.

    asc

    page_size

    No

    See paginationarrow-up-right

    Min: 1 Max: 100 Default: 10

    100

    sequenceID

    The publication ID to explore. A publication is defined by event occurring on a specific instrument at a given point in time. Publication IDs can be retrieved from publication streamarrow-up-right response.

    cnb0k3vvavm8ib6863qg

    underlying_data

    List of links to specific pre-filtered queries on the Rest API trades endpoint for the selected SequenceID.

    [ "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/bfnx/spot/btc-usd/trades?start_time=2024-02-21T14:29:55.000Z&end_time=2024-02-21T14:34:55.000Z&index_inserted_at=2024-02-21T14:34:50.863ZZ&sort=asc", "https://us.market-api.kaiko.io/v3/data/trades.v1/exchanges/cbse/spot/btc-usd/trades?start_time=2024-02-21T14:29:55.000Z&end_time=2024-02-21T14:34:55.000Z&index_inserted_at=2024-02-21T14:34:50.863ZZ&sort=asc"]

    Subscribe

    How to configure a Kaiko multi-asset rate stream.

    hashtag
    What is this endpoint for?

    Monitor the overall performance of specific buckets of assets. The indices combine several data sources to summarize market performance. They can be used to aid the issuance of derivatives contracts or investment vehicles by providing pricing for settlement. You can see our full list of indices herearrow-up-right and learn more about their performance in our factsheetarrow-up-right.

    hashtag
    Endpoints

    hashtag
    Request parameters

    Parameter
    Description
    Examples
    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same stream, provide the indexCode as a comma-separated list eg KT5,KT10NYC Alternatively, use a wildcard by entering a * and you'll receive all tickers you have as part of your Kaiko subscription.

    hashtag
    Response fields

    Field
    Description

    hashtag
    Request examples

    This example demonstrates how to request historical data using replay. The maximum amount of data you can request for one replay cannot exceed a total of 24 hours in hours, seconds, and minutes. Replay data is available on a 72-hour rolling basis and should only be used to retrieve missed data. If full history is required, please use Rest API or CSV deployment methods.

    cURL requests are intended for testing purposes only.

    For more advanced users, you can access our full SDK

    hashtag
    Response Example

    Staking Indices

    hashtag
    What is this endpoint for?

    This endpoint is used for staking indices, which are custom products whose value is derived from a combination of price data and yield data. The underlying quantity increases daily according to the APR of the asset, and the index value is obtained by multiplying the quantity by the asset price.

    hashtag
    Endpoints

    hashtag
    Parameters

    Parameter
    Description
    Examples

    hashtag
    Fields

    Field
    Description

    hashtag
    Request examples

    Make sure to read our before starting.

    cURL requests are intended for testing purposes only.

    hashtag
    Response Example

    Array of base asset codes

    ["aapl", "tsla"]

    base_asset_classes

    No

    Array of base asset classes

    ["Equity", "ETF"]

    base_asset_isins

    No

    Array of base asset isin codes

    ["US0378331005"]

    quote_asset_codes

    No

    Array of quote asset codes

    ["usd", "hkd"]

    timezones

    No

    Array of IANA timezones

    ["America/New_York", "Asia/Seoul"]

    exchanges

    Category to which the rate belongs . i.e . Reference Rate or Benchmark Reference Rate

    baseAsset

    .assetCode

    The asset code of base asset

    .name

    Full name of the base asset

    .isin

    The ISIN code of the base asset

    .bbgCompId

    The issuer ID on Bloomberg

    .timezone

    IANA timezone of the main trading venue

    .taxonomy

    .taxonomyVersion

    Kaiko Taxonomy version

    .kaikoTaxonomyCode

    Kaiko Taxonomy code

    .assetClass

    The asset class of base asset

    .instrumentType

    The instrument type of base asset

    .marketPhase

    The Market Phase of base asset

    .marketVenue

    The Market Venue of base asset

    .geoRegion

    The main trading region of base asset

    .geoCountry

    The main trading country of base asset

    quoteAsset

    .assetCode

    The asset code of quote asset

    .name

    Full name of the quote asset

    dissemination

    Frequency of publication of the rate

    timezone

    IANA timezone of the dissemination

    launch_date

    Date when the rate was launched and entered into production.

    exposition

    "Public" : Indicates that it is open reference data accessible to all users.

    End date (yyyy-mm-dd) Cannot be later than 30 days before today.

    2026-04-01

    asset_class

    Yes

    Asset class of the market to filter and aggregate results by.

    equities, futures

    region

    No

    IANA timezone string to filter and aggregate results by the timezone.

    America/New_York, Asia/Hong_Kong, Asia/Seoul

    exch

    No

    List of exchange MIC codes

    ["XNYS", "BOAT"]

    Supported exchanges: "XNYS", "XNAS", "BOAT" , "XKRX", "XHKG"

    status

    No

    List of trading statuses

    ["OPEN_REGULAR", "OPEN_IRREGULAR"]

    is_holiday

    No

    When set to true, returns only dates designated as holidays. When set to false, returns only non-holiday dates.

    true

    .marketMics

    List of exchange MIC codes included in the returned data.

    .status

    Trading status for the date.

    • OPEN_REGULAR : If it is regular trading day

    • OPEN_IRREGULAR : If there is any time changes

    • CLOSED : If it is closed

    .isHoliday

    true if the date is a weekend or public holiday.

    .isTradingDay

    true if the status is OPEN_REGULAR or OPEN_IRREGULAR.

    .isRegularTradingDay

    true if the session schedule includes a Primary Trading Session.

    .reason

    Description of the holiday or irregular closure. Empty on regular trading days.

    .previousRegularTradingDay

    Most recent regular trading day within the query range.

    .nextRegularTradingDay

    Next regular trading day within the query range.

    .sessionSchedule

    List of trading sessions for the date. Empty if the market is closed.

    .exchanges

    MIC code of the exchange for this session.

    .phase_type

    Type of trading session (e.g. Primary Trading Session, Overnight Trading Session).

    .description

    Detailed description of the session phase.

    .start

    Session start time in local time

    .end

    Session end time in local time

    .is_trading

    true if trading activity occurs during this session.

    quote

    The quote asset used for the rate denomination.

    bases

    The list of base assets included in the rate and their weight. For reference rates, this will always be a single asset.

    exchanges

    The exchanges involved in the computation. This list may change every quarter during the rebalancing period and depending on the new results of the Kaiko Exchange Ranking.

    percentages

    The different distribution levels included in the price computation.

    price

    The value of the rate in the quote denomination.

    pairs

    The list of pairs combined with additional details included in the computation.

    sessionDetector

    The status of market session for US (in Eastern Time):

    • INDEX_SESSION_DETECTOR_EARLY_HOURS : 4:00AM - 9:30AM

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:30AM - 4:00PM

    • INDEX_SESSION_DETECTOR_LATE_HOURS : 4:00PM - 8:00PM

    • INDEX_SESSION_DETECTOR_OVERNIGHT : 8:00PM - 4:00AM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : For weekend and holidays, last trading day 8:00PM - the day prior to the next trading day 8:00PM

    The status of market session for Hong Kong (in Hong Kong Time):

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:30AM - 12:00PM, 1PM - 4PM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : 12:00PM - 1:00 PM, 4PM - 9:30AM next day

    The status of market session for Korea (in Korea Standard Time):

    • INDEX_SESSION_DETECTOR_REGULAR_HOURS : 9:00AM - 15:20PM

    • INDEX_SESSION_DETECTOR_CLOSED_HOURS : 15:20PM - 9:00AM next day

    tsEvent

    The exact time of price publication.

    herearrow-up-right

    The start time of the interval.

    • endTime

    The end time of the interval.

    composition

    A nested object containing the inputs used to calculate the index price.

    • quantity

    A nested object containing the quantity inputs.

    • value

    The quantity used in the index calculation.

    • baseQuantity

    The base quantity used to derive quantity.value.

    • utilizationRate

    The utilization rate used in the quantity calculation.

    • underlyingPrice

    A nested object containing the underlying price input.

    • name

    The name of the price series used as the underlying price.

    • price

    The underlying asset price used in the calculation.

    • tsEvent

    The publication timestamp of the underlying price.

    • apr

    A nested object containing the APR input.

    • name

    The name of the APR series used in the calculation.

    • value

    The APR value used in the calculation.

    • forwardFilled

    Indicates whether the APR value was forward-filled.

    • tsEvent

    The publication timestamp of the APR value.

    price

    The calculated staking index price.

    tsEvent

    The exact time of the publication.

    index_code

    The ticker of the staking rate

    KAIKO_STK_ETHUSD_LDNLF

    indexCode

    The ticker identifying the staking index.

    commodity

    The publication type.

    interval

    A nested object containing the requested time interval.

    gateway-v0-grpc.kaiko.ovh
    gateway-v0-http.kaiko.ovh
    https://gateway-v0-http.kaiko.ovh/api/stream/staking_rates_v1
    Python quick-start guide
    • startTime

     # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    
    import logging
    import os
    
    import grpc
    
    from google.protobuf.json_format import MessageToJson
    
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.staking_rates_v1 import request_pb2 as pb_staking_rates
    
    
    def staking_rates_v1_request(channel: grpc.Channel):
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamStakingRatesServiceV1Stub(channel)
    
                responses = stub.Subscribe(pb_staking_rates.StreamStakingRatesServiceRequestV1(
                    index_code="KK_STK_ETHUSD_LDNLF"
                ))
    
                for response in responses:
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields=True)))
    
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
    
        staking_rates_v1_request(channel)
    
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    
    from datetime import datetime, timedelta
    import logging
    import os
    
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    
    from google.protobuf.json_format import MessageToJson
    
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.staking_rates_v1 import request_pb2 as pb_staking_rates
    
    
    def staking_rates_v1_request(channel: grpc.Channel):
        try:
            # start of date configuration #
            start = Timestamp()
            start.FromDatetime(datetime.utcnow() - timedelta(days=3))
            end = Timestamp()
            end.FromDatetime(datetime.utcnow())
            # end of date configuration #
    
            stub = sdk_pb2_grpc.StreamStakingRatesServiceV1Stub(channel)
    
            responses = stub.Subscribe(pb_staking_rates.StreamStakingRatesServiceRequestV1(
                index_code="KK_STK_ETHUSD_LDNLF",
                interval={
                    'start_time': start,
                    'end_time': end
                }
            ))
    
            for response in responses:
                print("Received message %s" % (MessageToJson(response, including_default_value_fields=True)))
    
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
    
        staking_rates_v1_request(channel)
    
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/staking_rates_v1" -H  "accept: application/json" -H  "X-Api-Key: $MARKET_DATA_API_KEY" -H  "Content-Type: application/json" -d '{  "indexCode": "KK_STK_ETHUSD_LDNLF", "interval": { "startTime": "2026-04-21T11:00:00Z", "endTime": "2026-04-24T22:00:00Z" } }'
    {
    	"result": {
    		"indexCode": "KK_STK_ETHUSD_LDNLF",
    		"commodity": "SIC_DAILY_FIXING",
    		"interval": {
    			"startTime": "2026-04-22T14:00:00Z",
    			"endTime": "2026-04-22T15:00:00Z"
    		},
    		"composition": {
    			"quantity": {
    				"value": 0.035460005259701076,
    				"baseQuantity": 0.03544209350535485,
    				"utilizationRate": 0.42
    			},
    			"underlyingPrice": {
    				"name": "KK_RFR_ETHUSD_LDNLF",
    				"price": 2405.6083636363633,
    				"tsEvent": "2026-04-22T15:00:02.190418795Z"
    			},
    			"apr": {
    				"name": "eth-apr-2-d",
    				"value": 0.0276,
    				"forwardFilled": true,
    				"tsEvent": "2026-04-21T00:00:00Z"
    			}
    		},
    		"price": 85.30288522732634,
    		"tsEvent": "2026-04-22T15:00:05.029978898Z"
    	}
    }

    is the quote asset used for the index denomination.

    compositions

    The list of underlying data used to calculate the index price.

    • underlyingInstrument

    The ticker for the Kaiko Reference Rate(s) used to calculate the multi-asset index.

    • base

    The base asset for the used Reference Rate.

    • quote

    The quote asset for the used Reference Rate

    • Exchanges

    The exchanges used to calculate the Reference Rate.

    • insturmentInterval

    The startTime and endTime of the calculation period for the specific Reference Rate.

    • tsEvent

    The time the rate was published by Kaiko.

    price

    Information on the pricing for the index.

    • indexValue

    The value for the index publication.

    pairs

    The pricing details of the underlying Kaiko Reference Rates used in the calculation.

    • underlyingPrice

    The published price of the Reference Rate.

    • weightingFactor

    The weighting of the Reference Rate to the index.

    • cappingFactor

    The capping of the Reference Rate to the index.

    • currencyConversionFactor

    The conversion factor used in the Reference Rate for the index.

    tsEvent

    The theoretical time of price publication

    tsCompute

    The exact time of price computation.

    , where you'll find more coding languages, examples and guidance.

    index_code

    The Indices ticker. You can find a full list of our tickers herearrow-up-right.

    KT5

    indexCode

    The ticker identifying the index.

    commodity

    The type of publication. Either real-time or fixings

    interval

    The time period in which transaction data are considered for the calculation of the index. If an index's calculation methodology has an interval of 15 seconds, startTime and endTime will be separated by 15s.

    curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/index_multi_assets_v1" -H "accept: application/json" -H "X-Api-Key: $KAIKO_API_KEY" -H "Content-Type: application/json" -d "{\"indexCode\": \"KT5\"}"
    {
      "commodity": "SIC_REAL_TIME",
      "indexCode": "KT5",
      "interval": {
        "startTime": "2024-08-12T14:23:55Z",
        "endTime": "2024-08-12T14:29:00Z"
      },
      "mainQuote": "usd",
      "compositions": [
        {
          "underlyingInstrument": "KK_RFR_AVAXUSD",
          "base": "avax",
          "quote": "usd",
          "exchanges": [
            "bfnx",
            "cbse",
            "krkn",
            "stmp"
          ],
          "instrumentInterval": {
            "startTime": "2024-08-12T14:23:55Z",
            "endTime": "2024-08-12T14:28:55Z"
          },
          "currencyConversion": "none",
          "tsEvent": "2024-08-12T14:28:56.074863348Z"
        },
        {
          "underlyingInstrument": "KK_RFR_BTCUSD",
          "base": "btc",
          "quote": "usd",
          "exchanges": [
            "bfnx",
            "cbse",
            "krkn",
            "lmax",
            "stmp"
          ],
          "instrumentInterval": {
            "startTime": "2024-08-12T14:24:00Z",
            "endTime": "2024-08-12T14:29:00Z"
          },
          "currencyConversion": "none",
          "tsEvent": "2024-08-12T14:29:01.087284434Z"
        },
        {
          "underlyingInstrument": "KK_RFR_ETHUSD",
          "base": "eth",
          "quote": "usd",
          "exchanges": [
            "bfnx",
            "cbse",
            "krkn",
            "lmax",
            "stmp"
          ],
          "instrumentInterval": {
            "startTime": "2024-08-12T14:23:55Z",
            "endTime": "2024-08-12T14:28:55Z"
          },
          "currencyConversion": "none",
          "tsEvent": "2024-08-12T14:28:56.142347541Z"
        },
        {
          "underlyingInstrument": "KK_RFR_SOLUSD",
          "base": "sol",
          "quote": "usd",
          "exchanges": [
            "bfnx",
            "cbse",
            "gmni",
            "krkn",
            "stmp"
          ],
          "instrumentInterval": {
            "startTime": "2024-08-12T14:24:00Z",
            "endTime": "2024-08-12T14:29:00Z"
          },
          "currencyConversion": "none",
          "tsEvent": "2024-08-12T14:29:00.784958075Z"
        },
        {
          "underlyingInstrument": "KK_RFR_XRPUSD",
          "base": "xrp",
          "quote": "usd",
          "exchanges": [
            "cbse",
            "indr",
            "krkn",
            "lmax",
            "stmp"
          ],
          "instrumentInterval": {
            "startTime": "2024-08-12T14:23:55Z",
            "endTime": "2024-08-12T14:28:55Z"
          },
          "currencyConversion": "none",
          "tsEvent": "2024-08-12T14:28:55.988918370Z"
        }
      ],
      "price": {
        "indexValue": 334.99947165068875,
        "divisor": 26979870988.68237,
        "pairs": [
          {
            "underlyingInstrument": "KK_RFR_AVAXUSD",
            "underlyingPrice": 21.333163636363636,
            "weightingFactor": 17278580619.32558,
            "cappingFactor": 1.0,
            "currencyConversionFactor": 1.0
          },
          {
            "underlyingInstrument": "KK_RFR_BTCUSD",
            "underlyingPrice": 59699.73163636363,
            "weightingFactor": 390312772.9127332,
            "cappingFactor": 0.119856816159272,
            "currencyConversionFactor": 1.0
          },
          {
            "underlyingInstrument": "KK_RFR_ETHUSD",
            "underlyingPrice": 2680.1494545454543,
            "weightingFactor": 2288124768.3108406,
            "cappingFactor": 0.373375636405882,
            "currencyConversionFactor": 1.0
          },
          {
            "underlyingInstrument": "KK_RFR_SOLUSD",
            "underlyingPrice": 147.37236363636362,
            "weightingFactor": 17542805404.323048,
            "cappingFactor": 1.0,
            "currencyConversionFactor": 1.0
          },
          {
            "underlyingInstrument": "KK_RFR_XRPUSD",
            "underlyingPrice": 0.5706330909090909,
            "weightingFactor": 1755466226611.777,
            "cappingFactor": 1.0,
            "currencyConversionFactor": 1.0
          }
        ]
      },
      "tsEvent": "2024-08-12T14:29:00Z",
      "tsCompute": "2024-08-12T14:29:05.210675561Z"
    }
    gateway-v0-grpc.kaiko.ovh
    gateway-v0-http.kaiko.ovh
    https://gateway-v0-http.kaiko.ovh/api/stream/index_multi_assets_v1
    herearrow-up-right

    mainQuote

    quote

    The quote asset used for the rate denomination.

    bases

    The list of base assets included in the rate and their weight. For reference rates, this will always be a single asset.

    exchanges

    The exchanges involved in the computation. This list may change every quarter during the rebalancing period and depending on the new results of the Kaiko Exchange Ranking.

    percentages

    The different distribution levels included in the price computation.

    price

    The value of the rate in the quote denomination.

    pairs

    The list of pairs combined with additional details included in the computation.

    tsEvent

    The exact time of price publication.

    sequenceId

    A unique identifier for the publication.

    lastIngestTime

    The timestamp of the last trade ingested and used in the rate computation.

    lastAnomalyIngestTime

    The timestamp of the last anomaly detected during ingestion.

    fallbackInfo

    An object containing fallback information

    herearrow-up-right

    Valour - CDF Index

    hashtag
    What is this endpoint for?

    This endpoint is a customized index made specifically for Valour, a Kaiko Indices client. It's designed to serve as an underlying price feed for leveraged financial instruments. The price is calculated by measuring the performance of live futures contracts with a constant time to expiry to effectively reflect a price, mitigating the volatility caused by rollovers.

    circle-info

    You can find out more about our Customized Indices .

    hashtag
    Endpoints

    hashtag
    Parameters

    Parameter
    Description
    Examples
    circle-info

    Requesting multiple tickers at the same time To configure multiple tickers in the same stream, provide the indexCode as a comma separated list eg KAIKO_CDF_BTCUSDT,KAIKO_CDF_ETHUSDT Alternatively, use a wildcard by entering a * and you'll receive all tickers you have as part of you Kaiko subscription.

    hashtag
    Fields

    Field
    Description

    hashtag
    Request examples

    Make sure to read our before starting.

    cURL requests are intended for testing purposes only.

    For more advanced users, you can access our full SDK , where you'll find more coding languages, examples and guidance.

    hashtag
    Response Example

    Quote asset of futures

    computedCdf

    Price of CDF index

    exchange

    The exchange code for underlying futures trade. Please find for a full name of exchange.

    frontFuture

    A nested object containing:

    • symbol

    Instrument code of front future. Please find for detailed information.

    • price

    1-min VWAP of front future (Relevant doc of VWAP can be found .) If it's not available, last traded price

    • expiry

    The timestamp of expiration of front future

    • timestamp

    The timestamp of the price of front future. If price is 1-min VWAP, endTime of the calculation if price is from the last trade, the timestamp of the trade

    • weight

    Applied weight to the price of front future

    backFuture

    A nested object containing:

    • symbol

    Instrument code of back future. Please find for detailed information.

    • price

    1-min VWAP of back future (Relevant doc of VWAP can be found .) If it's not available, last traded price

    • expiry

    The timestamp of expiration of back future

    • timestamp

    The timestamp of the price of back future. If price is 1-min VWAP, endTime of the calculation if price is from the last trade, the timestamp of the trade

    • weight

    Applied weight to the price of back future

    constantDuration

    Constant Duration

    status

    Status of the publication CDF_SUCCESS : Calculation succeeded

    CDF_NO_FUTURE : Cannot find the relevant front or back future

    CDF_NO_PRICE : Futures are available but prices are not available

    rateQuoteConversion

    A nested object containing:

    • index

    Kaiko Reference Rate that is used to convert the currency. Detailed methodology of Kaiko Reference rate can be found

    • value

    Price of rateQuoteConversion / index

    • timestamp

    Timestamp of rateQuoteConversion / index

    interval_startTime

    The start time for the interval.

    interval_endTime

    The end time for the interval.

    tsEvent

    The exact time of the publication.

    index_code

    The Kaiko CDF Index tickers

    KAIKO_CDF_BTCUSDT

    See the methodology for a full list of tickers.

    commodity

    The type of publication. Either real-time or fixings

    indexCode

    The ticker identifying the rate.

    base

    Base asset of futures

     # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.constant_duration_indices_v1 import request_pb2 as pb_constant_duration_indices
    
    def constant_duration_indices_v1_request(channel: grpc.Channel):
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamConstantDurationIndicesServiceV1Stub(channel)
    
                responses = stub.Subscribe(pb_constant_duration_indices.StreamConstantDurationIndicesServiceRequestV1(
                    index_code = "KAIKO_CDF_BTCUSDT"
                ))
                for response in responses:
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        constant_duration_indices_v1_request(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.constant_duration_indices_v1 import request_pb2 as pb_constant_duration_indices
    
    def constant_duration_indices_v1_request(channel: grpc.Channel):
        try:
            # start of date configuration #
            start = Timestamp()
            start.FromDatetime(datetime.utcnow() - timedelta(days=2))
            end = Timestamp()
            end.FromDatetime(datetime.utcnow() - timedelta(days=1))
            # end of date configuration #
            
            stub = sdk_pb2_grpc.StreamConstantDurationIndicesServiceV1Stub(channel)
    
            responses = stub.Subscribe(pb_constant_duration_indices.StreamConstantDurationIndicesServiceRequestV1(
                index_code = "KAIKO_CDF_BTCUSDT",
                interval={
                    'start_time': start,
                    'end_time': end
                }
            ))
            for response in responses:
                print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        constant_duration_indices_v1_request(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/constant_duration_indices_v1" -H "accept: application/json" -H "X-Api-Key: $KAIKO_API_KEY" -H "Content-Type: application/json" -d '{ "indexCode": "KAIKO_CDF_BTCUSDT", "interval": {"startTime": "2025-04-24T15:30:00.000Z", "endTime": "2025-04-24T15:31:00.000Z" } }'
    {
       "result":{
          "commodity":"SIC_REAL_TIME",
          "indexCode":"KAIKO_CDF_BTCUSDT",
          "composition":{
             "base":"btc",
             "quote":"usdt",
             "data":[
                {
                   "computedCdf":95024.52103689784,
                   "exchange":"binc",
                   "frontFuture":{
                      "symbol":"btcusdt_250627",
                      "price":94481.42295081966,
                      "expiry":"2025-06-27T08:00:00Z",
                      "timestamp":"2025-04-25T09:31:00Z",
                      "weight":0.6813186813186813
                   },
                   "backFuture":{
                      "symbol":"btcusdt_250926",
                      "price":96096.2,
                      "expiry":"2025-09-26T08:00:00Z",
                      "timestamp":"2025-04-25T09:29:41.131Z",
                      "weight":0.31868131868131866
                   },
                   "constantDuration":91,
                   "status":"CDF_SUCCESS",
                   "rateQuoteConversion":{
                      "index":"KK_RFR_USDTUSD",
                      "value":1.0003,
                      "timestamp":"2025-04-25T09:31:00Z"
                   }
                }
             ]
          },
          "startTime":"2025-04-25T09:30:00Z",
          "endTime":"2025-04-25T09:31:00Z",
          "tsEvent":"2025-04-25T09:31:05.247126935Z"
       }
    }
    gateway-v0-grpc.kaiko.ovh
    gateway-v0-http.kaiko.ovh
    https://gateway-v0-http.kaiko.ovh/api/stream/constant_duration_indices_v1
    herearrow-up-right
    Python quick-start guide
    herearrow-up-right

    quote

    instrument explorerarrow-up-right
    instrument explorerarrow-up-right
    herearrow-up-right
    instrument explorerarrow-up-right
    herearrow-up-right
    herearrow-up-right
    here
    Kaiko Streamarrow-up-right
    Tick-Level Trades
    herearrow-up-right
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.index_forex_rate_v1 import request_pb2 as pb_index_forex_rate
    
    def index_forex_rate(channel: grpc.Channel):
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamIndexForexRateServiceV1Stub(channel)
                responses = stub.Subscribe(pb_index_forex_rate.StreamIndexForexRateServiceRequestV1(
                    index_code = "KK_BRR_BTCUSD_EUR"
                ))
                for response in responses:
                    # for debug purpose only, don't use MessageToJson in the reading loop in production
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        index_forex_rate(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta, timezone
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.index_v1 import request_pb2 as pb_index
    
    def index_rate_request(channel: grpc.Channel):
        try:
            # start of date configuration #
            start = Timestamp()
            start.FromDatetime(datetime.now(timezone.utc) - timedelta(days=2))
            end = Timestamp()
            end.FromDatetime(datetime.now(timezone.utc) - timedelta(days=1))
            # end of date configuration #
            
            stub = sdk_pb2_grpc.StreamIndexServiceV1Stub(channel)
            responses = stub.Subscribe(pb_index.StreamIndexServiceRequestV1(
                index_code = "KK_BRR_BTCUSD",
                interval={
                    'start_time': start,
                    'end_time': end
                }
            ))
            for response in responses:
                # for debug purpose only, don't use MessageToJson in the reading loop in production
                print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        index_rate_request(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.index_multi_assets_v1 import request_pb2 as pb_index_multi_assets
    
    def index_multi_asset(channel: grpc.Channel):
        try:
            # start of date configuration #
            start = Timestamp()
            start.FromDatetime(datetime.utcnow() - timedelta(days=2))
            end = Timestamp()
            end.FromDatetime(datetime.utcnow() - timedelta(days=1))
            # end of date configuration #
            
            stub = sdk_pb2_grpc.StreamIndexMultiAssetsServiceV1Stub(channel)
            responses = stub.Subscribe(pb_index_multi_assets.StreamIndexMultiAssetsServiceRequestV1(
                index_code = "KT15",
                interval={
                    'start_time': start,
                    'end_time': end
                }
            ))
            for response in responses:
                # for debug purpose only, don't use MessageToJson in the reading loop in production
                print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        index_multi_asset(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta, timezone
    import logging
    import os
    import asyncio
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.index_v1 import request_pb2 as pb_index, commodity_pb2 as pb_index_commodity   
    
    async def index_rate_request(channel: grpc.Channel):
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamIndexServiceV1Stub(channel)
                responses = stub.Subscribe(pb_index.StreamIndexServiceRequestV1(
                    index_code = "KK_BRR_BTCUSD"
                ))
                for response in responses:
                    # for debug purpose only, don't use MessageToJson in the reading loop in production
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    async def index_rate_fixing_request(channel: grpc.Channel):
        # start of date configuration #
        start = Timestamp()
        start.FromDatetime(datetime.now(timezone.utc) - timedelta(days=2))
        end = Timestamp()
        end.FromDatetime(datetime.now(timezone.utc))
    
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamIndexServiceV1Stub(channel)
                responses = stub.Subscribe(pb_index.StreamIndexServiceRequestV1(
                    index_code = "KK_RFR_CHILLGUYUSD_SGP",
                    commodities = [pb_index_commodity.SIC_DAILY_FIXING],
                    interval={
                        'start_time': start,
                        'end_time': end
                    }
                ))
                for response in responses:
                    # for debug purpose only, don't use MessageToJson in the reading loop in production
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    async def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        await asyncio.gather(
            index_rate_request(channel),
            index_rate_fixing_request(channel)
        )
    
    if __name__ == '__main__':
        logging.basicConfig()
        asyncio.run(run())
    
    # This is a code example. Configure your parameters below #
    
    from __future__ import print_function
    from datetime import datetime, timedelta
    import logging
    import os
    from google.protobuf.timestamp_pb2 import Timestamp
    import grpc
    from google.protobuf.json_format import MessageToJson
    from kaikosdk import sdk_pb2_grpc
    from kaikosdk.stream.index_multi_assets_v1 import request_pb2 as pb_index_multi_assets
    
    def index_multi_asset(channel: grpc.Channel):
        try:
            with channel:
                stub = sdk_pb2_grpc.StreamIndexMultiAssetsServiceV1Stub(channel)
                responses = stub.Subscribe(pb_index_multi_assets.StreamIndexMultiAssetsServiceRequestV1(
                    index_code = "KT15"
                ))
                for response in responses:
                    # for debug purpose only, don't use MessageToJson in the reading loop in production
                    print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
        except grpc.RpcError as e:
            print(e.details(), e.code())
    
    def run():
        credentials = grpc.ssl_channel_credentials(root_certificates=None)
        call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
        composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
        channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
        index_multi_asset(channel)
    
    if __name__ == '__main__':
        logging.basicConfig()
        run()