KuCoin API 文档功能详解
KuCoin API 为开发者提供了一个强大且全面的接口,用于访问 KuCoin 加密货币交易所的各种功能。通过 API,用户可以自动化交易策略、获取市场数据、管理账户信息,并与 KuCoin 平台进行深度集成。本文将详细解析 KuCoin API 文档中的关键功能,帮助开发者更好地理解和利用这些工具。
认证与授权
安全地使用 KuCoin API 的先决条件是完成认证和授权过程。KuCoin 采用 API 密钥对机制来保障用户身份的安全,用户需要在 KuCoin 交易所平台上创建唯一的 API 密钥和对应的密钥密码(passphrase)。API 密钥对由两个字符串组成:
apiKey
用于明确标识用户的身份,而
secretKey
则用于生成请求签名,验证请求的真实性和完整性。 为了提升账户安全性,强烈建议用户为每个 API 密钥设置精细化的权限控制,例如限定 API 密钥只能用于读取市场数据,或者允许进行交易操作,避免潜在的安全风险。
生成 API 请求签名是确保数据安全的关键步骤,它可以有效防止请求在传输过程中被篡改,并验证请求的发送者是否是合法的用户。KuCoin 采用行业标准的 HMAC-SHA256 哈希算法来生成请求签名。签名的生成过程需要包含以下关键信息:发起请求所使用的 HTTP 方法(例如 GET、POST、PUT、DELETE),请求的路径(不包含域名部分),一个精确到秒的时间戳,以及请求体的内容(如果请求包含请求体,例如 POST 请求)。时间戳必须是自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)起经过的秒数,为了保证请求的有效性,客户端的时间戳必须与 KuCoin 服务器的时间保持同步,否则服务器可能会拒绝该请求。
KuCoin API 提供了多种授权访问方式,以满足不同用户的需求:
- 公共 API (Public API): 此类 API 允许匿名访问,无需进行身份验证。 公共 API 主要用于获取公开的市场数据,例如最新的交易价格、交易量、交易对信息、历史K线数据等。
- 私有 API (Private API): 此类 API 访问需要提供有效的身份验证信息。私有 API 提供了访问用户账户相关信息的能力,例如查询账户余额、管理交易订单、进行充值提现等操作。 访问私有 API 必须提供有效的 API 密钥对和请求签名。
- WebSocket API: 此类 API 提供实时的数据推送服务,允许用户建立持久连接,接收实时的市场行情数据、实时的订单簿更新信息、以及其他实时的交易事件。 WebSocket API 同样可以分为公共频道和私有频道,私有频道的访问也需要进行身份验证。
市场数据 API
市场数据 API 允许用户获取各种市场相关的实时和历史数据,助力交易策略的制定和市场深度分析。这些数据对于量化交易、算法交易以及人工交易员而言,都至关重要。
-
获取所有交易对信息:
/api/v1/symbols
接口提供 KuCoin 平台上所有可交易的交易对信息,包括交易对名称(如BTC-USDT),基础货币(Base Currency),报价货币(Quote Currency),最小交易数量(minQty),交易精度(Precision)以及其他相关交易规则。这些信息是了解交易市场整体情况的基础。 -
获取单个交易对信息:
/api/v1/symbols/{symbol}
接口返回指定交易对的详细信息,例如交易对的活跃状态、交易手续费率等。其中{symbol}
需要替换成具体的交易对,例如BTC-USDT
。 -
获取 Ticker 信息:
/api/v1/market/tickers
接口返回所有交易对的最新交易信息,包括最新成交价(last trade price)、24 小时交易量(24h volume)、24 小时涨跌幅(24h change percentage)以及最高价(high)和最低价(low)。/api/v1/market/ticker?symbol={symbol}
则专门返回指定交易对的Ticker信息,关注特定交易对时效率更高。 -
获取 24 小时统计数据:
/api/v1/market/stats?symbol={symbol}
接口提供指定交易对的 24 小时统计数据,包括开盘价(open)、最高价(high)、最低价(low)、收盘价(close)、成交量(volume)和成交额(volume in quote currency)等关键指标。这些数据有助于评估市场的整体表现和波动性。 -
获取订单簿:
/api/v1/market/orderbook/level2_20?symbol={symbol}
和/api/v1/market/orderbook/level2_100?symbol={symbol}
接口分别返回深度为 20 层和 100 层的 Level2 订单簿数据,展示买单(bids)和卖单(asks)的价格和数量。/api/v1/market/orderbook/level3?symbol={symbol}
接口返回 Level3 全量订单簿数据,包含更细粒度的订单信息。订单簿数据对于理解市场深度、评估流动性、进行套利交易和执行更精确的订单至关重要。Level2与Level3的区别在于,Level3包含了所有挂单的详细信息,而Level2进行了聚合。 -
获取历史 K 线数据:
/api/v1/market/candles?symbol={symbol}&type={type}&startAt={startAt}&endAt={endAt}
接口返回指定交易对的历史 K 线数据。用户可以指定 K 线的类型 (例如 1 分钟1min
、5 分钟5min
、1 小时1hour
、1 天1day
等) 和时间范围(使用 Unix 时间戳表示)。K 线数据是技术分析的基础,可用于识别趋势、支撑位和阻力位,进行各种技术指标的计算(例如移动平均线、相对强弱指数 RSI 等)。 -
获取历史成交记录:
/api/v1/market/fills?symbol={symbol}
接口返回指定交易对的历史成交记录,包括成交时间、成交价格、成交数量以及买卖方向等信息。这些数据可用于分析市场微观结构、验证交易策略的回测结果以及进行更深入的市场研究。
交易 API
交易 API 允许用户在 KuCoin 平台上执行各种交易操作,包括下单、撤单和查询订单状态。 这些 API 需要通过身份验证才能访问,并且为了避免因程序错误或市场波动造成的意外交易损失,强烈建议用户在使用前进行充分的测试和风险评估。
-
下单:
/api/v1/orders
接口允许用户提交新的交易订单到 KuCoin 交易系统。 用户需要精确地指定以下关键参数:交易对 (symbol
,例如 BTC-USDT),交易方向 (side
,买入buy
或卖出sell
),订单类型 (type
,如市价单market
、限价单limit
、止损单stop
、止损限价单stopLimit
),订单数量 (size
,以交易对的基础货币计价) 以及价格 (price
,仅在限价单和止损限价单中需要,以交易对的报价货币计价)。 KuCoin API 提供了丰富的订单类型选项,例如冰山订单、隐藏订单等,以满足不同交易策略的需求。 可以设置clientOid
参数,允许用户自定义订单 ID,方便订单追踪和管理。 -
撤单:
/api/v1/orders/{orderId}
接口允许用户取消指定 ID 的未成交订单。orderId
是 KuCoin 系统为每个订单分配的唯一标识符。 成功撤单后,冻结的资产将会被释放。 -
查询订单:
/api/v1/orders/{orderId}
接口允许用户检索具有特定orderId
的订单的详细信息,包括订单状态、创建时间、已成交数量、平均成交价格等。/api/v1/orders?symbol={symbol}
接口则允许用户根据指定的交易对 (symbol
) 查询所有相关的订单信息。 还可以通过附加其他参数,如type
(订单类型)、side
(交易方向) 和time
(时间范围) 来进一步筛选订单。 -
获取活动订单:
/api/v1/orders?status=active
接口允许用户检索所有当前未完成的订单列表。 未完成的订单包括尚未完全成交或已被挂起的订单。 通过此接口,用户可以监控其挂单状态,并根据市场变化及时调整交易策略。 -
获取历史订单:
/api/v1/orders?status=done
接口允许用户获取所有已完成的订单列表。 已完成的订单包括已完全成交、已取消或已过期的订单。 此接口通常用于交易历史记录分析和盈亏计算。 可以结合时间参数,例如startAt
和endAt
,来查询特定时间段内的历史订单。 -
批量下单:
/api/v1/orders/multi
接口允许用户一次性提交多个订单请求,从而简化交易流程并提高效率。 此接口接受一个包含多个订单对象的 JSON 数组作为输入。 每个订单对象需要包含与单个下单接口相同的参数,如symbol
、side
、type
、size
和price
。 批量下单有助于执行复杂的交易策略,例如套利和对冲。
账户 API
账户 API 允许用户安全高效地管理其 KuCoin 账户信息,涵盖余额查询、账户历史记录检索等核心功能。这些 API 接口为开发者提供了程序化访问 KuCoin 账户数据的能力,从而可以构建自动化交易策略、账户监控系统以及其他相关应用。
-
获取所有账户信息:
/api/v1/accounts
接口返回用户所有账户的详细信息,包括账户类型 (例如交易账户、资金账户、合约账户等),币种(例如 USDT, BTC, ETH)以及可用余额和冻结余额。返回的数据结构包含每个账户的唯一ID (accountId),可以用于后续的特定账户信息查询和操作。 -
获取单个账户信息:
/api/v1/accounts/{accountId}
接口返回指定账户的详细信息。其中{accountId}
需要替换为实际的账户ID。该接口返回的信息与获取所有账户信息接口类似,但只包含单个账户的信息,减少了数据传输量。 -
获取账户历史记录:
/api/v1/accounts/{accountId}/ledgers
接口返回指定账户的历史记录,包括充值、提现、交易、分红、手续费等详细的账务流水。开发者可以通过设置查询参数,如起始时间和结束时间、交易类型等,来过滤历史记录。每一条历史记录都包含了交易ID、发生时间、交易金额、交易类型等关键信息。 - 充值: 由于安全原因,充值操作必须通过 KuCoin 平台进行,API 不直接支持充值功能。用户可以在 KuCoin 平台上获取充值地址,然后将相应币种转入该地址。
-
提现:
/api/v1/withdrawals
接口允许用户发起提现请求。用户需要指定币种、提现地址和提现数量。用户还需要提供提现备注信息(例如“提现到个人钱包”),方便进行提现管理。KuCoin 会对提现请求进行严格的安全审核,以确保用户资产安全。审核过程可能包括验证提现地址的有效性、确认用户身份等。提现需要支付一定的手续费,手续费金额取决于币种和网络拥堵情况。 -
资金划转:
/api/v1/accounts/inner-transfer
接口允许用户在同一 KuCoin 账户下的不同账户之间进行资金划转,例如从交易账户划转到资金账户。用户需要指定划转的币种、划转数量、源账户ID和目标账户ID。资金划转通常是实时到账,无需人工审核。
WebSocket API
WebSocket API 提供低延迟、双向的实时数据流,使得用户能够订阅并接收市场行情、深度订单簿更新、最新成交记录等关键交易数据。 相较于传统的HTTP轮询方式,WebSocket 连接是一种持久化连接,显著减少了数据传输的延迟,极大地提高了数据更新的效率,为高频交易和实时监控应用提供了理想的基础设施。
- 订阅市场行情 (Ticker Data): 通过订阅指定交易对的实时 Ticker 数据流,用户可以获得该交易对最新的价格、成交量、涨跌幅等关键指标,并实时跟踪市场动态。 交易所通常会提供多种Ticker数据,如最新成交价(Last Price),24小时最高价(24h High),24小时最低价(24h Low),24小时成交量(24h Volume)等。
- 订阅订单簿更新 (Order Book Updates): 订阅指定交易对的实时订单簿增量更新数据,用户可以构建一个动态的、多层次的订单簿视图。订单簿数据通常包括买单和卖单的价格和数量信息,通过增量更新,用户可以及时掌握市场深度和流动性变化。为了提高效率,交易所通常会提供全量订单簿快照(Snapshot)和增量更新(Delta)两种方式。
- 订阅成交记录 (Trade Data): 订阅指定交易对的实时成交记录数据流,用户可以获取每一笔交易的成交价格、成交数量、成交时间等详细信息,并以此进行交易策略分析和风险控制。 成交记录数据可以帮助用户识别大额交易,判断市场趋势,并评估交易执行情况。
- 私有订阅 (Authenticated Subscription): 通常需要身份验证才能订阅私有数据频道,例如用户自己的订单更新、持仓信息更新等敏感数据。 交易所会采用各种安全机制,如API Key,签名认证等,确保用户数据的安全性。 私有订阅能够让用户实时监控自己的交易活动和账户状态。
其他 API
除了上述核心交易和市场数据 API,KuCoin API 还提供了其他一些实用且重要的功能,方便用户进行更全面的信息获取和管理:
-
获取服务器时间:
/api/v1/timestamp
接口用于获取 KuCoin 服务器的当前时间戳(Unix 时间戳)。这对于客户端应用程序的时间同步至关重要,可以确保交易请求的有效性和避免时间偏差导致的错误。服务器时间戳可以作为本地时间校准的基准,尤其在高频交易场景下。 -
获取货币信息:
/api/v1/currencies
接口允许开发者检索 KuCoin 平台上所有可交易数字货币的详细信息。这些信息包括但不限于:货币名称、货币符号、最小交易单位、提现手续费、充值/提现状态等。该接口返回的数据对于构建交易对选择器、风险评估模型以及支持用户进行充提操作至关重要。通过查询该接口,可以动态获取平台支持的币种列表,并避免硬编码带来的维护成本。 -
获取费率信息:
/api/v1/fees/trade/calculator
接口提供了一个交易费用计算器,允许用户根据指定的交易对、订单量以及账户等级预估交易费用。精确的费用计算有助于用户更好地规划交易策略,优化成本,并提高盈利能力。该接口考虑了 KuCoin 平台的阶梯费率制度,不同账户等级享受不同的费率优惠。通过传入相应的参数,用户可以获得个性化的费用估算结果,从而做出更明智的交易决策。 该接口可以模拟maker和taker费率,精确计算挂单或者吃单的费用。
错误处理
KuCoin API 利用标准的 HTTP 状态码体系来明确指示请求的处理结果。 一个
200
状态码通常表示请求已成功完成。 状态码
4xx
表明客户端存在错误,常见原因是请求参数不正确、缺少必要参数、API 密钥无效或账户权限不足。
5xx
状态码则代表服务器端出现问题,例如服务器过载、维护或出现未预期的内部错误。 客户端应妥善处理此类错误,并重试请求(若适用),或联系 KuCoin 技术支持。
除了 HTTP 状态码,KuCoin API 响应内容通常会包含一个
code
字段和一个
msg
字段,以提供更详细的错误信息。
code
字段是一个预定义的错误代码,方便程序进行自动化错误处理。
msg
字段则是一个人类可读的错误描述,有助于开发者快速理解错误的原因。开发者应仔细阅读 KuCoin API 文档,深入了解各个错误代码的含义,并针对不同的错误情况编写健壮的错误处理代码,包括记录错误日志、向用户显示友好的错误提示信息,以及自动重试请求等策略。 例如,遇到速率限制错误(通常由特定的
code
值指示)时,可以暂停一段时间再重试。 当遇到权限不足错误时,应提醒用户检查 API 密钥的权限设置。
速率限制
为了保障 KuCoin API 的稳定性和可用性,我们实施了速率限制策略。速率限制旨在防止恶意攻击、滥用以及过度请求对服务器造成的压力,确保所有用户都能获得公平且高效的服务。开发者务必严格遵守这些速率限制,优化请求频率和逻辑,以避免触发限制,影响应用程序的正常运行。
开发者应仔细阅读并理解 KuCoin API 文档中关于不同 API 接口的详细速率限制说明。不同的 API 接口由于其功能复杂度和服务器资源消耗的不同,可能具有不同的速率限制阈值。例如,交易相关的 API 接口通常具有比查询市场数据的 API 接口更严格的速率限制。 忽视或违反速率限制可能导致您的 API 密钥被暂时禁用,从而中断您的交易或数据获取活动。
KuCoin API 通过 HTTP 响应头提供实时的速率限制信息,方便开发者监控和调整其请求行为。以下是几个关键的响应头字段:
-
X-RateLimit-Limit
: 表示在指定时间窗口内允许的最大请求数量。 -
X-RateLimit-Remaining
: 表示当前时间窗口内剩余的可用请求数量。 -
X-RateLimit-Reset
: 表示速率限制重置的剩余时间,通常以 Unix 时间戳或秒为单位。
开发者应该充分利用这些响应头信息,动态调整请求频率,实现平滑且高效的 API 调用。例如,当
X-RateLimit-Remaining
接近零时,应暂停发送新的请求,直到
X-RateLimit-Reset
指示的时间到达,速率限制重置后,再继续发送请求。通过这种方式,可以避免触发速率限制,确保应用程序的稳定性和可靠性。