settlement event via tx_hash and includes the confirmation latency.
Copy
{
"data": {
"block_number": 84090705,
"condition_id": "0x4531a91f4def8da0773897ad49236eebfb94f687c8985637a43f7e1ac439132f",
"confirmed_at": 1773301443000,
"event_title": "Ethereum Up or Down - March 12, 3:40AM-3:45AM ET",
"event_type": "status_update",
"latency_ms": 3598,
"maker_wallets": [
"0x8a181a656f089ad649d4500a67c4a94cc25abc9d",
"0x11f09d48095b152eb82a6bccc64138735d4c3fa8",
"0x7035c3cf9c32e63a13e75177fb1523462ab00398"
],
"market_image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/ETH+fullsize.jpg",
"market_slug": "eth-updown-5m-1773301200",
"market_title": "Ethereum Up or Down - March 12, 3:40AM-3:45AM ET",
"neg_risk": false,
"outcome": "Down",
"pending_detected_at": 1773301439402,
"taker_base_fee": 1000.0,
"taker_wallet": "0x7035c3cf9c32e63a13e75177fb1523462ab00398",
"tick_size": 0.01,
"token_id": "41289058265701027630261530916262400751492270988085662232022084312192713218931",
"tokens": {
"41289058265701027630261530916262400751492270988085662232022084312192713218931": "Down",
"43683199363997825972120625605577475527345563787373900511473168397985098762620": "Up"
},
"tx_hash": "0xc2cdb3e96ddbde7c56ac7803b2389496669c98c428a348013938f9b433c3cc12"
},
"timestamp": 1773301443000,
"type": "status_update"
}
Fields
Always
"status_update".Unix milliseconds of the confirmation.
Show data fields
Show data fields
Transaction hash — matches the original
settlement event.Conditional token ID.
Block where the transaction was included.
Unix milliseconds of block confirmation.
Unix milliseconds when the transaction was first detected by PolyNode.
Time between initial detection and block confirmation, in milliseconds. Typical values: 2000–5000ms (median ~2900ms). Corresponds to 1–2 Polygon blocks.
Taker wallet address from the original settlement.
Maker wallet addresses from the original settlement.
Market question. Enriched from metadata.
Outcome name. Enriched from metadata.
Market image URL. Enriched from metadata.
Market URL slug. Enriched from metadata.
Parent event title. Enriched from metadata.
Whether this market uses the negRisk contract type. Enriched from metadata.
Minimum price increment (e.g.
0.01 or 0.001). Enriched from metadata.Taker fee rate (e.g.
0.02 for 2%). Enriched from metadata.Market condition ID (CTF contract identifier). Enriched from metadata.
Map of token ID → outcome name for all outcomes in this market (e.g.
{"123...": "Yes", "456...": "No"}). Enriched from metadata.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
Matchstatus_update events back to their settlement by tx_hash:
Copy
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);
pending.delete(msg.data.tx_hash);
}
};

