Create Trade
Execute a trade on a Block RFQ via WebSocket. For taker use only.
Request Path And Method
wss path:
/ws/private
method:
block/rfqs/trade
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| blockRfqId | string | true | ID of the Block RFQ |
| price | string | true | Maximum acceptable price for execution |
| quantity | string | true | The size of the Quote, denominated in the clearingCurrency of the RFQ |
| side | string | true | The direction of the Quote |
| timeInForce | string | true | Specifies how long the order should remain active. Valid values: fill_or_kill, good_til_cancelled |
| legs | array | true | List of legs used to trade Block RFQ |
| > instrumentName | string | true | Instrument name |
| > side | string | true | The direction of the composite leg relative to the RFQ |
| > ratio | string | true | The relative multiplier applied to the quantity of the Instrument's amount relative to the amount of the RFQ. Maximum of 2 decimal places |
| hedge | object | false | Hedge leg information |
| > instrumentName | string | true | Instrument name |
| > price | string | true | Hedge leg price |
| > quantity | string | true | It represents the requested trade size. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin |
| > side | string | true | Direction of selected leg. Must match the direction of the corresponding leg in the Block RFQ |
Request Example
{
"rid": 10,
"method": "block/rfqs/trade",
"params": {
"blockRfqId": "253191",
"quantity": "25.0",
"price": "0.2",
"side": "sell",
"timeInForce": "fill_or_kill",
"legs": [
{
"instrumentName": "BTC-26JUN26-200000-C",
"side": "buy",
"ratio": "1"
}
],
"hedge": null
}
}
Response Message
| Name | Type | Description |
|---|---|---|
| rid | string | Request ID |
| result | object | Result object containing trade results |
| > results | array | Array of trade result objects |
| >> blockTradeId | string | Block trade id |
| >> timestamp | long | The timestamp (milliseconds since the Unix epoch) |
| >> trades | array | Array of trade detail objects |
| >>> tradeId | string | Unique (per currency) trade identifier |
| >>> tickDirection | integer | Direction of the "tick" (0 = Plus Tick, 1 = Zero-Plus Tick, 2 = Minus Tick, 3 = Zero-Minus Tick) |
| >>> feeCurrency | string | Currency, i.e "BTC", "ETH", "USDC" |
| >>> api | boolean | true if user order was created with API |
| >>> advanced | string | Advanced type of user order: "usd" or "implv" (only for options; omitted if not applicable) |
| >>> orderId | string | Id of the user order (maker or taker), i.e. subscriber's order id that took part in the trade |
| >>> liquidity | string | Describes what was role of users order: "M" when it was maker order, "T" when it was taker order |
| >>> postOnly | boolean | true if user order is post-only |
| >>> side | string | Valid values: buy, sell |
| >>> contracts | string | Trade size in contract units (optional, may be absent in historical trades) |
| >>> mmp | boolean | true if user order is MMP |
| >>> fee | string | User's fee in units of the specified feeCurrency |
| >>> quoteId | string | QuoteID of the user order (optional) |
| >>> indexPrice | string | Index Price at the moment of trade |
| >>> label | string | User defined label (presented only when previously set for order by user) |
| >>> blockTradeId | string | Block trade id - when trade was part of a block trade |
| >>> price | string | Price in base currency |
| >>> comboId | string | Optional field containing combo instrument name if the trade is a combo trade |
| >>> orderType | string | Order type: "limit", "market", or "liquidation" |
| >>> profitLoss | string | Profit and loss in base currency |
| >>> timestamp | long | The timestamp of the trade (milliseconds since the UNIX epoch) |
| >>> iv | string | Option implied volatility for the price (Option only) |
| >>> status | string | Order state: "open", "filled", "rejected", "cancelled", "untriggered" or "archive" (if order was archived) |
| >>> underlyingPrice | string | Underlying price for implied volatility calculations (Options only) |
| >>> blockRfqQuoteId | string | ID of the Block RFQ quote - when trade was part of the Block RFQ |
| >>> quoteSetId | string | QuoteSet of the user order (optional) |
| >>> markPrice | string | Mark Price at the moment of trade |
| >>> blockRfqId | string | ID of the Block RFQ |
| >>> comboTradeId | string | Optional field containing combo trade identifier if the trade is a combo trade |
| >>> reduceOnly | boolean | true if user order is reduce-only |
| >>> quantity | string | Trade amount. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin |
| >>> liquidation | string | Optional field (only for trades caused by liquidation): "M" when maker side of trade was under liquidation, "T" when taker side was under liquidation, "MT" when both sides of trade were under liquidation |
| >>> tradeSeq | integer | The sequence number of the trade within instrument |
| >>> riskReducing | boolean | true if user order is marked by the platform as a risk reducing order (can apply only to orders placed by PM users) |
| >>> instrumentName | string | Unique instrument identifier |
Response Example
{
"rid": 10,
"result": {
"results": [
{
"blockTradeId": "BLOCK-791446",
"timestamp": 1755156907986,
"trades": [
{
"tradeId": "202981761",
"tickDirection": 0,
"feeCurrency": "BTC",
"api": true,
"orderId": "58578977647",
"liquidity": "T",
"postOnly": false,
"side": "sell",
"contracts": "25.0",
"mmp": false,
"fee": "0.00375",
"indexPrice": "121706.06",
"blockTradeId": "BLOCK-791446",
"price": "0.2",
"orderType": "limit",
"profitLoss": "0.0",
"timestamp": 1755156907985,
"iv": "91.53",
"status": "filled",
"underlyingPrice": "131088.26",
"markPrice": "0.12462113",
"blockRfqId": "253191",
"reduceOnly": false,
"quantity": "25.0",
"tradeSeq": 11,
"riskReducing": false,
"instrumentName": "BTC-26JUN26-200000-C"
}
]
}
]
}
}