Skip to main content
GET
/
v1
/
mm
/
quote-requests
/
stream
curl -N https://api.convallax.com/v1/mm/quote-requests/stream \
  -H "X-API-Key: mk_live_alpha_xxx"
event: connected
data: {"makerId":"mm-alpha","serverTime":"2026-06-15T12:00:00.000Z"}

event: snapshot_begin
data: {}

event: snapshot_complete
data: {}

event: quote_request
id: 1043
data: {"requestId":"req-789","expiresAt":"2026-06-15T12:05:00.000Z","params":{"wallet":"0xTrader...","market":{"conditionId":"0xa4ddc188...","yesTokenId":"51508280778...","question":"Will there be a Hantavirus outbreak in 2026?"},"option":{"optionType":"call","strikeBps":50,"expiryMs":1735689600000},"trade":{"side":"buy","budgetUsd":100}}}

event: quote_request_expired
data: {"requestId":"req-789"}
Subscribe to the maker quote-request stream over Server-Sent Events. This is channel 1 of the three-channel maker transport — it pushes a connected event, an initial snapshot of open requests, and then live quote_request / quote_request_expired events. See the Quote Request Stream guide for the full walkthrough. The response has Content-Type: text/event-stream. Use the browser EventSource API or any SSE-capable client.

Authentication

Provide your per-MM API key in the X-API-Key header:
X-API-Key: <your-key>
If your client cannot set custom headers, pass ?apiKey=<your-key> as a query parameter instead.

Headers

X-API-Key
string
required
Your per-MM API key (or pass ?apiKey= as a query parameter).
Last-Event-ID
string
The last SSE event id you processed. On reconnect, the server replays events after this id if they are still in the buffer; otherwise it falls back to a fresh snapshot. The browser EventSource API sets this automatically.

Events

connected
event
Sent once on connect. Data: { "makerId": "mm-alpha", "serverTime": "<iso>" }.
snapshot_begin
event
Marks the start of the initial snapshot of open requests. Data: {}.
quote_request
event
A new (or replayed/snapshot) quote request. Each carries an SSE id: (monotonic integer). Data contains requestId, expiresAt, and params (wallet, market, option, trade).
snapshot_complete
event
Marks the end of the initial snapshot. Data: {}. Live events follow.
quote_request_expired
event
A request closed (committed, expired, or cancelled). Data: { "requestId": "req-789" }.

quote_request Data Fields

FieldTypeDescription
requestIdstringUnique ID for this quote request — use it when you POST /v1/mm/quotes
expiresAtstringISO 8601 expiry time for the quote request (default 5 min TTL)
params.walletstringTaker wallet address (may be null if not yet provided)
params.market.conditionIdstringPolymarket condition ID (bytes32)
params.market.yesTokenIdstringPolymarket YES CLOB token ID
params.market.questionstringHuman-readable market question
params.option.optionTypestring/number"call" or "put" (or 0/1)
params.option.strikeBpsnumberStrike in basis points of $1
params.option.expiryMsnumberOption expiry (Unix ms)
params.trade.sidestring"buy" or "sell" (taker’s side)
params.trade.budgetUsdnumberBuys only. USDC the taker will spend (their premium budget). The fill is floor(budgetUsd / yourPrice) whole options, capped by your quoted size.
params.trade.sizenumberSells only. Number of whole options the taker wants to write.
On a buy, the taker enters a USDC amount, not a contract count — so the request carries trade.budgetUsd and no trade.size. You quote a per-option price; the number of options the taker receives is floor(budgetUsd / price). Size your collateral accordingly: floor(budgetUsd / price) × (1 − K) for a call, × K for a put.
Keep-alive: the server sends SSE comment lines (: ping) about every 25 seconds. SSE clients ignore them automatically.
curl -N https://api.convallax.com/v1/mm/quote-requests/stream \
  -H "X-API-Key: mk_live_alpha_xxx"
event: connected
data: {"makerId":"mm-alpha","serverTime":"2026-06-15T12:00:00.000Z"}

event: snapshot_begin
data: {}

event: snapshot_complete
data: {}

event: quote_request
id: 1043
data: {"requestId":"req-789","expiresAt":"2026-06-15T12:05:00.000Z","params":{"wallet":"0xTrader...","market":{"conditionId":"0xa4ddc188...","yesTokenId":"51508280778...","question":"Will there be a Hantavirus outbreak in 2026?"},"option":{"optionType":"call","strikeBps":50,"expiryMs":1735689600000},"trade":{"side":"buy","budgetUsd":100}}}

event: quote_request_expired
data: {"requestId":"req-789"}