# Instruments Channel

### Description

Push trading parameter and trading pair status changes for a product. When trading parameters change (e.g. limit price ratio, price protection, order price/quantity precision, etc.) or the trading pair status changes (e.g. listed, online, maintenance, etc.), this channel pushes a message containing the new values.

After subscribing, messages are pushed only when trading parameters change. It is recommended to first fetch the full information via REST, then subscribe to this channel to receive subsequent changes.

<div className="api-aligning">

```json title="Request Example"
{
    "op": "subscribe",
    "args": [
        {
            "instType": "usdt-futures",
            "topic": "instruments"
        }
    ]
}
```

### Request Parameters

| Parameters    | Type               | Required | Description                                                                                                                                |
|---------------|--------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------|
| op            | String             | Yes      | Operation <br/> `subscribe` Subscribe <br/> `unsubscribe` Unsubscribe                                                                      |
| args          | List&lt;Object&gt; | Yes      | Subscribed channel                                                                                                                         |
| &gt; instType | String             | Yes      | Product type<br/>`spot` Spot trading<br/>`usdt-futures` USDT futures <br/> `coin-futures` Coin-M futures <br/> `usdc-futures` USDC futures |
| &gt; topic    | String             | Yes      | Topic <br/> `instruments` Instruments channel                                                                                              |

</div>

<div className="api-br-10"></div>

<div className="api-aligning">

```json title="Response Example"
{
  "event": "subscribe",
  "arg": {
    "instType": "usdt-futures",
    "topic": "instruments"
  },
  "connId": "xxxxxxxxxx"
}
```

### Response Parameters

| Parameters    | Type   | Description                                                                                                                                |
|---------------|--------|----------------------------------------------------------------------------------------------------------------------------------------------|
| event         | String | Event                                                                                                                                      |
| arg           | Object | Subscribed channel                                                                                                                         |
| &gt; instType | String | Product type<br/>`spot` Spot trading<br/>`usdt-futures` USDT futures <br/> `coin-futures` Coin-M futures <br/> `usdc-futures` USDC futures |
| &gt; topic    | String | Topic <br/> `instruments` Instruments channel                                                                                              |
| code          | String | Error code                                                                                                                                 |
| msg           | String | Error message                                                                                                                              |
| connId        | String | Connection ID                                                                                                                              |

</div>

<div className="api-br-10"></div>

<div className="api-aligning">

```json title="Push Data"
{
  "data": [
    {
      "baseCoin": "BTC",
      "quoteCoin": "USDT",
      "buyLimitPriceRatio": "0.05",
      "sellLimitPriceRatio": "0.05",
      "marketPriceRatio": "0.05",
      "priceProtectThreshold": "0.1",
      "feeRateUpRatio": "0.01",
      "openCostUpRatio": "0.01",
      "minOrderQty": "0.001",
      "maxOrderQty": "1000",
      "minOrderAmount": "5",
      "maxMarketOrderQty": "500",
      "pricePrecision": "2",
      "quantityPrecision": "3",
      "quotePrecision": "4",
      "priceMultiplier": "0.01",
      "quantityMultiplier": "0.001",
      "type": "perpetual",
      "status": "online",
      "openTime": "1700000000000",
      "offTime": "",
      "limitOpenTime": ""
    }
  ],
  "arg": {
    "instType": "usdt-futures",
    "topic": "instruments"
  },
  "action": "snapshot",
  "ts": 1736371332162
}
```

### Push Parameters

| Parameters    | Parameter Type     | Description                                                                                                                                |
|---------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| arg           | Object             | Subscribed channel                                                                                                                         |
| &gt; instType | String             | Product type<br/>`spot` Spot trading<br/>`usdt-futures` USDT futures <br/> `coin-futures` Coin-M futures <br/> `usdc-futures` USDC futures |
| &gt; topic    | String             | Topic <br/> `instruments` Instruments channel                                                                                              |
| action        | String             | Data push action <br/> `snapshot` Full data <br/> `update` Incremental data                                                                 |
| data          | List&lt;Object&gt; | Subscribed data                                                                                                                            |
| &gt; baseCoin | String             | Base coin <br/> e.g. `BTC` in `BTCUSDT`                                                                                                   |
| &gt; quoteCoin | String            | Quote coin <br/> e.g. `USDT` in `BTCUSDT`                                                                                                  |
| &gt; buyLimitPriceRatio | String  | Buy limit price ratio <br/> The ratio of the buy limit price to the market price, determining the highest allowed price for a buy order  |
| &gt; sellLimitPriceRatio | String | Sell limit price ratio <br/> The ratio of the sell limit price to the market price, determining the lowest allowed price for a sell order |
| &gt; marketPriceRatio | String     | Market order price ratio <br/> The ratio of the buy/sell market order price to the market price, determining the price range for market orders |
| &gt; priceProtectThreshold | String | Take-profit/stop-loss price protection threshold <br/> The maximum allowed deviation between the TP/SL trigger price and the latest/mark price <br/> Returned in decimal form, e.g. `0.1` represents 10% |
| &gt; feeRateUpRatio | String       | Fee rate markup ratio <br/> The percentage increase of the actual fee relative to the base fee                                           |
| &gt; openCostUpRatio | String      | Opening cost markup ratio <br/> The percentage increase of the position opening cost relative to the base/standard cost                  |
| &gt; minOrderQty | String          | Minimum limit order quantity <br/> The minimum order quantity allowed, denominated in the base coin                                      |
| &gt; maxOrderQty | String          | Maximum limit order quantity <br/> The maximum order quantity allowed, denominated in the base coin <br/> `0` means no limit              |
| &gt; minOrderAmount | String       | Minimum limit order amount <br/> The minimum order amount allowed, denominated in the quote coin                                         |
| &gt; maxMarketOrderQty | String    | Maximum market order quantity <br/> The maximum order quantity allowed for market orders, denominated in the base coin                   |
| &gt; pricePrecision | String       | Price precision <br/> The number of decimal places allowed for price <br/> The order price must be an integer multiple of the price precision |
| &gt; quantityPrecision | String     | Quantity precision <br/> The number of decimal places allowed for quantity <br/> The order quantity must be an integer multiple of the quantity precision |
| &gt; quotePrecision | String       | Quote order precision <br/> The number of decimal places allowed for the quote coin price                                               |
| &gt; priceMultiplier | String      | Price multiplier <br/> Used together with `pricePrecision`. For example, if `pricePrecision=2` and `priceMultiplier=0.01`, the order price must be a multiple of `priceMultiplier` with 2 decimal places |
| &gt; quantityMultiplier | String   | Quantity multiplier <br/> Used for futures orders together with `quantityPrecision`. For example, if `quantityPrecision=2` and `quantityMultiplier=0.01`, the order quantity must be a multiple of `quantityMultiplier` with 2 decimal places |
| &gt; type       | String          | Contract type <br/> `perpetual` Perpetual <br/> `delivery` Delivery                                                                       |
| &gt; status     | String          | Trading pair status <br/> `listed` Listed (not yet open) <br/> `online` Trading normally/open <br/> `limit_open` Opening disabled <br/> `limit_close` Closing disabled for futures, trading halted for spot <br/> `offline` Delisted/under maintenance |
| &gt; openTime   | String          | Opening time <br/> Unix millisecond timestamp                                                                                             |
| &gt; offTime    | String          | Trading halt time <br/> Returns `""` when not configured <br/> Futures only                                                              |
| &gt; limitOpenTime | String       | Opening restriction time <br/> A non-empty value indicates the symbol is or will be under maintenance, and trading will be disabled after this time <br/> Returns `""` when not configured |

</div>
