# 批量撤单

### 描述

:::tip

ACK 响应仅代表请求已被成功接收，请通过 [WebSocket 订单频道](/zh-CN/docs/uta/websocket/private/Order-Channel) 推送确认每笔撤单的实际状态。

:::

- 该接口支持通过 WebSocket 批量取消现货、合约、杠杆的未成交以及部分成交订单
- 每次请求最多支持撤销 20 笔
- 批量撤单允许部分成功。每笔订单独立处理——若某笔撤单失败，不影响同批次其他订单的撤销
- 在批量撤单操作中，请确保每次调用仅使用orderId或clientOid进行标识，避免混用。如果在一次调用中混合使用orderId和clientOid，则clientOid将失效
- **订单标识**：可通过 `orderId` 或 `clientOid` 识别订单。若两者同时传入，以 `orderId` 为准

注意：请检查响应 `args` 列表中每笔订单对应的 `code` 和 `msg` 字段，以确认每笔撤单的结果。若结果不明确，请使用 `clientOid` 或 `orderId` [查询订单详情](/zh-CN/docs/catalog/trading/order-management#get-order-details)。

<div className="api-aligning">

```json title="请求示例"
{
    "args": [
        {
            "orderId": "xxxxxxxx"
        },
        {
            "orderId": "xxxxxxxx"
        }
    ],
    "id": "xxxxx-xxx-xxx-xxxx-xxxxxx",
    "op": "trade",
    "topic": "batch-cancel"
}
```

### 请求参数

| 参数名            | 参数类型               | 是否必须 | 描述                                                                               | 
|:---------------|:-------------------|------|:---------------------------------------------------------------------------------|
| op             | String             | 是    | 操作: <br/> `trade` 交易                                                             |
| id             | String             | 是    | 请求标识                                                                             |
| topic          | String             | 是    | 频道名: <br/> `batch-cancel` 批量撤单                                                   |
| args           | List&lt;Object&gt; | 是    | 请求订阅的频道列表                                                                        |
| &gt; orderId   | String             | 否    | 订单ID<br/>`orderId`及`clientOid`二者必传其一<br/>如果两者都传，则`orderId`优先级更高，忽略`clientOid`    |
| &gt; clientOid | String             | 否    | 自定义订单ID<br/>输入规则：`^[0-9A-Za-z_:#\-+\s]{1,32}$`，即 1 到 32 个字符，由大小写字母、数字、下划线(_)、连字符(-)、加号(+)、冒号(:)、井号(#)和空格组成<br/>`orderId`及`clientOid`二者必传其一<br/>如果两者都传，则`orderId`优先级更高，忽略`clientOid` |

</div>


<div className="api-aligning">

```json title="响应示例"
{
  "event": "trade",
  "id": "bb553cc0-c1fa-454e-956d-c96c8d715760",
  "topic": "batch-cancel",
  "args": [
    {
      "code": "0",
      "msg": "Success",
      "orderId": "xxxxxxxxxxxxx",
      "clientOid": "xxxxxxxxxxxxx",
      "receiveTime": "1750034396998123",
      "pushTime": "1750034397076456"
    },
    {
      "code": "25204",
      "msg": "Order does not exist",
      "orderId": "xxxxxxxxxxxxx",
      "clientOid": "xxxxxxxxxxxxx",
      "receiveTime": "1750034396999456",
      "pushTime": "1750034397077789"
    }
  ],
  "code": "0",
  "msg": "Success",
  "connId": "xxxxxxxxxx",
  "rateLimit": [
    {
      "limit": "10",
      "remaining": "9"
    }
  ],
  "ts": "1751980011084"
}
```

### 响应参数说明

| 返回字段           | 参数类型               | 字段说明                              |
|:---------------|:-------------------|:----------------------------------|
| event          | String             | 事件<br/>`trade` 交易<br/>`error`参数错误 |
| id             | String             | 请求标识                              |
| topic          | String             | 频道名<br/>`batch-cancel` 批量撤单       |
| args           | List&lt;Object&gt; | 订单列表                              |
| &gt; code      | String             | 状态码                               |
| &gt; msg       | String             | 状态消息                              |
| &gt; orderId   | String             | 订单ID                              |
| &gt; clientOid | String             | 自定义订单ID                           |
| &gt; receiveTime | String           | 网关接收时间 <br/>Unix微秒时间戳             |
| &gt; pushTime  | String             | 网关推送时间 <br/>Unix微秒时间戳             |
| code           | String             | 状态码                               |
| msg            | String             | 状态消息                              |
| connId         | String             | 连接ID                              |
| rateLimit      | Array              | 限频余额数组                            |
| &gt; limit     | String             | 该维度限额                             |
| &gt; remaining | String             | 剩余可用次数                            |
| ts             | String             | 时间戳                               |

</div>

































