Crypto.com 交易所 V1 API 文档解析与开发指南

·

概述

Crypto.com 交易所 V1 API 为开发者提供了一套完整的接口,用于访问市场数据、管理用户账户以及实时获取交易信息。本文将详细介绍 API 的使用方法、核心功能及最佳实践。

基本信息

接口地址

所有请求必须通过 HTTPS 协议发送。对于 POSTDELETE 请求,请求头中的 Content-Type 必须设置为 application/x-www-form-urlencoded

生成 API 密钥

在使用 API 之前,您需要生成一对 API 密钥:

  1. 登录 Crypto.com 交易所网页版
  2. 进入【用户中心】-【API】页面
  3. 创建新的 API 密钥

请妥善保管以下信息:

API 密钥和密钥由系统随机生成,不可修改。为提高安全性,建议设置 IP 白名单限制。

请求签名

部分接口需要身份验证,采用 API 密钥和请求参数 SHA-256 签名的方式(切勿在请求中直接包含密钥)。

签名生成算法:

  1. 将请求参数按名称升序排序
  2. 对每个参数,若值不为空,将 参数名+参数值 追加到字符串中
  3. 在字符串末尾添加 Secret Key
  4. 对最终字符串进行 SHA-256 哈希计算

示例

api_key = "您的API密钥"
time = "时间戳"
secret_key = "您的密钥"
sign = sha256("api_key" + api_key + "time" + time + secret_key)

响应状态码

API 使用标准 HTTP 状态码:

除特殊说明外,所有响应均为 JSON 格式,包含以下字段:

{
  "code": 0,       // 0表示成功,非0表示错误
  "msg": "suc",    // 成功或错误信息
  "data": ...      // 响应数据
}

交易对符号

许多 API 需要 symbol 参数,表示交易对名称。格式通常为“基础货币-计价货币”,如:

👉 查看实时交易对列表与最新价格

API 参考

API 分组

API 类型是否需要签名描述
市场API获取行情数据,如行情、深度图等
用户API用户账户操作,如查询余额、下单、撤单等
WebSocket API实时市场数据推送

推荐使用 WebSocket API 获取市场数据,因其更高效、实时性更强。

接口概览

市场API

用户API

市场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

参数:

返回指定周期的开盘价、最高价、最低价、收盘价和成交量。

获取深度数据

端点GET /v1/depth

参数:

返回指定交易对的买卖盘深度信息。

用户API详解

获取账户余额

端点POST /v1/account

需要签名的请求参数:

返回用户所有资产的可用余额、冻结余额和估值。

创建订单

端点POST /v1/order

参数:

返回新创建的订单ID。

订单管理

提供完整的订单生命周期管理:

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;

// 发送请求...

常见问题

如何解决签名错误?

确保:

  1. 参数按字母顺序排序
  2. 参数值转换为字符串
  3. 签名字符串包含Secret Key
  4. 使用正确的哈希算法(SHA-256)

请求频率限制是多少?

不同接口有不同的频率限制:

WebSocket连接断开怎么办?

WebSocket连接可能因网络问题或长时间无活动而断开。建议实现自动重连机制,并在收到ping消息时及时回复pong。

如何获取历史K线数据?

可以通过REST API的/v1/klines端点获取历史K线,或通过WebSocket API请求特定时间段的数据。

市价单和限价单有什么区别?

如何确保API安全性?

  1. 使用IP白名单功能
  2. 妥善保管API密钥和Secret Key
  3. 在安全的网络环境中使用API
  4. 定期更换API密钥

👉 获取更多API开发技巧与最佳实践

总结

Crypto.com 交易所 V1 API 提供了完整的功能覆盖,从市场数据获取到交易执行,满足各类开发需求。通过合理的架构设计和安全实践,开发者可以构建稳定可靠的交易应用程序。

建议开发者先从小额测试开始,充分理解各接口的功能和限制,再逐步扩大应用规模。同时密切关注官方更新,及时调整实现以兼容API变更。