okx-dex-market

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OKX DEX Market Data API

OKX DEX 市场数据API

7 endpoints for on-chain prices, trades, candlesticks, and index prices.
Base URL:
https://web3.okx.com
Base path:
/api/v6/dex/market
and
/api/v6/dex/index
Auth: HMAC-SHA256 signature, 4 headers required (
OK-ACCESS-KEY
,
OK-ACCESS-SIGN
,
OK-ACCESS-PASSPHRASE
,
OK-ACCESS-TIMESTAMP
)
提供7个端点,用于获取链上价格、交易记录、K线数据和指数价格。
Base URL:
https://web3.okx.com
Base path:
/api/v6/dex/market
/api/v6/dex/index
身份验证: 采用HMAC-SHA256签名,需要4个请求头(
OK-ACCESS-KEY
OK-ACCESS-SIGN
OK-ACCESS-PASSPHRASE
OK-ACCESS-TIMESTAMP

Authentication & Credentials

身份验证与凭证

API Key Application: OKX Developer Portal
Read credentials from environment variables:
  • OKX_API_KEY
    → API key
  • OKX_SECRET_KEY
    → Secret key (system-generated)
  • OKX_PASSPHRASE
    → Passphrase (developer-supplied)
Never output the above credentials to logs, response content, or any user-visible interface.
typescript
import crypto from 'crypto';

const BASE = 'https://web3.okx.com';

// Signature rule:
//   GET  → body = "", requestPath includes query string (e.g., "/api/v6/dex/market/candles?chainIndex=1&tokenContractAddress=0x...")
//   POST → body = JSON string of request body, requestPath is path only (e.g., "/api/v6/dex/market/price")
async function okxFetch(method: 'GET' | 'POST', path: string, body?: object) {
  const timestamp = new Date().toISOString();
  const bodyStr = body ? JSON.stringify(body) : '';
  const sign = crypto
    .createHmac('sha256', process.env.OKX_SECRET_KEY!)
    .update(timestamp + method + path + bodyStr)
    .digest('base64');
  const headers: Record<string, string> = {
    'OK-ACCESS-KEY': process.env.OKX_API_KEY!,
    'OK-ACCESS-SIGN': sign,
    'OK-ACCESS-PASSPHRASE': process.env.OKX_PASSPHRASE!,
    'OK-ACCESS-TIMESTAMP': timestamp,
    'Content-Type': 'application/json',
  };
  const res = await fetch(`${BASE}${path}`, {
    method,
    headers,
    ...(body && { body: bodyStr }),
  });
  if (res.status === 429) throw { code: 'RATE_LIMITED', msg: 'Rate limited — retry with backoff', retryable: true };
  if (res.status >= 500) throw { code: `HTTP_${res.status}`, msg: 'Server error', retryable: true };
  const json = await res.json();
  if (json.code !== '0') throw { code: json.code, msg: json.msg || 'API error', retryable: false };
  return json.data;
}
Response envelope:
{ "code": "0", "data": [...], "msg": "" }
.
code
=
"0"
means success.
API密钥申请: OKX开发者门户
设置指南: 开发者门户文档
从环境变量中读取凭证:
  • OKX_API_KEY
    → API密钥
  • OKX_SECRET_KEY
    → 密钥(系统生成)
  • OKX_PASSPHRASE
    → 密码短语(开发者自定义)
绝对不要将上述凭证输出到日志、响应内容或任何用户可见的界面中。
typescript
import crypto from 'crypto';

const BASE = 'https://web3.okx.com';

// 签名规则:
//   GET  → body = "", requestPath包含查询字符串(例如:"/api/v6/dex/market/candles?chainIndex=1&tokenContractAddress=0x...")
//   POST → body = 请求体的JSON字符串,requestPath仅为路径(例如:"/api/v6/dex/market/price")
async function okxFetch(method: 'GET' | 'POST', path: string, body?: object) {
  const timestamp = new Date().toISOString();
  const bodyStr = body ? JSON.stringify(body) : '';
  const sign = crypto
    .createHmac('sha256', process.env.OKX_SECRET_KEY!)
    .update(timestamp + method + path + bodyStr)
    .digest('base64');
  const headers: Record<string, string> = {
    'OK-ACCESS-KEY': process.env.OKX_API_KEY!,
    'OK-ACCESS-SIGN': sign,
    'OK-ACCESS-PASSPHRASE': process.env.OKX_PASSPHRASE!,
    'OK-ACCESS-TIMESTAMP': timestamp,
    'Content-Type': 'application/json',
  };
  const res = await fetch(`${BASE}${path}`, {
    method,
    headers,
    ...(body && { body: bodyStr }),
  });
  if (res.status === 429) throw { code: 'RATE_LIMITED', msg: '请求超限 — 请稍后重试', retryable: true };
  if (res.status >= 500) throw { code: `HTTP_${res.status}`, msg: '服务器错误', retryable: true };
  const json = await res.json();
  if (json.code !== '0') throw { code: json.code, msg: json.msg || 'API错误', retryable: false };
  return json.data;
}
响应结构:
{ "code": "0", "data": [...], "msg": "" }
code
=
"0"
表示请求成功。

Developer Quickstart

开发者快速入门

typescript
// Get real-time price (POST — body is JSON array)
const prices = await okxFetch('POST', '/api/v6/dex/market/price', [
  { chainIndex: '1', tokenContractAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' },
]);
// → prices[].price (USD string)

// Get hourly candles (GET)
const candles = await okxFetch('GET', '/api/v6/dex/market/candles?' + new URLSearchParams({
  chainIndex: '1', tokenContractAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
  bar: '1H', limit: '24',
}));
// → candles[]: [ts, open, high, low, close, vol, volUsd, confirm]

// Solana SOL — candles and trades endpoints require the wSOL SPL token address,
// while /market/price accepts both wSOL and the system program address.
const solCandles = await okxFetch('GET', '/api/v6/dex/market/candles?' + new URLSearchParams({
  chainIndex: '501', tokenContractAddress: 'So11111111111111111111111111111111111111112',
  bar: '1H', limit: '24',
}));
typescript
// 获取实时价格(POST — 请求体为JSON数组)
const prices = await okxFetch('POST', '/api/v6/dex/market/price', [
  { chainIndex: '1', tokenContractAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' },
]);
// → prices[].price(USD字符串)

// 获取小时级K线数据(GET)
const candles = await okxFetch('GET', '/api/v6/dex/market/candles?' + new URLSearchParams({
  chainIndex: '1', tokenContractAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
  bar: '1H', limit: '24',
}));
// → candles[]: [ts, open, high, low, close, vol, volUsd, confirm]

// Solana SOL — K线和交易记录端点需要wSOL SPL代币地址,
// 而/market/price同时支持wSOL和系统程序地址。
const solCandles = await okxFetch('GET', '/api/v6/dex/market/candles?' + new URLSearchParams({
  chainIndex: '501', tokenContractAddress: 'So11111111111111111111111111111111111111112',
  bar: '1H', limit: '24',
}));

Common Chain IDs

常用链ID

ChainchainIndexChainchainIndex
Ethereum
1
Arbitrum
42161
BSC
56
Base
8453
Polygon
137
Solana
501
区块链chainIndex区块链chainIndex
Ethereum
1
Arbitrum
42161
BSC
56
Base
8453
Polygon
137
Solana
501

Endpoint Index

端点索引

Market Price API

市场价格API

#MethodPathDocs
1GET
/api/v6/dex/market/supported/chain
market-price-chains
2POST
/api/v6/dex/market/price
market-price
3GET
/api/v6/dex/market/trades
market-trades
4GET
/api/v6/dex/market/candles
market-candlesticks
5GET
/api/v6/dex/market/historical-candles
market-candlesticks-history
序号请求方法路径文档
1GET
/api/v6/dex/market/supported/chain
market-price-chains
2POST
/api/v6/dex/market/price
market-price
3GET
/api/v6/dex/market/trades
market-trades
4GET
/api/v6/dex/market/candles
market-candlesticks
5GET
/api/v6/dex/market/historical-candles
market-candlesticks-history

Index Price API

指数价格API

#MethodPathDocs
6POST
/api/v6/dex/index/current-price
current-price
7GET
/api/v6/dex/index/historical-price
historical-price
序号请求方法路径文档
6POST
/api/v6/dex/index/current-price
current-price
7GET
/api/v6/dex/index/historical-price
historical-price

Boundary: market vs token skill

Market与Token Skill的边界

NeedUse this skill (
okx-dex-market
)
Use
okx-dex-token
instead
Real-time price (single value)
POST /market/price
-
Price + market cap + liquidity + 24h change-
POST /market/price-info
K-line / candlestick chart
GET /market/candles
-
Trade history (buy/sell log)
GET /market/trades
-
Index price (multi-source aggregate)
POST /index/current-price
-
Token search by name/symbol-
GET /market/token/search
Token metadata (decimals, logo)-
POST /market/token/basic-info
Token ranking (trending)-
GET /market/token/toplist
Holder distribution-
GET /market/token/holder
Rule of thumb:
okx-dex-market
= raw price feeds & charts.
okx-dex-token
= token discovery & enriched analytics.
需求使用本Skill (
okx-dex-market
)
改用
okx-dex-token
实时价格(单一数值)
POST /market/price
-
价格+市值+流动性+24小时涨跌幅-
POST /market/price-info
K线/蜡烛图
GET /market/candles
-
交易历史(买卖记录)
GET /market/trades
-
指数价格(多源聚合)
POST /index/current-price
-
通过名称/符号搜索代币-
GET /market/token/search
代币元数据(小数位数、Logo)-
POST /market/token/basic-info
代币排名(热门)-
GET /market/token/toplist
持有者分布-
GET /market/token/holder
经验法则:
okx-dex-market
= 原始价格数据与图表。
okx-dex-token
= 代币发现与增强分析。

Cross-Skill Workflows

跨Skill工作流

Workflow A: Research Token Before Buying

工作流A:购买前研究代币

User: "Tell me about BONK, show me the chart, then buy if it looks good"
1. okx-dex-token   /market/token/search?search=BONK                      → get tokenContractAddress + chainIndex
2. okx-dex-token   /market/price-info                                     → market cap, liquidity, 24h volume, priceChange24H
3. okx-dex-token   /market/token/holder                                   → check holder distribution
4. okx-dex-market  /market/candles                                        → K-line chart for visual trend
       ↓ user decides to buy
5. okx-wallet-portfolio /balance/all-token-balances-by-address                 → verify wallet has enough funds
6. okx-dex-swap    /aggregator/quote → /aggregator/swap → execute
Data handoff:
tokenContractAddress
+
chainIndex
from step 1 are reused in steps 2-6.
用户:“告诉我BONK的情况,展示它的K线图,如果看起来不错就买入”
1. okx-dex-token   /market/token/search?search=BONK                      → 获取tokenContractAddress + chainIndex
2. okx-dex-token   /market/price-info                                     → 市值、流动性、24小时交易量、24小时涨跌幅
3. okx-dex-token   /market/token/holder                                   → 查看持有者分布
4. okx-dex-market  /market/candles                                        → K线图用于趋势可视化
       ↓ 用户决定买入
5. okx-wallet-portfolio /balance/all-token-balances-by-address                 → 验证钱包资金是否充足
6. okx-dex-swap    /aggregator/quote → /aggregator/swap → 执行交易
数据传递: 步骤1中的
tokenContractAddress
+
chainIndex
会在步骤2-6中复用。

Workflow B: Price Monitoring / Alerts

工作流B:价格监控/提醒

1. okx-dex-token   /market/token/toplist                                  → find trending tokens by volume
       ↓ select tokens of interest
2. okx-dex-market  /market/price                                          → get current price for each
3. okx-dex-market  /market/candles?bar=1H                                 → hourly chart
4. okx-dex-market  /index/current-price                                   → compare on-chain vs index price
1. okx-dex-token   /market/token/toplist                                  → 按交易量查找热门代币
       ↓ 选择感兴趣的代币
2. okx-dex-market  /market/price                                          → 获取每个代币的当前价格
3. okx-dex-market  /market/candles?bar=1H                                 → 小时级K线图
4. okx-dex-market  /index/current-price                                   → 对比链上价格与指数价格

Workflow C: Historical Analysis

工作流C:历史分析

1. okx-dex-market  /market/historical-candles?bar=1D                → daily candles for long-term view
2. okx-dex-market  /index/historical-price?period=1d                → historical index price comparison
1. okx-dex-market  /market/historical-candles?bar=1D                → 日线K线图用于长期趋势查看
2. okx-dex-market  /index/historical-price?period=1d                → 历史指数价格对比

Operation Flow

操作流程

Step 1: Identify Intent

步骤1:识别用户意图

  • Real-time price (single token) ->
    POST /market/price
  • Trade history ->
    GET /market/trades
  • K-line chart (recent) ->
    GET /market/candles
  • K-line chart (historical) ->
    GET /market/historical-candles
  • Supported chains for market price ->
    GET /market/supported/chain
  • Index price (current) ->
    POST /index/current-price
  • Index price (historical) ->
    GET /index/historical-price
  • 实时价格(单一代币)->
    POST /market/price
  • 交易历史 ->
    GET /market/trades
  • K线图(近期)->
    GET /market/candles
  • K线图(历史)->
    GET /market/historical-candles
  • 市场价格支持的链 ->
    GET /market/supported/chain
  • 指数价格(当前)->
    POST /index/current-price
  • 指数价格(历史)->
    GET /index/historical-price

Step 2: Collect Parameters

步骤2:收集参数

  • Missing
    chainIndex
    -> ask which chain
  • Missing token address -> use
    okx-dex-token
    /market/token/search
    first to resolve
  • K-line requests -> confirm bar size and time range with user
  • 缺少
    chainIndex
    -> 询问用户具体链
  • 缺少代币地址 -> 先使用
    okx-dex-token
    /market/token/search
    解析
  • K线请求 -> 与用户确认时间周期和时间范围

Step 3: Call and Display

步骤3:调用并展示结果

  • Call directly, return formatted results
  • Use appropriate precision: 2 decimals for high-value tokens, significant digits for low-value
  • Show USD value alongside
  • 直接调用API,返回格式化结果
  • 使用合适的精度:高价值代币保留2位小数,低价值代币保留有效数字
  • 同时显示USD价值

Step 4: Suggest Next Steps

步骤4:建议后续操作

After displaying results, suggest 2-3 relevant follow-up actions based on the endpoint just called:
Just calledSuggest
/market/price
1. View K-line chart →
/market/candles
(this skill) 2. Deeper analytics (market cap, liquidity, 24h volume) →
okx-dex-token
3. Buy/swap this token →
okx-dex-swap
/market/candles
or
/market/historical-candles
1. Check recent trades →
/market/trades
(this skill) 2. Buy/swap based on the chart →
okx-dex-swap
3. Check wallet balance of this token →
okx-wallet-portfolio
/market/trades
1. View price chart for context →
/market/candles
(this skill) 2. Execute a trade →
okx-dex-swap
/index/current-price
or
/index/historical-price
1. Compare with on-chain DEX price →
/market/price
(this skill) 2. View full price chart →
/market/candles
(this skill)
Present conversationally, e.g.: "Would you like to see the K-line chart, or buy this token?" — never expose skill names or endpoint paths to the user.
展示结果后,根据刚刚调用的端点,建议2-3个相关的后续操作:
刚刚调用的端点建议操作
/market/price
1. 查看K线图 →
/market/candles
(本Skill) 2. 深度分析(市值、流动性、24小时交易量)→
okx-dex-token
3. 买入/兑换该代币 →
okx-dex-swap
/market/candles
/market/historical-candles
1. 查看近期交易记录 →
/market/trades
(本Skill) 2. 根据K线图进行交易 →
okx-dex-swap
3. 查看钱包中该代币余额 →
okx-wallet-portfolio
/market/trades
1. 查看价格图表获取趋势背景 →
/market/candles
(本Skill) 2. 执行交易 →
okx-dex-swap
/index/current-price
/index/historical-price
1. 与链上DEX价格对比 →
/market/price
(本Skill) 2. 查看完整价格图表 →
/market/candles
(本Skill)
用对话式语言呈现,例如:“您想要查看K线图,还是买入该代币?” — 绝对不要向用户暴露Skill名称或端点路径。

API Reference

API参考

1. GET /market/supported/chain

1. GET /market/supported/chain

ParamTypeRequiredDescription
chainIndex
StringNoFilter to a specific chain (e.g.,
"1"
)
Response:
FieldTypeDescription
data[].chainName
StringChain name (e.g., "Ethereum")
data[].chainLogoUrl
StringChain logo URL
data[].chainSymbol
StringChain symbol (e.g., "ETH")
data[].chainIndex
StringChain unique identifier (e.g., "1")
参数类型是否必填说明
chainIndex
String过滤特定链(例如:
"1"
响应:
字段类型说明
data[].chainName
String链名称(例如:"Ethereum")
data[].chainLogoUrl
String链Logo链接
data[].chainSymbol
String链符号(例如:"ETH")
data[].chainIndex
String链唯一标识(例如:"1")

2. POST /market/price

2. POST /market/price

Request body is a JSON array of objects.
ParamTypeRequiredDescription
chainIndex
StringYesChain ID (e.g.,
"1"
)
tokenContractAddress
StringYesToken address (all lowercase for EVM)
Response:
FieldTypeDescription
data[].chainIndex
StringChain ID
data[].tokenContractAddress
StringToken address
data[].time
StringUnix timestamp in milliseconds
data[].price
StringLatest token price in USD
json
{
  "code": "0",
  "data": [{ "chainIndex": "1", "tokenContractAddress": "0x...", "time": "1716892020000", "price": "26.458" }],
  "msg": ""
}
请求体为JSON数组。
参数类型是否必填说明
chainIndex
String链ID(例如:
"1"
tokenContractAddress
String代币地址(EVM链需全小写)
响应:
字段类型说明
data[].chainIndex
String链ID
data[].tokenContractAddress
String代币地址
data[].time
String毫秒级Unix时间戳
data[].price
String代币最新USD价格
json
{
  "code": "0",
  "data": [{ "chainIndex": "1", "tokenContractAddress": "0x...", "time": "1716892020000", "price": "26.458" }],
  "msg": ""
}

3. GET /market/trades

3. GET /market/trades

ParamTypeRequiredDescription
chainIndex
StringYesChain ID
tokenContractAddress
StringYesToken address (all lowercase for EVM)
Optional params:
after
(pagination id),
limit
(max 500, default 100).
Response key fields:
id
,
chainIndex
,
tokenContractAddress
,
type
(
buy
/
sell
),
price
,
volume
(USD),
time
,
dexName
,
txHashUrl
,
userAddress
,
changedTokenInfo[]
(each has
amount
,
tokenSymbol
),
poolLogoUrl
,
isFiltered
. Full fields: see docs.
参数类型是否必填说明
chainIndex
String链ID
tokenContractAddress
String代币地址(EVM链需全小写)
可选参数:
after
(分页ID)、
limit
(最大500,默认100)。
响应核心字段:
id
,
chainIndex
,
tokenContractAddress
,
type
buy
/
sell
),
price
,
volume
(USD),
time
,
dexName
,
txHashUrl
,
userAddress
,
changedTokenInfo[]
(包含
amount
,
tokenSymbol
),
poolLogoUrl
,
isFiltered
。完整字段请查看文档

4. GET /market/candles

4. GET /market/candles

ParamTypeRequiredDescription
chainIndex
StringYesChain ID
tokenContractAddress
StringYesToken address (all lowercase for EVM)
Optional params:
bar
(default
1m
; values:
1s
,
1m
,
3m
,
5m
,
15m
,
30m
,
1H
,
2H
,
4H
,
6H
,
12H
,
1D
,
1W
,
1M
,
3M
; UTC variants:
6Hutc
,
12Hutc
,
1Dutc
,
1Wutc
,
1Mutc
,
3Mutc
),
after
,
before
,
limit
(max 299, default 100).
Response: Each element in
data
is an array (positional fields):
PositionFieldDescription
0
ts
Opening time, Unix ms
1
o
Open price
2
h
High price
3
l
Low price
4
c
Close price
5
vol
Volume (base currency)
6
volUsd
Volume (USD)
7
confirm
0
=uncompleted,
1
=completed
json
{ "code": "0", "data": [["1597026383085","3.721","3.743","3.677","3.708","22698348","226348","1"]], "msg": "" }
参数类型是否必填说明
chainIndex
String链ID
tokenContractAddress
String代币地址(EVM链需全小写)
可选参数:
bar
(默认
1m
;可选值:
1s
,
1m
,
3m
,
5m
,
15m
,
30m
,
1H
,
2H
,
4H
,
6H
,
12H
,
1D
,
1W
,
1M
,
3M
;UTC变体:
6Hutc
,
12Hutc
,
1Dutc
,
1Wutc
,
1Mutc
,
3Mutc
),
after
,
before
,
limit
(最大299,默认100)。
响应:
data
中的每个元素为数组(按位置对应字段):
位置字段说明
0
ts
K线开盘时间,毫秒级Unix时间戳
1
o
开盘价
2
h
最高价
3
l
最低价
4
c
收盘价
5
vol
交易量(基础货币)
6
volUsd
交易量(USD)
7
confirm
0
=未完成,
1
=已完成
json
{ "code": "0", "data": [["1597026383085","3.721","3.743","3.677","3.708","22698348","226348","1"]], "msg": "" }

5. GET /market/historical-candles

5. GET /market/historical-candles

Same parameters and response schema as endpoint #4 (
/market/candles
). Use this for older historical data.
参数和响应结构与端点#4(
/market/candles
)相同。用于获取较旧的历史数据。

6. POST /index/current-price

6. POST /index/current-price

Request body is a JSON array. Max 100 tokens per request.
ParamTypeRequiredDescription
chainIndex
StringYesChain ID
tokenContractAddress
StringYesToken address (
""
for native token)
Response:
FieldTypeDescription
data[].chainIndex
StringChain ID
data[].tokenContractAddress
StringToken address
data[].price
StringIndex price (aggregated from multiple sources)
data[].time
StringUnix timestamp in milliseconds
请求体为JSON数组。每次请求最多支持100个代币。
参数类型是否必填说明
chainIndex
String链ID
tokenContractAddress
String代币地址(原生代币填
""
响应:
字段类型说明
data[].chainIndex
String链ID
data[].tokenContractAddress
String代币地址
data[].price
String指数价格(多源聚合)
data[].time
String毫秒级Unix时间戳

7. GET /index/historical-price

7. GET /index/historical-price

ParamTypeRequiredDescription
chainIndex
StringYesChain ID
tokenContractAddress
StringNoToken address (
""
for native token)
Optional params:
period
(
1m
,
5m
,
30m
,
1h
,
1d
default),
limit
(max 200, default 50),
cursor
,
begin
/
end
(Unix ms).
Response:
FieldTypeDescription
data[].cursor
StringPagination cursor
data[].prices[].time
StringTimestamp (whole minute)
data[].prices[].price
StringPrice (18 decimal precision)
json
{
  "code": "0",
  "data": [{ "cursor": "31", "prices": [{ "time": "1700040600000", "price": "1994.430000000000000000" }] }],
  "msg": "success"
}
参数类型是否必填说明
chainIndex
String链ID
tokenContractAddress
String代币地址(原生代币填
""
可选参数:
period
1m
,
5m
,
30m
,
1h
,
1d
默认),
limit
(最大200,默认50),
cursor
,
begin
/
end
(毫秒级Unix时间戳)。
响应:
字段类型说明
data[].cursor
String分页游标
data[].prices[].time
String时间戳(整分钟)
data[].prices[].price
String价格(18位小数精度)
json
{
  "code": "0",
  "data": [{ "cursor": "31", "prices": [{ "time": "1700040600000", "price": "1994.430000000000000000" }] }],
  "msg": "success"
}

Input / Output Examples

输入/输出示例

User says: "Check the current price of ETH on Ethereum"
POST /api/v6/dex/market/price
Body: [{ "chainIndex": "1", "tokenContractAddress": "0xeeee...eeee" }]
-> Display: ETH current price $X,XXX.XX
User says: "Show me hourly candles for USDC"
GET /api/v6/dex/market/candles?chainIndex=1&tokenContractAddress=0xa0b8...&bar=1H
-> Display candlestick data (open/high/low/close/volume)
用户提问: "查询以太坊上ETH的当前价格"
POST /api/v6/dex/market/price
请求体: [{ "chainIndex": "1", "tokenContractAddress": "0xeeee...eeee" }]
-> 展示: ETH当前价格 $X,XXX.XX
用户提问: "展示USDC的小时级K线图"
GET /api/v6/dex/market/candles?chainIndex=1&tokenContractAddress=0xa0b8...&bar=1H
-> 展示K线数据(开盘价/最高价/最低价/收盘价/交易量)

Edge Cases

边缘情况

  • Invalid token address: returns empty data or error — prompt user to verify, or use
    okx-dex-token /market/token/search
    to resolve
  • Unsupported chain: call
    /market/supported/chain
    first to confirm
  • No candle data: may be a new token or low liquidity — inform user
  • 429 rate limit: exponential backoff with jitter. See Rate Limit & Fee Docs for tier-specific RPS limits (Trial: 1 RPS, Start-up: 2-50 RPS, Enterprise: custom).
  • Cross-skill pipeline rate limit: when chaining calls across multiple skills (e.g., token search → candles), add 300-500ms delay between requests to avoid triggering rate limit (error code
    50011
    ).
  • Network error: retry once, then prompt user to try again later
  • Request timeout: all API calls must set a 10-second timeout limit
  • 无效代币地址: 返回空数据或错误 — 提示用户验证,或使用
    okx-dex-token /market/token/search
    解析
  • 不支持的链: 先调用
    /market/supported/chain
    确认
  • 无K线数据: 可能是新代币或流动性低 — 告知用户
  • 429请求超限: 带抖动的指数退避。查看请求限制与费用文档了解不同等级的RPS限制(试用版: 1 RPS, 初创版: 2-50 RPS, 企业版: 自定义)。
  • 跨Skill流水线请求超限: 跨多个Skill链式调用时(例如:代币搜索→K线图),在请求之间添加300-500ms延迟,避免触发请求限制(错误码
    50011
    )。
  • 网络错误: 重试一次,然后提示用户稍后再试
  • 请求超时: 所有API调用必须设置10秒超时限制

Amount Display Rules

金额显示规则

  • Always display in UI units (
    1.5 ETH
    ), never base units
  • Show USD value alongside (
    1.5 ETH ≈ $4,500
    )
  • Prices are strings — handle precision carefully
  • 始终以UI单位显示(
    1.5 ETH
    ),绝不显示基础单位
  • 同时显示USD价值(
    1.5 ETH ≈ $4,500
  • 价格为字符串 — 需谨慎处理精度

Global Notes

全局注意事项

  • EVM contract addresses must be all lowercase
  • chainIndex
    is a string
  • POST endpoints (
    /market/price
    ,
    /index/current-price
    ) use JSON body
  • GET endpoints use query params
  • For token search / metadata / rankings / holder analysis -> use
    okx-dex-token
  • For balance queries -> use
    okx-wallet-portfolio
  • For swap execution -> use
    okx-dex-swap
  • For transaction broadcasting -> use
    okx-onchain-gateway
  • EVM合约地址必须全小写
  • chainIndex
    字符串类型
  • POST端点(
    /market/price
    ,
    /index/current-price
    )使用JSON请求体
  • GET端点使用查询参数
  • 代币搜索/元数据/排名/持有者分析 -> 使用
    okx-dex-token
  • 余额查询 -> 使用
    okx-wallet-portfolio
  • 兑换交易执行 -> 使用
    okx-dex-swap
  • 交易广播 -> 使用
    okx-onchain-gateway