Skip to main content
Package: monaco.api.rfq Source: protos/api/rfq.proto Use RfqService for RFQ (block trades): a taker requests quotes for a size, makers quote privately, the taker accepts one side of the aggregated view, and the selected makers get a 250 ms last look before the trade settles.

Notes

  • Authentication and access: every RPC requires authentication. RFQ is available only to accounts it is enabled for; other callers are refused with PERMISSION_DENIED (RFQ_DISABLED on REST), GetRfqCapabilities included. For an account it is enabled for, GetRfqCapabilities returns the markets it is offered on with their minimum and maximum quantity, the timings, and your creation quota.
  • Units: prices are quote units per base unit, and capacities and quantities are base units, all as exact decimal strings.
  • Idempotency: every write takes an idempotency_key; a retry with the same key and body returns the first result.
  • Taker: CreateRfq opens an RFQ for up to quantity. Without side it is two-way, and makers never see your direction. GetRfq returns your current view (to wait for quotes, follow the RfqView pushes instead of polling it): per side the all-in VWAP (your Monaco and builder fees included), the available quantity, the fee breakdown, and optionally the same size priced on the public order book. Once the RFQ ends it also returns the outcome. AcceptRfq names a side and the view_version you saw: binding, and refused if the view has moved since. CancelRfq works only before you accept. ListRfqs lists your RFQs as the taker, newest first, in every state, paged by page_size (1–100, default 50) and page_token.
  • Maker: UpsertRfqQuote places or replaces your quote (a bid, an ask or both), naming expected_version: 0 for your first quote, then own_latest_version from GetRfq. validity_ms is 15000–60000 (default 60000), capped at the request deadline. A quote reserves funds as a resting limit order does. WithdrawRfqQuote withdraws it. Once selected, GetRfq returns your own_selection. RespondRfqLastLook rejects, or improves your frozen terms (a strictly better price or a higher capacity, never a lower one). It counts if it arrives by the 250 ms deadline; one arriving later is refused (RFQ_DEADLINE_PASSED; see last look). There is no accept: silence executes. After settlement, own_fills lists your own fills with the fees as charged.
  • Pushes: new RFQs to quote and last-look prompts arrive only on the authenticated rfq WebSocket channel (WebSocket reference); gRPC has no streaming RPC for them. A maker’s quotes depend on that connection: see Disconnects.
  • Public prints: RFQ fills print anonymously on the rfq_trades WebSocket channel and appear in the public trade reads tagged execution_source = RFQ, never on the order-book trades channel.