---
title: "List ranked smart-money flows"
method: GET
path: "/api/v1/markets/smart-money-flows"
tags: ["Markets"]
---

# List ranked smart-money flows

`GET /api/v1/markets/smart-money-flows`

Ranks markets by absolute net S/A/B-grade whale flow over a requested timeframe. Use this discovery endpoint to answer where smart money is flowing before drilling into a specific market with /api/v1/market/{condition_id}/intel. Pagination is anchored by an opaque cursor carrying the first page as_of timestamp so new whale trades do not reorder page 2.

## Query parameters

- `timeframe` '1h' | '4h' | '24h' | '7d'
- `limit` integer
- `cursor` string
- `category` string
- `platform` 'polymarket' | 'kalshi' | 'all'
- `min_grade` 'S' | 'A' | 'B' | 'C' | 'D' | 'F'
- `direction` 'YES' | 'NO'

## Headers

- `If-None-Match` string

## Response `200`

Ranked market smart-money flows

- object
  - `object` 'list', required
  - `data` SmartMoneyFlowMarket[], required
    - `market` object, required
      - `id` string, required
      - `condition_id` string, required
      - `title` string, nullable, required
      - `slug` string, nullable, required
      - `category` string, nullable, required
      - `platform` string, nullable, required
    - `smart_money` object, required
      - `net_flow_usd` number, required
      - `direction` 'YES' | 'NO', required
      - `token_id` string, nullable — The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the net-flow direction outcome; null when unavailable (e.g. Kalshi markets, unsynced markets).
      - `whale_trade_count` integer, required
      - `buy_volume_usd` number, required
      - `sell_volume_usd` number, required
    - `timeframe` string, required
  - `has_more` boolean, required
  - `next_cursor` string, nullable
  - `total` integer, nullable
  - `meta` ResponseMeta, required
    - `request_id` string, required — Unique request ID (req_ prefix).
    - `cached` boolean, required
    - `cache_age_s` integer, nullable — Cache age in seconds, null if not cached.

## Other responses

- `304` — Not Modified. Returned when If-None-Match matches the current payload.
- `400` — Invalid request parameter
- `401` — Missing or invalid API key
- `402` — Active Insider subscription required
- `403` — Account access denied
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `423` — Account is locked
- `429` — Rate limit exceeded (100 req/min; batch endpoints also reserve 100 batch item units/min before execution)
- `503` — Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown

## Changes

- **2026-07-01** `1777a41bfb53` — 1 info
  - added the optional property `data/items/smart_money/token_id` to the response with the `200` status
- **2026-06-01** `e11a68f59f02` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/0xinsider/apis/0xinsider-api/changes/api/v1/markets/smart-money-flows/get.md)

---

[API](https://skmtc.dev/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.dev/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0xinsider/apis/0xinsider-api/revisions/137fa0fd3297?raw)
