Overview
Block RFQ enables institutional traders to:- Request quotes for large block trades
- Receive competitive quotes from multiple market makers
- Execute trades at negotiated prices
- Manage allocations across multiple accounts
- Taker: The user who creates the RFQ and requests quotes
- Maker: The market maker who provides quotes in response to RFQs
Prerequisites
Before using the Block RFQ API, ensure you have:-
API Access: An API key with appropriate scopes:
block_rfq:read- Read-only access to Block RFQ information, quotes, and available makersblock_rfq:read_write- Full access to create and quote Block RFQs
- Account Setup: Your account must be configured for Block RFQ trading
Block RFQ Workflow
1. Creating a Block RFQ (Taker)
The taker creates a Block RFQ using theprivate/create_block_rfq method. This method allows you to:
- Specify the instruments and quantities for each leg of the trade
- Set optional hedge legs
- Target specific makers or make it available to all makers
- Add a label for identification
- Configure pre-allocation across multiple accounts
legs: Array of trade legs, each specifying instrument, amount, and sidemakers: Optional list of specific maker aliases to target (omit for all makers)label: Optional user-defined label (max 64 characters)trade_allocations: Optional pre-allocation across accountshedge: Optional hedge leg configurationdisclosed: Whether the RFQ is non-anonymous (taker and maker aliases visible)
2. Receiving RFQ Notifications (Maker)
Makers receive notifications about new Block RFQs through WebSocket subscriptions:block_rfq.maker.{currency}- Notifications when new Block RFQs are createdblock_rfq.maker.quotes.{currency}- Notifications about the state of your quotes
3. Adding Quotes (Maker)
Makers respond to Block RFQs by adding quotes usingprivate/add_block_rfq_quote:
- Add multiple quotes per RFQ
- Edit existing quotes using
private/edit_block_rfq_quote - Cancel individual quotes using
private/cancel_block_rfq_quote - Cancel all quotes using
private/cancel_all_block_rfq_quotes
4. Viewing RFQ State (Taker)
Takers can monitor their Block RFQs using:private/get_block_rfqs- List all Block RFQs (as taker or maker)private/get_block_rfq_quotes- View all quotes for a specific Block RFQ
5. Accepting Quotes (Taker)
Once the taker has reviewed the quotes, they can accept a Block RFQ usingprivate/accept_block_rfq:
6. Canceling Block RFQs
Both takers and makers can cancel Block RFQs:- Taker: Use
private/cancel_block_rfqto cancel their own RFQ - Maker: Quotes are automatically canceled when the RFQ is filled, expired, or canceled
Block RFQ States
Block RFQs can be in one of the following states:open- The RFQ is active and accepting quotesfilled- The RFQ has been accepted and executedcancelled- The RFQ was canceled by the takerexpired- The RFQ expired without being filled
Pre-Allocation
Block RFQ supports pre-allocation, allowing takers to split the total amount between different (sub)accounts. Each allocation must specify:user_id(for direct allocation) orclient_info(for broker allocation)amount- The allocated amountfee- Optional fee for the allocation
Market Maker Protection (MMP)
Block RFQ supports Market Maker Protection (MMP) to prevent quote manipulation. MMP can be configured separately for Block RFQ quoting and operates independently from normal order/quote MMP triggers. See Market Maker Protection for more details on configuring MMP for Block RFQ.Subscriptions
Block RFQ provides several WebSocket subscription channels:For Makers
block_rfq.maker.{currency}- New Block RFQ notificationsblock_rfq.maker.quotes.{currency}- Quote state notifications
For Takers
block_rfq.taker.{currency}- Block RFQ state notifications (includes trades if filled)
Public
block_rfq.trades.{currency}- Recent Block RFQ trade notifications
Rate Limits
The following Block RFQ methods have specific rate limits:private/add_block_rfq_quoteprivate/edit_block_rfq_quoteprivate/cancel_block_rfq_quoteprivate/cancel_all_block_rfq_quotes
Error Handling
Common Block RFQ errors include:too_many_quotes_per_block_rfq- Number of quotes for single block RFQ exceededtoo_many_quotes_per_block_rfq_side- Number of quotes per single block RFQ side exceededtoo_many_open_block_rfqs- Number of open block RFQs by taker exceeds configured max amountaccount_quote_limit_crossed- Block RFQ quote limits set for the account were crossedinverse_future_cross_trading- Placed block RFQ quote would cross trade inverse futures with block RFQ quote limits
Best Practices
- Monitor Subscriptions: Subscribe to relevant Block RFQ channels to receive real-time updates
- Quote Management: Regularly review and update your quotes to remain competitive
- Error Handling: Implement proper error handling for rate limits and validation errors
- Pre-Allocation: Use pre-allocation to efficiently distribute large trades across accounts
- MMP Configuration: Configure MMP appropriately to protect against quote manipulation