Read the Combos guide before integrating. It explains quote construction, visibility, last look, and recovery.
StreamRFQEvents is a gRPC server-side stream for live combo RFQ and quote changes.
Service Definition
- Service:
polymarket.v1.RFQAPI - RPC:
StreamRFQEvents - Type: Server-side streaming
- Required scope:
read:orders
StreamRFQEvents is gRPC-only. REST and unary gRPC operations are documented in the RFQ API Overview.
Rate Limit
Each firm can open one newStreamRFQEvents connection per second, with one open attempt of burst capacity. The limit is checked only when the stream opens; it does not throttle server-pushed events on an established stream. Reconnect with backoff after a disconnect.
Events
Each response contains exactly one event payload.
Successful quote acceptance produces both events: public
rfq_closed and participant-private quote_accepted. A client may receive rfq_closed first. Treat it as “stop quoting this RFQ,” not “no quote was accepted.” Keep existing quote state until the private quote event arrives, or reconcile it with GetQuotes.
The current public stream does not emit expiration, done-away, pending-risk, pending-end-trade, action-rejected, or status-rejected events.
Core Payloads
RFQ
Each
RFQComboLeg contains symbol, side, and an optional settlementPrice. The settlement is the raw YES/LONG price normalized to [0,1]; it is never inverted for a SIDE_SELL leg. Presence matters: "0" is a valid settled price, while an absent field means no valid settlement was available when the event was published.
rfq_created includes settlement prices available at creation. The stream does not emit a separate event when a leg later settles; use GetRFQs during reconciliation to obtain the latest available settlement projection. Historical RFQs can have no comboLegs.
Quote
The requester and quoter can both see both exchange order IDs on the embedded
Quote. Client order IDs are not part of durable Quote state.
Lifecycle-Specific Fields
These existing recipient-specific wrapper fields remain for compatibility. The embedded
Quote contains the durable execution timestamps and both participants’ exchange order IDs.
quote_executed reports successful paired order submission, not a fill. Reconcile the subsequent exchange order and fill lifecycle through Drop Copy.
Python Example
Delivery and Recovery
On startup:
- Open the stream.
- Read current RFQs with
GetRFQs. - Read the participant’s current quotes with
GetQuotes. - Apply subsequent events idempotently by RFQ or quote ID and
updatedTime.
GetQuotes is the durable recovery path for the current Quote execution state. An empty read collection is a valid snapshot.
Errors
See Also
Combos Guide
Maker workflow and quote rules
RFQ API
RFQ and quote REST and unary gRPC operations
gRPC Authentication
Metadata, tokens, and scopes
Drop Copy
Exchange order and fill reconciliation