Skip to main content

Documentation Index

Fetch the complete documentation index at: https://polynode.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Fired when a previously pending settlement is confirmed in a block. Links back to the original settlement event via tx_hash, includes the confirmation latency, and attaches confirmed fill data from on-chain OrderFilled receipt logs. The confirmed_fills array contains the exact execution prices and sizes from the blockchain — the same data source Polymarket’s own activity API reads. This gives you both speed (pre-confirmation detection) and accuracy (on-chain execution data) in a single subscription.
{
  "data": {
    "block_number": 85296338,
    "condition_id": "0xcd1b782d94423552e19db1ca2bec7bcf5a445de8586638e41da75fae3d138ac4",
    "confirmed_at": 1775713418000,
    "confirmed_fills": [
      {
        "order_hash": "0x8238c0666c...",
        "maker": "0x48ac40fc...",
        "taker": "0xc51f90d3...",
        "token_id": "97486603884638701907147078120258734284412618667021950609483989581295500093074",
        "side": "BUY",
        "price": 0.56,
        "size": 2.25,
        "maker_amount": "1260000",
        "taker_amount": "2250000",
        "fee": 0.176785
      },
      {
        "order_hash": "0x3d388dd54a...",
        "maker": "0x25f4707c...",
        "taker": "0xc51f90d3...",
        "token_id": "97486603884638701907147078120258734284412618667021950609483989581295500093074",
        "side": "BUY",
        "price": 0.56,
        "size": 7.0,
        "maker_amount": "3920000",
        "taker_amount": "7000000",
        "fee": 0.55
      }
    ],
    "event_title": "Augusta National Invitational - Winner ",
    "event_type": "status_update",
    "latency_ms": 3928,
    "maker_wallets": [
      "0x48ac40fc...",
      "0x25f4707c..."
    ],
    "market_slug": "will-charl-schwartzel-win-the-2026-masters-tournament",
    "market_title": "Will Charl Schwartzel win the 2026 Masters tournament?",
    "neg_risk": true,
    "order_hashes": [
      "0x8238c0666c...",
      "0x3d388dd54a..."
    ],
    "outcome": "No",
    "outcomes": ["Yes", "No"],
    "pending_detected_at": 1775713414072,
    "taker_wallet": "0xc51f90d3...",
    "tick_size": 0.001,
    "token_id": "97486603884638701907147078120258734284412618667021950609483989581295500093074",
    "tx_hash": "0x7599f442e4..."
  },
  "timestamp": 1775713418000,
  "type": "status_update"
}

Fields

type
string
required
Always "status_update".
timestamp
number
required
Unix milliseconds of the confirmation.
data
object
required
status_update events arrive in bursts. A single Polygon block typically contains 30–80 Polymarket settlements, so expect 30–80 status_update messages within ~100ms each time a block confirms (~2s interval). If you only need pending detection, subscribe with "status": "pending" or exclude "status_update" from your event_types filter.

How to use

Match status_update events back to their settlement by tx_hash:
const pending = new Map(); // tx_hash → settlement data

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  if (msg.type === "settlement" && msg.data.status === "pending") {
    pending.set(msg.data.tx_hash, msg.data);
  }

  if (msg.type === "status_update") {
    const original = pending.get(msg.data.tx_hash);
    console.log(`Confirmed in ${msg.data.latency_ms}ms`, original);

    // Use confirmed_fills for exact on-chain prices
    if (msg.data.confirmed_fills) {
      for (const fill of msg.data.confirmed_fills) {
        console.log(`  ${fill.side} ${fill.size} @ ${fill.price} (fee: ${fill.fee})`);
      }
    }

    pending.delete(msg.data.tx_hash);
  }
};