Skip to main content
GET
cURL
Use this endpoint to find markets with the largest net flows from graded wallets. Results rank by the absolute flow size, so large positive and negative moves both appear near the top. To inspect one market’s flow and positions, use Market flow.

Parameters

Key response fields

Rows are ordered by the size of net_flow_usd, ignoring its sign, and then by condition_id.

When a cursor expires

A cursor stops working when your filters change, when the wallet rankings are rebuilt, or when the flow totals are recomputed. It returns 400 with error.reason cursor_expired and error.param cursor. Any cursor you stored before September 22, 2026 is refused the same way. Discard the cursor and request the first page again. There is no Retry-After on this error, because waiting does not fix it.

Example

What it does not return

  • Individual trades or wallets. Market flow has the largest graded positions for one market.
  • Flow from C, D, or F wallets at the default min_grade. Set min_grade=F to count every graded wallet.
  • Flow from a wallet with no grade. Those trades are omitted at every min_grade.
  • A resolution grade or a suspicious-trade flag. This is a discovery ranking and nothing more.
  • A Deprecation header. That is on Smart money flows, the deprecated alias of this route.

Caching

Save the response’s ETag and send it in If-None-Match on your next request. If the ranking has not changed, the server returns 304 Not Modified with no body.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict
If-None-Match
string

Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.

Query Parameters

timeframe
enum<string>
default:24h

Lookback window for grade-filtered whale flow aggregation.

Available options:
1h,
4h,
24h,
7d
limit
integer
default:20

Page size. Out-of-range values are clamped to 1..100.

Required range: 1 <= x <= 100
cursor
string

Opaque cursor from previous response's next_cursor. Encodes the first-page as_of timestamp, normalized effective filters, ranking and aggregate collection revisions, plus the last row's absolute net flow and condition_id. A changed filter or collection returns cursor_expired; request the first page again.

category
string

Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket.

platform
enum<string>
default:all

Filter by source platform. all is a request-side no-op.

Available options:
polymarket,
all
min_grade
enum<string>
default:B

Minimum latest trader grade included in the flow. Default B means S/A/B only; unranked traders are excluded.

Available options:
S,
A,
B,
C,
D,
F
direction
enum<string>

Optional post-aggregate flow direction filter.

Available options:
YES,
NO

Response

Ranked market sharp-money flows

object
string
required
Allowed value: "list"
data
object[]
required
has_more
boolean
required
meta
object
required
next_cursor
string
total
integer