Market context
CORS-open:
GET /api/polymarket/featured heatmap tiles { source, tiles[], updatedAt }GET /api/polymarket/featured?mode=resolving24h next-24h boardGET /api/polymarket/markets?q= paginated universe searchGET /api/polymarket/market?id= single marketGET /api/polymarket/market-history?marketId=|tokenId=&interval=1H|24H|7D|ALL { history: [{ t, p }] } (CLOB-backed)GET /api/polymarket/resolved resolved marketsGET /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 ledgerGET /api/m/[marketId]/crowd MARKET vs CROWD vs YOU (bots excluded)GET /api/m/[marketId]/sentimentGET /api/m/[marketId]/streams { streams: [{ handle, url, label, updatedAt }] }GET /api/m/[marketId]/clipsGET /api/markets/airable upcoming, airable markets (endDate checked, not just closed=false)Provider notes
Section titled “Provider notes”- Gamma’s
q=parameter is unreliable: fetch a large batch and filter client-side. limit=500is capped at 100 per page; paginate withnext_cursor.- Price history: CLOB
prices-historywithclobTokenIds[0]astokenId, never Gamma. - The heatmap and
/m/[id]are Polymarket-only with numeric ids; the protocol feed adds Kalshi.