Block Trades

The block trades API contains private endpoints for querying, submitting, and confirming block trades. It requires a Base64-encoded SHA256 HMAC signature as defined in Authentication.

For more information on block trades, see Block Trades. For specifics on the status of a block trade, see Block Trade Statuses.

Querying Block Trades

HTTP MethodEndpoint
GET/block-trades

The endpoint supports the following query parameters:

ParameterNotes
symbolFilter by product symbol, only works in production
product_idFilter by product ID, only works in production
product_typeFilter by product type, only works in production
clearing_firm_codeFilter by clearing firm code, only works in production
account_idFilter by account code, only works in production
connection_idFilter by connection ID, only works in production
statusBlock trade status filter
dayGet range for day, overrides begin_time and end_time
limitLimit number of block trades per page
begin_timeBegin time for block trade execution time range, see Time for more details
end_timeEnd time for block trade execution time range, see Time for more details
orderPage order, either asc or desc
cursorCursor string for paginated query

The endpoint returns a pagination response of the type Pagination<BlockTrade, CursorInfo>. More details on paginated APIs can be found in Pagination. BlockTrade is defined as follows:

export interface BlockTrade {
  account_id: string;
  block_trade_id: number;
  counterparty_id: string;
  counterparty_email: string | null;
  symbol: string;
  side: Side;
  price: number;
  product_id: number;
  quantity: number;
  exec_time: string;
  report_time: string;
  status: BlockTradeStatus;
  status_reason: string | null;
  status_time: string | null;
}

export type BlockTradeStatus = 'Pending' | 'Canceled' | 'Rejected' | 'Confirmed' | 'Accepted';

Submitting a Block Trade

HTTP MethodEndpoint
POST/block-trades

Submits a new block trade as the leader. The block trade is created in Pending status and must be confirmed by the counterparty via the confirmation endpoint before it is submitted to the exchange.

The endpoint supports the following query parameters:

ParameterOptionalityNotes
account_idrequiredAccount code of the leader's clearing account
short_namerequiredShort clearing member name of the leader's clearing account

The request body is a NewBlockTrade, defined as follows:

export interface NewBlockTrade {
  leader_block_trader_id: string | null;
  counterparty_block_trader_id: string;
  product_id: number;
  side: Side;
  price: number;
  quantity: number;
  cti: CustomerTypeIndicator;
  execution_time: string;
}

export type Side = 'Bid' | 'Ask';

export type CustomerTypeIndicator = 1 | 2 | 3 | 4;
FieldOptionalityNotes
leader_block_trader_idoptionalBlock trader ID of the leader. Required when authenticating with an organization connection; derived from the connection for user connections (must match the connection's block trader if supplied)
counterparty_block_trader_idrequiredBlock trader ID of the counterparty (follower)
product_idrequiredProduct ID of the traded product
siderequiredSide of the leader; the counterparty takes the opposite side
pricerequiredAgreed price of the block trade
quantityrequiredQuantity of the block trade, must be positive
ctirequiredCustomer Type Indicator of the leader
execution_timerequiredTime the trade was agreed upon, see Time for more details

On success, the endpoint returns a BlockTradeCreated with status Pending:

export interface BlockTradeCreated {
  block_trade_id: number;
  status: BlockTradeStatus;
}

Example request body:

{
  "leader_block_trader_id": "7f5124f5-bce2-37ce-7457-9f9597c4ec7d",
  "counterparty_block_trader_id": "d994c300-05f8-3207-61aa-08101f12e061",
  "product_id": 5,
  "side": "Ask",
  "price": 9,
  "quantity": 41,
  "cti": 4,
  "execution_time": "2021-01-25T00:00:37Z"
}

Example response:

{
  "block_trade_id": 5,
  "status": "Pending"
}

Confirming a Block Trade

HTTP MethodEndpoint
POST/block-trades/{block_trade_id}/confirmation

Confirms a pending block trade as the counterparty (follower). The block_trade_id path parameter is the ID returned when the block trade was submitted. On confirmation, the block trade is submitted to the exchange for acceptance.

The endpoint supports the following query parameters:

ParameterOptionalityNotes
account_idrequiredAccount code of the follower's clearing account
short_namerequiredShort clearing member name of the follower's clearing account

The request body is a ConfirmBlockTrade, defined as follows:

export interface ConfirmBlockTrade {
  follower_block_trader_id: string | null;
  cti: CustomerTypeIndicator;
}
FieldOptionalityNotes
follower_block_trader_idoptionalBlock trader ID of the follower. Required when authenticating with an organization connection; derived from the connection for user connections (must match the connection's block trader if supplied)
ctirequiredCustomer Type Indicator of the follower

On success, the endpoint returns a BlockTradeConfirmation with status Accepted:

export interface BlockTradeConfirmation {
  block_trade_id: number;
  ack_id: string;
  status: BlockTradeStatus;
}

Example request body:

{
  "follower_block_trader_id": "5bfa46c8-cb39-b041-81e0-d2d6f079f6eb",
  "cti": 2
}

Example response:

{
  "block_trade_id": 5,
  "ack_id": "322",
  "status": "Accepted"
}

Start Trading

Leveraged spot, perpetuals, futures, options, and prediction markets, all on one CFTC-regulated exchange with crypto margin and settlement.