错误代码
HTTP 状态码
所有 API 响应都返回标准 HTTP 状态码。将任何非 200 的响应视为错误。
| 代码 | 含义 | 处理方式 |
|---|---|---|
200 | 成功 | 解析响应体以获取数据 |
400 | 错误请求 — 参数无效或缺失 | 根据接口规范检查请求参数 |
401 | 未授权 — 凭证缺失或无效 | 验证 API key、nonce 时效性和签名 |
403 | 禁止访问 — 权限不足 | 检查您的 API key 是否具有所需的权限级别 |
404 | 未找到 — 资源不存在 | 验证接口路径和相关 ID |
405 | 方法不允许 — HTTP 方法错误 | 使用正确的方法(GET/POST/PUT/DELETE) |
408 | 请求超时 — 超过 30 秒 | 重试一次;如持续出现,请检查服务器状态 |
429 | 请求过多 — 超出速率限制 | 退避并在 Retry-After 请求头值之后重试 |
451 | 因法律原因不可用 — 账户被封禁 | 联系支持团队 |
500 | 服务器内部错误 | 使用退避策略重试;如持续出现请报告 |
错误响应格式
非 200 的响应返回 JSON 体:
{
"status": 400,
"error": "Bad Request",
"code": 301,
"message": "Invalid order size"
}
| 字段 | 说明 |
|---|---|
status | HTTP 状态码 |
error | HTTP 状态文本 |
code | 内部错误代码(见下方 API 状态枚举) |
message | 人类可读的错误描述 |
处理 429(速率限制)
被限流时,响应中包含 Retry-After 请求头,其值为可恢复请求的 UTC 时间戳:
HTTP/1.1 429 Too Many Requests
Retry-After: 1624990500000
策略: 解析 Retry-After 值,等待至该时间后恢复请求。不要立即重试 — 重复违规将触发逐级加重的封禁(1 秒 → 5 分钟 → 15 分钟)。参见身份验证 → 速率限制。
处理 401(未授权)
常见原因:
- nonce 错误 — nonce 必须是当前 UTC 时间(毫秒)。时钟偏差超过几秒将导致拒绝。
- 签名错误 — 签名输入为
path + nonce + body,中间没有分隔符。请验证拼接方式。 - 请求头名称错误 — 使用
request-api、request-nonce、request-sign(不是btse-api等) - 请求体不匹配 — 签名的请求体必须与发送的请求体完全一致。如果您的编程语言会重新排序 JSON 键,请注意检查。
API 状态枚举
内部数值状态码出现在订单和 WebSocket 响应负载中。
| 代码 | 常量 | 说明 |
|---|---|---|
-2 | INVALID_REQUEST | 请求参数无效(例如未知交易对、walletName 格式错误) |
-1 | TIMEOUT | 请求超时 — 请单独查询订单状态 |
1 | MARKET_UNAVAILABLE | 期货市场不可用 |
2 | ORDER_INSERTED | 订单已成功插入 |
4 | ORDER_FULLY_TRANSACTED | 订单完全成交 |
5 | ORDER_PARTIALLY_TRANSACTED | 订单部分成交 |
6 | ORDER_CANCELLED | 订单已成功取消 |
7 | ORDER_REFUNDED | 订单已退款 |
8 | INSUFFICIENT_BALANCE | 账户余额不足 |
9 | TRIGGER_INSERTED | 触发订单已成功插入 |
10 | TRIGGER_ACTIVATED | 触发订单已激活 |
11 | ERROR_INVALID_CURRENCY | 指定的货币无效 |
12 | ERROR_UPDATE_RISK_LIMIT | 更新风险限额时出错 |
13 | ERROR_INVALID_LEVERAGE | 杠杆值无效 |
15 | ORDER_REJECTED | 订单被拒绝 |
16 | ORDER_NOTFOUND | 通过提供的 orderID 或 clOrderID 未找到订单 |
17 | REQUEST_FAILED | 请求失败 — 请验证订单状态 |
20 | SUCCESS | 操作成功完成 |
21 | FREEZE_SUCCESSFUL | 冻结操作成功 |
27 | TRANSFER_SUCCESSFUL | 期货与现货之间的资金转账成功 |
28 | TRANSFER_UNSUCCESSFUL | 现货与期货之间的转账失败 |
29 | QUERY_GET_ORDERS | — |
31 | QUERY_GET_POSITIONS | — |
33 | QUERY_GET_ALL_POSITIONS_ORDERS | — |
34 | QUERY_WALLET | — |
36 | QUERY_FUTURES_MARGIN | — |
41 | ERROR_INVALID_RISK_LIMIT | 指定的风险限额无效 |
51 | QUERY_GET_ORDERS_WITH_LIMIT | — |
64 | STATUS_LIQUIDATION | 账户正在清算中 |
65 | STATUS_ACTIVE | 订单处于活跃状态 |
66 | MODE_BUY | 买方 |
76 | ORDER_TYPE_LIMIT | 限价单 |
77 | ORDER_TYPE_MARKET | 市价单 |
80 | ORDER_TYPE_PEG | Peg / 算法订单 |
81 | ORDER_TYPE_OTC | OTC 订单 |
83 | MODE_SELL | 卖方 |
85 | STATUS_PROCESSING | 订单处理中 |
88 | STATUS_INACTIVE | 订单处于非活跃状态 |
101 | FUTURES_ORDER_PRICE_OUTSIDE_LIQUIDATION_PRICE | 期货订单价格超出清算价格 |
110 | FUTURES_FUNDING | 期货资金费率事件 |
123 | AMEND_ORDER | 订单已成功修改 |
124 | UNFREEZE_SUCCESSFUL | 解冻操作成功 |
300 | ERROR_MAX_ORDER_SIZE_EXCEEDED | 订单数量超出允许的最大值 |
301 | ERROR_INVALID_ORDER_SIZE | 订单数量无效 |
302 | ERROR_INVALID_ORDER_PRICE | 订单价格无效 |
303 | ERROR_RATE_LIMITS_EXCEEDED | 超出速率限制 |
304 | ERROR_MAX_OPEN_ORDER_EXCEEDED | 超出最大挂单数量 |
1003 | ORDER_LIQUIDATION | 订单正在清算中 |
1004 | ORDER_ADL | 订单正在自动减仓(ADL) |
30410 | BLOCK_TRADE_COMPLETE_SUCCESS | 大宗交易已成功完成 |