Channel Name Schema
{subaccount_id}.best.quotes
{subaccount_id}.best.quotesSubscribe to best quote state for a given subaccount ID.
This will notify the user about the best quote available for the RFQ they have sent.
Channel Parameters
|
subaccount_id
integer required Subaccount ID to get best quote state updates for |
Notification Data
|
channel
string required Subscribed channel name |
| data array of objects required |
|
data[].
rfq_id
string required RFQ ID for which the best quote is being published |
|
data[].
error
object or null Error if the the rfq_get_best_quote RPC call failed
|
| data[].error. code integer required |
| data[].error. message string required |
| data[].error. data string or null |
|
data[].
result
object or null Best quote result for the RFQ, if not an error |
|
data[].result.
best_quote
object or null required Best quote for the RFQ (or null if RFQ is not created yet or quotes do not exist). This object should be used to sign a taker quote and call into execute_quote RPC.
|
|
data[].result.best_quote.
cancel_reason
string required Cancel reason, if any enum user_request insufficient_margin signed_max_fee_too_low mmp_trigger cancel_on_disconnect session_key_deregistered subaccount_withdrawn rfq_no_longer_open compliance
|
|
data[].result.best_quote.
creation_timestamp
integer required Creation timestamp in ms since Unix epoch |
|
data[].result.best_quote.
direction
string required Quote direction enum buy sell
|
|
data[].result.best_quote.
fill_pct
string required Percentage of the RFQ that this quote would fill, from 0 to 1. |
|
data[].result.best_quote.
last_update_timestamp
integer required Last update timestamp in ms since Unix epoch |
|
data[].result.best_quote.
legs_hash
string required Hash of the legs of the best quote to be signed by the taker. |
|
data[].result.best_quote.
liquidity_role
string required Liquidity role enum maker taker
|
|
data[].result.best_quote.
quote_id
string required Quote ID |
|
data[].result.best_quote.
rfq_id
string required RFQ ID |
|
data[].result.best_quote.
status
string required Status enum open filled cancelled expired
|
|
data[].result.best_quote.
subaccount_id
integer required Subaccount ID |
|
data[].result.best_quote.
tx_hash
string or null required Blockchain transaction hash (only for executed quotes) |
|
data[].result.best_quote.
tx_status
string or null required Blockchain transaction status (only for executed quotes) enum requested pending settled reverted ignored timed_out
|
|
data[].result.best_quote.
wallet
string required Wallet address of the quote sender |
|
data[].result.best_quote.
legs
array of objects required Quote legs |
|
data[].result.best_quote.legs[].
amount
string required Amount in units of the base |
|
data[].result.best_quote.legs[].
direction
string required Leg direction enum buy sell
|
|
data[].result.best_quote.legs[].
instrument_name
string required Instrument name |
|
data[].result.best_quote.legs[].
price
string required Leg price |
|
data[].result.
direction
string required RFQ direction. enum buy sell
|
|
data[].result.
down_liquidation_price
string or null required Liquidation price if the trade were to be filled and the market moves down. |
|
data[].result.
estimated_fee
string required An estimate for how much the user will pay in fees ($ for the whole trade). |
|
data[].result.
estimated_realized_pnl
string required An estimate for the realized PnL of the trade. |
|
data[].result.
estimated_realized_pnl_excl_fees
string required An estimate for the realized PnL of the trade. with cost basis calculated without considering fees. |
|
data[].result.
estimated_total_cost
string required An estimate for the total $ cost of the trade. |
|
data[].result.
filled_pct
string required Percentage of the RFQ that has already been filled, from 0 to 1. |
|
data[].result.
invalid_reason
string or null required Reason for the RFQ being invalid, if any. enum Account is currently under maintenance margin requirements, trading is frozen. This order would cause account to fall under maintenance margin requirements. Insufficient buying power, only a single risk-reducing open order is allowed. Insufficient buying power, consider reducing order size. Insufficient buying power, consider reducing order size or canceling other orders. Consider canceling other limit orders or using IOC, FOK, or market orders. This order is risk-reducing, but if filled with other open orders, buying power might be insufficient. Insufficient buying power.
|
data[].result.
is_valid
boolean requiredTrue if RFQ is expected to pass margin requirements.
|
|
data[].result.
orderbook_total_cost
string or null required Total cost of the RFQ if it were to be filled at current orderbook prices (same direction as the RFQ). If lower than estimated_total_cost, the user may want to use the orderbook instead of RFQs for this order. Will return null if any of the legs do not have orderbook data or enough liquidity for the full fill.
|
|
data[].result.
post_initial_margin
string required User's hypothetical margin balance if the trade were to get executed. |
|
data[].result.
post_liquidation_price
string or null required Liquidation price if the trade were to be filled. If both upside and downside liquidation prices exist, returns the closest one to the current index price. |
|
data[].result.
pre_initial_margin
string required User's initial margin balance before the trade. |
|
data[].result.
suggested_max_fee
string required Recommended value for max_fee of the trade.
|
|
data[].result.
up_liquidation_price
string or null required Liquidation price if the trade were to be filled and the market moves up. |
Example
Subscriptions are only available via websockets.
{request_example_javascript}{request_example_python}Notification messages on this channel will look like this:
{response_example_json}