Skip to main content
Signals are read from recorded prices and trades: the day’s biggest moves, the largest fills, money leaning one way, trading far outside a market’s own normal. They describe what happened, not why. This page covers every signals endpoint, its thresholds, and the liquidity floors they share. You need it when building a feed, a watchlist or an alert.

Moves

GET /v1/insights/moves: the day’s biggest price changes on markets still worth trading.

Large fills

GET /v1/insights/tape: the biggest single trades, newest first.

One-sided money

GET /v1/insights/flows: net money toward Yes or No over a window.

Unusual flow

GET /v1/flow: trading far outside a market’s own normal.

Shared floors

Every insights list hides thin markets by default and ranks what is left with the money behind it: a move, a gap or a flow is weighted by the natural log of the market’s 24-hour volume, so a 30¢ swing on $500 does not outrank a 10¢ swing on $500,000. Three parameters change that on every endpoint below except /v1/flow and the ticker: See Liquidity for the grades.

Moves

GET /v1/insights/moves returns the biggest 24-hour changes in the Yes ask, biggest first, each with the market’s unusual-flow signals from the last day, its trades and net money toward Yes, and how many markets the graph relates to it.
Markets whose event is under way or already closed, priced outside 10¢ to 90¢, or that moved more than 40¢ are left out: those are results arriving, not prices changing their minds. related counts the markets this one implies, is implied by, equals or contradicts. Responses are cached for one minute.

Large fills

GET /v1/insights/tape returns fills of at least min_usd, newest first, with toward naming the outcome each backs: buying Yes or selling No backs yes.
A window that reaches back before the live trade feed began includes imported Polymarket fills, marked archived: true; archived fills of $10,000 or more carry block by size. At most 20 fills per market are read, so one busy market cannot fill the tape. Responses are cached for 30 seconds.

One-sided money

GET /v1/insights/flows ranks markets with at least $2,000 traded over the window by net money toward Yes (net_usd positive) or No (negative), with the Yes price change over the window.
archived is true when part of the window comes from imported history. Responses are cached for one minute.
When this page was written, hours=24, 168 and 720 returned 500 with the code internal, while 1 and 6 worked. Handle a 500 on this endpoint by falling back to a shorter window until it is fixed.

Unusual flow

GET /v1/flow lists markets whose last 15 minutes of trading were unusual against their own previous week, scored every five minutes. Nothing is scored until a venue has a day of trade history, and nothing here passes through the liquidity floors: the baseline is the market’s own.
Scores are capped at 1000, which means the chance was too small to measure or the market had no baseline at all: a market that rarely trades suddenly trading heavily reaches the cap easily, so read metrics for the size. Repeated detections of the same market and kind within an hour extend one signal, counted in detections, keeping the higher score. Signals are kept for 35 days.

Also available

The API description says closing-soon lists events with $500 traded today. The code applies the shared `min_volume_usd` floor of $1,000 per market instead; there is no $500 threshold.
  • History: the quotes and trades signals are read from.
  • Liquidity: the grades behind the floors.
  • Leads: gaps that a proof turns into a guaranteed pair.
  • Live stream: trades and quotes pushed as they are recorded.
  • Unusual flow: polling /v1/flow into alerts.