OKX Web3 Wallet Market API 技能,用于实时查询代币价格、K线、交易记录,获取综合指数价、搜索代币并查看详情与排行榜,以及持仓大户信息。触发词:代币...
本技能用于调用 OKX Web3 Wallet 的 Market API,获取加密货币代币的价格、交易、K线等市场数据。
Base URL: https://web3.okx.com
认证方式: 需要在 Header 中传入以下字段:
OK-ACCESS-KEY: API KeyOK-ACCESS-SIGN: 签名(HMAC SHA256)OK-ACCESS-PASSPHRASE: API 密码短语OK-ACCESS-TIMESTAMP: 请求时间戳(ISO 8601 格式)Content-Type: application/json(POST 请求)python
import hmac
import hashlib
import base64
from datetime import datetime
def generate_signature(timestamp, method, request_path, body, secret_key):
"""
生成 OKX API 签名
timestamp: ISO 8601 格式时间戳,如 '2023-10-18T12:21:41.274Z'
method: HTTP 方法 (GET/POST)
request_path: 请求路径,如 '/api/v6/dex/market/candles'
body: 请求体(POST 时为 JSON 字符串,GET 时为空字符串)
secret_key: API Secret
"""
message = timestamp + method.upper() + request_path + body
mac = hmac.new(
secret_key.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
chainIndex区块链0Bitcoin1Ethereum10Optimism56BSC (BNB Chain)66OKX Chain137Polygon324zkSync Era501Solana42161Arbitrum One43114Avalanche C-Chain
获取代币的 K 线图数据,最多返回 1,440 条记录。
请求
text
GET https://web3.okx.com/api/v6/dex/market/candles
请求参数
参数类型必填说明chainIndexString是链标识,如 1 表示 EthereumtokenContractAddressString是代币合约地址(EVM 链需使用小写)afterString否返回该时间戳之前的数据beforeString否返回该时间戳之后的数据barString否K 线周期,默认 1m。可选: 1s/1m/3m/5m/15m/30m/1H/2H/4H/6H/12H/1D/1W/1M/3MlimitString否返回数量,最大 299,默认 100
响应数据格式: [ts, o, h, l, c, vol, volUsd, confirm]
ts: 开盘时间(Unix 毫秒时间戳)o: 开盘价h: 最高价l: 最低价c: 收盘价vol: 交易量(基础货币)volUsd: 交易量(USD)confirm: 是否完成(0=未完成, 1=已完成)示例
bash
curl -X GET 'https://web3.okx.com/api/v6/dex/market/candles?chainIndex=66&tokenContractAddress=0x382bb369d343125bfb2117af9c149795c6c65c50' \
-H 'OK-ACCESS-KEY: your-api-key' \
-H 'OK-ACCESS-SIGN: your-signature' \
-H 'OK-ACCESS-PASSPHRASE: your-passphrase' \
-H 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z'
获取历史 K 线数据(不包含未完成的 K 线)。
请求
text
GET https://web3.okx.com/api/v6/dex/market/historical-candles
参数与 1.1 相同。
获取代币的最近交易记录。
请求
text
GET https://web3.okx.com/api/v6/dex/market/trades
请求参数
参数类型必填说明chainIndexString是链标识tokenContractAddressString是代币合约地址
响应字段
id: 交易 IDtxHashUrl: 交易哈希链接userAddress: 用户地址dexName: DEX 名称type: 交易类型 (buy/sell)changedTokenInfo: 交易代币信息数组综合币价是通过聚合多个第三方数据源(CEX/DEX/Oracle)计算得出的指数价格。
批量查询代币指数价格,每次最多 100 个。
请求
text
POST https://web3.okx.com/api/v6/dex/index/current-price
请求体 (JSON 数组)
参数类型必填说明chainIndexString是链标识tokenContractAddressString是代币地址。传空字符串 "" 查询原生代币
响应字段
price: 代币价格time: 价格时间戳(Unix 毫秒)chainIndex: 链标识tokenContractAddress: 代币地址示例
bash
curl -X POST 'https://web3.okx.com/api/v6/dex/index/current-price' \
-H 'Content-Type: application/json' \
-H 'OK-ACCESS-KEY: your-api-key' \
-H 'OK-ACCESS-SIGN: your-signature' \
-H 'OK-ACCESS-PASSPHRASE: your-passphrase' \
-H 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \
-d '[
{"chainIndex": "1", "tokenContractAddress": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72"},
{"chainIndex": "1", "tokenContractAddress": ""}
]'
查询代币的历史价格。
请求
text
GET https://web3.okx.com/api/v6/dex/index/historical-price
请求参数
参数类型必填说明chainIndexString是链标识tokenContractAddressString否代币地址limitString否返回数量beginString否开始时间(Unix 毫秒)periodString否周期,如 1m/5m/1H/1D
通过代币名称、符号或合约地址搜索代币。
请求
text
GET https://web3.okx.com/api/v6/dex/market/token/search
请求参数
参数类型必填说明chainsString是链标识,多个用逗号分隔,如 1,10,56searchString是搜索关键词(名称/符号/地址)
响应字段
chainIndex: 链标识tokenName: 代币名称tokenSymbol: 代币符号tokenContractAddress: 合约地址tokenLogoUrl: 代币图标decimal: 精度price: 当前价格marketCap: 市值liquidity: 流动性holders: 持有人数change: 24H 涨跌幅tagList.communityRecognized: 是否为社区认证代币示例
bash
curl -X GET 'https://web3.okx.com/api/v6/dex/market/token/search?chains=1,10&search=weth' \
-H 'OK-ACCESS-KEY: your-api-key' \
-H 'OK-ACCESS-SIGN: your-signature' \
-H 'OK-ACCESS-PASSPHRASE: your-passphrase' \
-H 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z'
获取指定代币的基本信息。
请求
text
POST https://web3.okx.com/api/v6/dex/market/token/basic-info
请求体 (JSON 数组)
参数类型必填说明chainIndexString是链标识tokenContractAddressString是代币合约地址
响应字段
chainIndex: 链标识tokenName: 代币名称tokenSymbol: 代币符号tokenLogoUrl: 图标 URLdecimal: 精度tagList.communityRecognized: 是否社区认证获取代币的详细交易信息,包括价格、交易量、市值、流动性等。
请求
text
POST https://web3.okx.com/api/v6/dex/market/price-info
请求体 (JSON 数组,最多 100 个)
参数类型必填说明chainIndexString是链标识tokenContractAddressString是代币合约地址
响应字段
price: 最新价格marketCap: 市值priceChange5M/1H/4H/24H: 价格变化百分比volume5M/1H/4H/24H: 交易量txs5M/1H/4H/24H: 交易笔数maxPrice/minPrice: 24H 最高/最低价circSupply: 流通供应量liquidity: 流动性holders: 持有人数tradeNum: 24H 交易数量示例
bash
curl -X POST 'https://web3.okx.com/api/v6/dex/market/price-info' \
-H 'Content-Type: application/json' \
-H 'OK-ACCESS-KEY: your-api-key' \
-H 'OK-ACCESS-SIGN: your-signature' \
-H 'OK-ACCESS-PASSPHRASE: your-passphrase' \
-H 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \
-d '[
{"chainIndex": "501", "tokenContractAddress": "5mbK36SZ7J19An8jFochhQS4of8g6BwUjbeCSxBSoWdp"}
]'
获取代币排行榜列表。
请求
text
GET https://web3.okx.com/api/v6/dex/market/token/ranking
获取代币的持仓大户信息。
请求
text
GET https://web3.okx.com/api/v6/dex/market/token/holder
Websocket 服务仅对白名单用户开放。如需使用,请联系 dexapi@okx.com。
连接地址: 请参考官方文档
可用频道:
错误码说明0成功50000系统错误50001参数错误50002签名错误50003请求频率超限
python
import requests
import hmac
import hashlib
import base64
from datetime import datetime, timezone
import json
class OKXMarketAPI:
def __init__(self, api_key, secret_key, passphrase):
self.base_url = "https://web3.okx.com"
self.api_key = api_key
self.secret_key = secret_key
self.passphrase = passphrase
def _get_timestamp(self):
return datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
def _sign(self, timestamp, method, request_path, body=''):
message = timestamp + method + request_path + body
mac = hmac.new(
self.secret_key.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
def _headers(self, method, request_path, body=''):
timestamp = self._get_timestamp()
return {
'OK-ACCESS-KEY': self.api_key,
'OK-ACCESS-SIGN': self._sign(timestamp, method, request_path, body),
'OK-ACCESS-PASSPHRASE': self.passphrase,
'OK-ACCESS-TIMESTAMP': timestamp,
'Content-Type': 'application/json'
}
def get_candlesticks(self, chain_index, token_address, bar='1m', limit=100):
"""获取 K 线数据"""
path = f'/api/v6/dex/market/candles?chainIndex={chain_index}&tokenContractAddress={token_address}&bar={bar}&limit={limit}'
headers = self._headers('GET', path)
response = requests.get(self.base_url + path, headers=headers)
return response.json()
def get_index_price(self, tokens):
"""
获取代币指数价格
tokens: [{"chainIndex": "1", "tokenContractAddress": "0x..."}]
"""
path = '/api/v6/dex/index/current-price'
body = json.dumps(tokens)
headers = self._headers('POST', path, body)
response = requests.post(self.base_url + path, headers=headers, data=body)
return response.json()
def search_token(self, chains, keyword):
"""搜索代币"""
path = f'/api/v6/dex/market/token/search?chains={chains}&search={keyword}'
headers = self._headers('GET', path)
response = requests.get(self.base_url + path, headers=headers)
return response.json()
def get_token_info(self, tokens):
"""
获取代币交易信息
tokens: [{"chainIndex": "501", "tokenContractAddress": "..."}]
"""
path = '/api/v6/dex/market/price-info'
body = json.dumps(tokens)
headers = self._headers('POST', path, body)
response = requests.post(self.base_url + path, headers=headers, data=body)
return response.json()
# 使用示例
if __name__ == "__main__":
api = OKXMarketAPI(
api_key="your-api-key",
secret_key="your-secret-key",
passphrase="your-passphrase"
)
# 搜索 WETH
result = api.search_token("1,10", "weth")
print(json.dumps(result, indent=2))
# 获取 ETH 指数价格
result = api.get_index_price([
{"chainIndex": "1", "tokenContractAddress": ""}
])
print(json.dumps(result, indent=2))