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.
Polymarket V2 cutover: April 28, 2026 at ~11am UTC. If you place orders via our trading SDK, upgrade to the V2-ready version and flip one config line before cutover. See the V2 Migration Guide for the full checklist.
PolyNode API
PolyNode delivers Polymarket settlement data 2–5 seconds before on-chain confirmation (1–2 Polygon blocks). Connect via WebSocket for real-time streaming, or query the REST API for markets, candles, and orderbook data.
WebSocket streaming Real-time settlements with filtered subscriptions. The core product.
Markets & pricing Enriched market metadata, OHLCV candles, and volume analytics.
Quick start
1. Get an API key
curl -s -X POST https://api.polynode.dev/v1/keys \
-H "Content-Type: application/json" \
-d '{"name": "my-app"}'
2. Query the REST API
curl -s -H "x-api-key: pn_live_YOUR_KEY" \
"https://api.polynode.dev/v1/markets?count=5"
3. Stream live settlements via WebSocket
const ws = new WebSocket ( "wss://ws.polynode.dev/ws?key=pn_live_YOUR_KEY" );
ws . onopen = () => {
ws . send ( JSON . stringify ({ action: "subscribe" , type: "settlements" }));
};
ws . onmessage = ( event ) => {
const msg = JSON . parse ( event . data );
if ( msg . type === "settlement" ) {
const d = msg . data ;
console . log ( ` ${ d . taker_side } ${ d . taker_size } @ ${ d . taker_price } | ${ d . market_title } ` );
}
};
4. Stream a live orderbook
const ws = new WebSocket ( "wss://ob.polynode.dev/ws?key=pn_live_YOUR_KEY" );
ws . onopen = () => {
// Subscribe by condition ID (from the REST API) or token ID
ws . send ( JSON . stringify ({
action: "subscribe" ,
markets: [ "0x7cb525e831729325d651017f81cbcb6f1adde5011c7b2283babea00b4ae93ae7" ]
}));
};
ws . onmessage = ( event ) => {
const msg = JSON . parse ( event . data );
if ( msg . type === "snapshot_batch" ) {
for ( const snap of msg . snapshots ) {
console . log ( ` ${ snap . question } [ ${ snap . outcome } ]: ${ snap . bids . length } bids, ${ snap . asks . length } asks` );
}
} else if ( msg . type === "batch" ) {
for ( const update of msg . updates ) {
if ( update . type === "price_change" ) {
for ( const asset of update . assets ) {
console . log ( ` ${ update . slug } [ ${ asset . outcome } ]: ${ asset . price } ` );
}
}
}
}
};
What makes PolyNode different
Feature PolyNode Other providers Pending settlements (pre-chain) 2–5 seconds early (1–2 blocks) Not available Decoded Polymarket data Enriched with market titles, outcomes, slugs Raw logs only WebSocket filtering By wallet, token, slug, side, size Generic log filters Orderbook, candles, stats CLOB proxying + enriched analytics Separate service
Base URL
REST: https://api.polynode.dev
WebSocket: wss://ws.polynode.dev/ws?key=YOUR_KEY
All endpoints require an API key via x-api-key header (REST) or ?key= query param (WebSocket).