Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
curl --compressed -H 'Accept: application/json' 'https://<api_hostname>/<endpoint>'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"{
"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"
}https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_compogateway-v0-grpc.kaiko.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/index_forex_rate_v1curl -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\"}"{
"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_sizecontinuation_tokenlatest will preserve the current version across subsequent pagination requests.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)https://us.market-api.kaiko.io/v2/data/index.v1/digital_asset_rates_price/{index_code}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"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'}gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/ReplayIndexgrpcurl \
-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{
"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"
}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)}")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
}
}
}gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService.CorporateActionsgrpcurl \
-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"
}
},
...
]
}gateway-v0-grpc.kaiko.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/index_v1curl -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\"}"{
"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
}
}
}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{
"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.ReferenceDatagateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/MarketCalendarV2grpcurl \
-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{
"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/StreamIndexgrpcurl -H "Authorization: Bearer your_api_key" -d '{"index_codes": ["KK_RFR_AAPLUSD"], "commodities": []}' gateway.equ.kaiko.io:443 kaiko.equities.EquitiesService/StreamIndex{
"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"
}
}gateway-v0-grpc.kaiko.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/staking_rates_v1 # 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"
}
}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.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/index_multi_assets_v1 # 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.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/constant_duration_indices_v1# 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()