Skip to main content
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
The request is empty and exposes no filters:
StreamRFQEvents is gRPC-only. REST and unary gRPC operations are documented in the RFQ API Overview.

Rate Limit

Each firm can open one new StreamRFQEvents 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:
  1. Open the stream.
  2. Read current RFQs with GetRFQs.
  3. Read the participant’s current quotes with GetQuotes.
  4. Apply subsequent events idempotently by RFQ or quote ID and updatedTime.
After a disconnect, reopen the stream and repeat both durable reads. If any stream event may have been missed, 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