Trading

trade-order-batch-cancel

Cancel multiple orders in a single request (Batch Order).

The same general rules as batch order placement apply (up to 50 orders, all-or-nothing validation, 30-second replay window, idempotency by batchRequestId, signature over the entire body). Each order in orders follows the same rules as the single-order API trade-order-cancel (the order is identified by clientRequestId or orderId).

Required scope: trading:order:delete.

DELETE
/api/v3/trading/order/batch

Authorization

Bearer
AuthorizationBearer <token>

Enter the JWT token in the format Bearer <token>.

In: header

Header Parameters

Content-Typestringrequired

The format of the request body content. Primarily application/json.

User-Agentstringoptional

Information about the client sending the request.

Accept-Languagestringoptional

The desired response language. If this header is absent, the system will default to en

X-Signaturestringrequired

The HMAC-SHA256 signature used to verify the integrity of the request.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

bodyobjectrequired
batchRequestIdstringrequired

Batch identifier created by the client. Must be unique per API Key and per action (place/cancel) within a day. Used as the idempotency key.

batchRequestTimeintegerrequired

The time the client created the batch, in epoch milliseconds (UTC). Must be within 30 seconds of server time.

ordersarrayrequired

List of orders to cancel, up to 50. Each element has the same structure as the single-order cancellation request.

orders[]objectrequired
clientCancelIdstring | nulloptional

An order-cancellation identifier created by the client, used for reconciliation in subsequent responses. This field is optional, but if provided it should be unique to avoid confusion when processing responses. When left empty, the system will automatically generate an order-cancellation identifier for the customer and return it in the response & streaming.

clientRequestIdstring | nulloptional

The original order identifier created by the client when placing the order. When left empty, the system will not reconcile based on the original order identifier but will instead use `orderId` to determine the order to cancel.

orderIdstring | nulloptional

The original order identifier generated by the SSI system. This is one of two fields (together with `clientRequestId`) used to identify the order to cancel. If both fields have values, the system will prioritize reconciliation based on `clientRequestId`. If only `orderId` has a value, the system will reconcile based on `orderId`. If neither field has a value, the cancellation request will be rejected due to insufficient information to identify the order to cancel.

accountNostringrequired

The trading account number.

deviceIdstringrequired

The identifier of the device sending the order-cancellation request. Typically the device's MAC address or IMEI.

userAgentstring | nulloptional

Information about the browser or application sending the order-cancellation request.

ipAddressstring | nulloptional

The IP address of the device sending the order-cancellation request.

Response Headers

X-RATELIMIT-LIMITstringoptional

The request limit within the cycle.

X-RATELIMIT-REMAININGstringoptional

The number of requests remaining in the current cycle.

X-RATELIMIT-RESETstringoptional

The time at which the request limit resets.

Response Body

application/json

application/json

curl -X DELETE "https://api.ssi.com.vn/api/v3/trading/order/batch" \  -H "Content-Type: application/json" \  -H "X-Signature: sha256=abc123..." \  -H "Content-Type: application/json" \  -d '{    "batchRequestId": "string",    "batchRequestTime": 1760400000000,    "orders": [      {        "accountNo": "string",        "deviceId": "string"      }    ]  }'

The request is valid and has been processed. The outcome of each order is in results.

{
  "batchRequestId": "string",
  "results": [
    {
      "clientRequestId": "string",
      "clientCancelId": "string",
      "orderId": "string",
      "orderStatus": "string",
      "success": true,
      "errorCode": "string",
      "errorMessage": "string"
    }
  ]
}

Invalid request.

{
  "code": "400",
  "msg": "Invalid request"
}