概述
Crypto.com 交易所 V1 API 为开发者提供了一套完整的接口,用于访问市场数据、管理用户账户以及实时获取交易信息。本文将详细介绍 API 的使用方法、核心功能及最佳实践。
基本信息
接口地址
- REST API 根地址:
https://api.crypto.com - WebSocket 连接地址:
wss://ws.crypto.com/kline-api/ws
所有请求必须通过 HTTPS 协议发送。对于 POST 和 DELETE 请求,请求头中的 Content-Type 必须设置为 application/x-www-form-urlencoded。
生成 API 密钥
在使用 API 之前,您需要生成一对 API 密钥:
- 登录 Crypto.com 交易所网页版
- 进入【用户中心】-【API】页面
- 创建新的 API 密钥
请妥善保管以下信息:
- API Key(API 密钥)
- Secret Key(密钥)
API 密钥和密钥由系统随机生成,不可修改。为提高安全性,建议设置 IP 白名单限制。
请求签名
部分接口需要身份验证,采用 API 密钥和请求参数 SHA-256 签名的方式(切勿在请求中直接包含密钥)。
签名生成算法:
- 将请求参数按名称升序排序
- 对每个参数,若值不为空,将
参数名+参数值追加到字符串中 - 在字符串末尾添加 Secret Key
- 对最终字符串进行 SHA-256 哈希计算
示例:
api_key = "您的API密钥"
time = "时间戳"
secret_key = "您的密钥"
sign = sha256("api_key" + api_key + "time" + time + secret_key)响应状态码
API 使用标准 HTTP 状态码:
400:请求格式错误401:API 密钥无效403:无访问权限404:接口不存在429:请求频率超限499:输入验证错误500:服务器内部错误503:服务器繁忙
除特殊说明外,所有响应均为 JSON 格式,包含以下字段:
{
"code": 0, // 0表示成功,非0表示错误
"msg": "suc", // 成功或错误信息
"data": ... // 响应数据
}交易对符号
许多 API 需要 symbol 参数,表示交易对名称。格式通常为“基础货币-计价货币”,如:
btcusdt:BTC/USDT 交易对ethbtc:ETH/BTC 交易对crobtc:CRO/BTC 交易对
API 参考
API 分组
| API 类型 | 是否需要签名 | 描述 |
|---|---|---|
| 市场API | 否 | 获取行情数据,如行情、深度图等 |
| 用户API | 是 | 用户账户操作,如查询余额、下单、撤单等 |
| WebSocket API | 否 | 实时市场数据推送 |
推荐使用 WebSocket API 获取市场数据,因其更高效、实时性更强。
接口概览
市场API:
GET /v1/symbols- 获取所有交易对GET /v1/ticker- 获取全部行情GET /v1/ticker?symbol=xxx- 获取指定交易对行情GET /v1/klines- 获取K线数据GET /v1/trades- 获取最新成交GET /v1/ticker/price- 获取最新成交价GET /v1/depth- 获取深度图
用户API:
POST /v1/account- 获取账户余额POST /v1/order- 创建订单POST /v1/showOrder- 查询订单详情POST /v1/orders/cancel- 取消订单POST /v1/cancelAllOrders- 取消所有订单POST /v1/openOrders- 查询当前挂单POST /v1/allOrders- 查询所有订单POST /v1/myTrades- 查询成交记录
市场API详解
获取所有交易对
端点:GET /v1/symbols
无需参数,返回所有可交易对及其精度信息。
响应示例:
{
"code": "0",
"msg": "suc",
"data": [
{
"symbol": "ethbtc",
"count_coin": "btc",
"amount_precision": 3,
"base_coin": "eth",
"price_precision": 8
}
]
}获取行情数据
端点:GET /v1/ticker
可选参数 symbol 指定特定交易对。返回包含最高价、最低价、最新价、成交量等信息。
获取K线数据
端点:GET /v1/klines
参数:
period:K线周期(1,5,15,30,60,1440,10080,43200 分钟)symbol:交易对符号
返回指定周期的开盘价、最高价、最低价、收盘价和成交量。
获取深度数据
端点:GET /v1/depth
参数:
symbol:交易对符号type:深度类型(step0, step1, step2)
返回指定交易对的买卖盘深度信息。
用户API详解
获取账户余额
端点:POST /v1/account
需要签名的请求参数:
api_key:API 密钥time:时间戳sign:签名
返回用户所有资产的可用余额、冻结余额和估值。
创建订单
端点:POST /v1/order
参数:
symbol:交易对side:买卖方向(BUY/SELL)type:订单类型(1-限价单,2-市价单)price:价格(限价单必需)volume:数量api_key,time,sign:认证参数
返回新创建的订单ID。
订单管理
提供完整的订单生命周期管理:
- 查询订单详情(
/v1/showOrder) - 取消单个订单(
/v1/orders/cancel) - 取消所有订单(
/v1/cancelAllOrders) - 查询当前挂单(
/v1/openOrders) - 查询历史订单(
/v1/allOrders) - 查询成交记录(
/v1/myTrades)
WebSocket API
WebSocket API 提供实时市场数据推送,包括:
行情推送
订阅特定交易对的实时行情:
{"event":"sub","params":{"channel":"market_btcusdt_ticker"}}K线数据推送
订阅K线数据更新:
{"event":"sub","params":{"channel":"market_btcusdt_kline_1min"}}成交记录推送
订阅实时成交记录:
{"event":"sub","params":{"channel":"market_btcusdt_trade_ticker"}}深度数据推送
订阅订单簿深度更新:
{"event":"sub","params":{"channel":"market_btcusdt_depth_step0"}}开发示例
Python 示例
import hashlib
import requests
import time
API_KEY = "your_api_key"
SECRET_KEY = "your_secret_key"
# 生成签名
params = {
'api_key': API_KEY,
'time': int(time.time() * 1000)
}
message = ''.join([k + str(v) for k, v in sorted(params.items())]) + SECRET_KEY
sign = hashlib.sha256(message.encode('utf-8')).hexdigest()
params['sign'] = sign
# 查询账户余额
response = requests.post('https://api.crypto.com/v1/account', data=params)
print(response.json())Node.js 示例
const crypto = require('crypto-js');
const params = {
api_key: API_KEY,
time: Date.now()
};
const message = Object.keys(params).sort().map(key => key + params[key]).join('') + SECRET_KEY;
const sign = crypto.SHA256(message).toString();
params.sign = sign;
// 发送请求...常见问题
如何解决签名错误?
确保:
- 参数按字母顺序排序
- 参数值转换为字符串
- 签名字符串包含Secret Key
- 使用正确的哈希算法(SHA-256)
请求频率限制是多少?
不同接口有不同的频率限制:
- 市场API:每秒100次(按IP)
- 账户查询:每100毫秒1次(按API Key)
- 订单操作:每100毫秒5次(按API Key)
WebSocket连接断开怎么办?
WebSocket连接可能因网络问题或长时间无活动而断开。建议实现自动重连机制,并在收到ping消息时及时回复pong。
如何获取历史K线数据?
可以通过REST API的/v1/klines端点获取历史K线,或通过WebSocket API请求特定时间段的数据。
市价单和限价单有什么区别?
- 限价单:指定价格,保证成交价格但不保证立即成交
- 市价单:按当前市场最优价格立即成交,但不保证具体成交价格
如何确保API安全性?
- 使用IP白名单功能
- 妥善保管API密钥和Secret Key
- 在安全的网络环境中使用API
- 定期更换API密钥
总结
Crypto.com 交易所 V1 API 提供了完整的功能覆盖,从市场数据获取到交易执行,满足各类开发需求。通过合理的架构设计和安全实践,开发者可以构建稳定可靠的交易应用程序。
建议开发者先从小额测试开始,充分理解各接口的功能和限制,再逐步扩大应用规模。同时密切关注官方更新,及时调整实现以兼容API变更。