Skip to content

Market context

CORS-open:

GET /api/polymarket/featured heatmap tiles { source, tiles[], updatedAt }
GET /api/polymarket/featured?mode=resolving24h next-24h board
GET /api/polymarket/markets?q= paginated universe search
GET /api/polymarket/market?id= single market
GET /api/polymarket/market-history?marketId=|tokenId=&interval=1H|24H|7D|ALL
{ history: [{ t, p }] } (CLOB-backed)
GET /api/polymarket/resolved resolved markets
GET /api/network/market/[id] market context + resolution (works for closed/resolved)

Same-origin or server-side (not CORS):

GET /api/m/[marketId] { question, description, endDate, resolved, resolutionValue,
clobTokenId, volume, liquidity }
GET /api/m/[marketId]/related { active: RelatedMarket, related: RelatedMarket[] }
GET /api/m/[marketId]/signals the ledger
GET /api/m/[marketId]/crowd MARKET vs CROWD vs YOU (bots excluded)
GET /api/m/[marketId]/sentiment
GET /api/m/[marketId]/streams { streams: [{ handle, url, label, updatedAt }] }
GET /api/m/[marketId]/clips
GET /api/markets/airable upcoming, airable markets (endDate checked, not just closed=false)
  • Gamma’s q= parameter is unreliable: fetch a large batch and filter client-side.
  • limit=500 is capped at 100 per page; paginate with next_cursor.
  • Price history: CLOB prices-history with clobTokenIds[0] as tokenId, never Gamma.
  • The heatmap and /m/[id] are Polymarket-only with numeric ids; the protocol feed adds Kalshi.