Skip to Content
f1owdocs
Tool reference

Perp Price Levels

Executed volume profiles, value areas, thin zones, inferred long/short entries, realized liquidation prices and persistent resting walls across venues. Levels graded by traded, inferred or resting evidence, with confluence disclosed — not a price forecast.

Order flow & whalesflow_levelsGET /flow/levels/{symbol}x402 · $0.03 / callRead-onlyMCP App

What it does

Perp price levels for one coin, from what printed rather than from a chart: executed volume at price on every venue that lists it (the major perpetual exchanges), with the value area (70% of volume around the POC), high-volume nodes and thin zones (prices crossed without trading, where moves tend to run); open-interest changes at price split into long and short entries; realized liquidations at price (exchange liquidation sample); and resting walls from deep books on several venues, counted only when a second snapshot 2 s later still shows them. Every level is graded by evidence — traded (volume, liquidations) > inferred (OI side) > resting (orders, which can be pulled) — and lists the other evidence at the same price (confluence). Walls larger than their venue's own daily volume are flagged. Use it for where price may stall, accelerate or meet forced flow; it is not a forecast.

Parameters

NameTypeDescription
symbolrequiredpathstringCoin symbol, e.g. "WAVES".
hoursqueryintegerWindow in hours, 24–168. Default 72.

Call it

One API key works for MCP, REST and WebSocket; each call uses one unit. Agents without an account can pay per call with x402.

curl "https://mcp.f1ow.com/v1/flow/levels/BTC?hours=24" \
  -H "Authorization: Bearer $F1OW_API_KEY"
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "flow_levels",
    "arguments": {
      "symbol": "BTC",
      "hours": 24
    }
  }
}
const res = await fetch("https://mcp.f1ow.com/v1/flow/levels/BTC?hours=24", {
  headers: { Authorization: `Bearer ${process.env.F1OW_API_KEY}` },
});
const data = await res.json(); // the tool's result as JSON, typed in the OpenAPI spec
console.log(data);
import os, requests

res = requests.get(
    "https://mcp.f1ow.com/v1/flow/levels/BTC?hours=24",
    headers={"Authorization": f"Bearer {os.environ['F1OW_API_KEY']}"},
)
data = res.json()  # the tool's result as JSON, typed in the OpenAPI spec
print(data)
// wss://mcp.f1ow.com/v1/ws — subprotocol "jsonrpc-2.0", Authorization: Bearer <key>
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "flow_levels",
    "arguments": {
      "symbol": "BTC",
      "hours": 24
    }
  }
}

// Or push a fresh result whenever it changes (minimum interval 15 s)
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "subscriptions/subscribe",
  "params": {
    "name": "flow_levels",
    "arguments": {
      "symbol": "BTC",
      "hours": 24
    },
    "intervalSeconds": 60
  }
}
# No account: the first call answers 402 with a PAYMENT-REQUIRED challenge;
# an x402 client pays it in USDC on Base and retries.
curl "https://mcp.f1ow.com/x402/v1/flow/levels/BTC?hours=24"

Sample response

A real response captured 2026-11-13. Interactive is the tool's MCP App rendering it, as Claude, ChatGPT and other MCP Apps hosts show it; here it is read-only. JSON is what REST and WebSocket return, and the structuredContent of an MCP call (trimmed for length), with generatedAt for freshness. Text is the report an MCP client hands to a model.

Loading interactive view…
BTC perp levels, last 24h, $200 bins. Volume: Binance, Bybit, BingX, Hyperliquid. Flow (OI, taker): Binance (taker side known on 100% of its volume). Liquidation sample: OKX, Gate. Books: Binance -0.2%/+0.2%, Bybit -0.2%/+0.1%, BingX -1.3%/+1.6%, Hyperliquid -0.0%/+0.0%.
  spot $68633.25 · outside the value area · POC $71400.00 · value area $69100.00–$73500.00
  resistance: $68800.00 (+0.2%, High-volume node + Ask wall ●●●); $69000.00 (+0.5%, Shorts liquidated ●●○); $69100.00 (+0.7%, Value area low ●●○)
  support: $68600.00 (-0.0%, Bid wall ●○○); $68400.00 (-0.3%, Bid wall ●○○); $68200.00 (-0.6%, Long entries ●○○)
  average 24h range 8.8% of price: levels within about ±4.4% are in a day's reach
  above (nearest first):
    +0.2%  $68800.00  High-volume node $2.84B [traded] · Ask wall $48.8M on BingX [resting]
    +0.5%  $69000.00  Shorts liquidated $1.7M [traded]
    +0.8%  $69200.00  Shorts liquidated $1.6M [traded]
    +0.7%  $69100.00  Value area low [traded]
    +4.0%  $71400.00  Volume POC $2.93B [traded]
    +4.3%  $71600.00  Long entries $88.6M [inferred]
  below (nearest first):
    -0.3%  $68400.00  Bid wall $33.9M on BingX [resting]
    -0.6%  $68200.00  Long entries $81.1M [inferred]
  Evidence: traded > inferred > resting. Resting orders can be pulled; not a forecast.
{
  "caveats": [
    "Evidence grades: traded (volume, realized liquidations) printed and is hard to fake; inferred (long/short entries) reads the side from OI × taker flow, or from price where the venue publishes no taker split; resting (walls) is intent and can be pulled at any time.",
    "Entries are OI changes placed where they happened, opened minus closed per side over the window: not positions still open.",
    "Volume spreads each candle (5-minute up to 72h, else 15-minute) across its high–low range, weighted toward its typical price. Wash trading on smaller venues inflates volume.",
    "Books show only what each venue's depth endpoint returns (see sources.books reach); on the majors that is a fraction of a percent, so walls there are near-touch only.",
    "Liquidations come from the OKX/Gate timing sample, a share of the market, never scaled up."
  ],
  "dailyRangePct": 8.77,
  "levels": [
    {
      "distancePct": -0.63,
      "evidence": "inferred",
      "kind": "long_entries",
      "onLadder": true,
      "outsized": false,
      "price": 68200,
      "priceHi": 68300,
      "priceLo": 68100,
      "readFromPrice": false,
      "strength": 1,
      "usd": 81119199,
      "withKinds": []
    },
    {
      "distancePct": -0.34,
      "evidence": "resting",
      "kind": "bid_wall",
      "onLadder": true,
      "outsized": false,
      "price": 68400,
      "priceHi": 68500,
      "priceLo": 68300,
      "readFromPrice": false,
      "strength": 1,
      "usd": 33934866,
      "venue": "BingX",
      "withKinds": []
    },
    {
      "distancePct": -0.05,
      "evidence": "resting",
      "kind": "bid_wall",
      "onLadder": true,
      "outsized": false,
      "price": 68600,
      "priceHi": 68700,
      "priceLo": 68500,
      "readFromPrice": false,
      "strength": 1,
      "usd": 50079990,
      "withKinds": []
    },
    {
      "distancePct": 0.24,
      "evidence": "resting",
      "kind": "ask_wall",
      "onLadder": true,
      "outsized": false,
      "price": 68800,
      "priceHi": 68900,
      "priceLo": 68700,
      "readFromPrice": false,
      "strength": 2,
      "usd": 48751475,
      "venue": "BingX",
      "withKinds": [
        "high_volume_node"
      ]
    },
    {
      "distancePct": 0.24,
      "evidence": "traded",
      "kind": "high_volume_node",
      "onLadder": true,
      "outsized": false,
      "price": 68800,
      "priceHi": 68900,
      "priceLo": 68700,
      "readFromPrice": false,
      "strength": 3,
      "usd": 2837990389,
      "withKinds": [
        "ask_wall"
      ]
    },
    {
      "distancePct": 0.53,
      "evidence": "traded",
      "kind": "short_liquidations",
      "onLadder": true,
      "outsized": false,
      "price": 69000,
      "priceHi": 69100,
      "priceLo": 68900,
      "readFromPrice": false,
      "strength": 2,
      "usd": 1681087,
      "withKinds": []
    },
    "… 6 more"
  ],
  "resistances": [
    {
      "distancePct": 0.24,
      "evidence": [
        "traded",
        "resting"
      ],
      "kinds": [
        "high_volume_node",
        "ask_wall"
      ],
      "outsized": false,
      "price": 68800,
      "strength": 3,
      "usd": 2886741864,
      "venue": "BingX"
    },
    {
      "distancePct": 0.53,
      "evidence": [
        "traded"
      ],
      "kinds": [
        "short_liquidations"
      ],
      "outsized": false,
      "price": 69000,
      "strength": 2,
      "usd": 1681087
    },
    {
      "distancePct": 0.68,
      "evidence": [
        "traded"
      ],
      "kinds": [
        "value_area_low"
      ],
      "outsized": false,
      "price": 69100,
      "strength": 2,
      "usd": 0
    }
  ],
  "rule": "strength 1–3 = evidence weight (POC 3; nodes, value-area edges, liquidations 2; entries 1.5; walls 1, halved when larger than their venue's day) + 0.5 for the largest of its kind + 1 per other evidence grade and 0.5 per other same-grade kind at that price (3 dots ≥ 3.5, 2 ≥ 2); value area = 70% of volume around the POC; high-volume node = local peak ≥ 1.5× the median bin and ≥ 1.35× the two bins e…",
  "sources": {
    "books": [
      {
        "persisted": true,
        "reachDownPct": -0.2,
        "reachUpPct": 0.21,
        "venue": "Binance"
      },
      {
        "persisted": true,
        "reachDownPct": -0.16,
        "reachUpPct": 0.14,
        "venue": "Bybit"
      },
      {
        "persisted": true,
        "reachDownPct": -1.31,
        "reachUpPct": 1.61,
        "venue": "BingX"
      },
      {
        "persisted": true,
        "reachDownPct": -0.01,
        "reachUpPct": 0.05,
        "venue": "Hyperliquid"
      }
    ],
    "flow": "Binance",
    "liquidations": [
      "OKX",
      "Gate"
    ],
    "takerCoveragePct": 100,
    "volume": [
      "Binance",
      "Bybit",
      "BingX",
      "Hyperliquid"
    ]
  },
  "sourcesFailed": [],
  "spot": 68633.25,
  "spotContext": {
    "inThinZone": false,
    "inValueArea": false,
    "nearestAbove": {
      "distancePct": 0.24,
      "evidence": "resting",
      "kind": "ask_wall",
      "onLadder": true,
      "outsized": false,
      "price": 68800,
      "priceHi": 68900,
      "priceLo": 68700,
      "readFromPrice": false,
      "strength": 2,
      "usd": 48751475,
      "venue": "BingX",
      "withKinds": [
        "high_volume_node"
      ]
    },
    "nearestBelow": {
      "distancePct": -0.34,
      "evidence": "resting",
      "kind": "bid_wall",
      "onLadder": true,
      "outsized": false,
      "price": 68400,
      "priceHi": 68500,
      "priceLo": 68300,
      "readFromPrice": false,
      "strength": 1,
      "usd": 33934866,
      "venue": "BingX",
      "withKinds": []
    }
  },
  "step": 200,
  "supports": [
    {
      "distancePct": -0.05,
      "evidence": [
        "resting"
      ],
      "kinds": [
        "bid_wall"
      ],
      "outsized": false,
      "price": 68600,
      "strength": 1,
      "usd": 50079990
    },
    {
      "distancePct": -0.34,
      "evidence": [
        "resting"
      ],
      "kinds": [
        "bid_wall"
      ],
      "outsized": false,
      "price": 68400,
      "strength": 1,
      "usd": 33934866,
      "venue": "BingX"
    },
    {
      "distancePct": -0.63,
      "evidence": [
        "inferred"
      ],
      "kinds": [
        "long_entries"
      ],
      "outsized": false,
      "price": 68200,
      "strength": 1,
      "usd": 81119199
    }
  ],
  "symbol": "BTC",
  "unconfirmedWalls": [],
  "valueArea": {
    "high": 73500,
    "low": 69100,
    "poc": 71400
  },
  "window": {
    "liquidatedUsd": 153332244,
    "oiChangePct": -4.38,
    "oiEndUsd": 6918409558,
    "oiStartUsd": 7235479303,
    "oiVenue": "Binance",
    "priceChangePct": -6.78,
    "priceEnd": 68644.4,
    "priceStart": 73634.6,
    "priceVenue": "Binance",
    "volumeUsd": 35787223162
  },
  "windowHours": 24,
  "generatedAt": "2026-11-13T08:06:12.4637708+00:00"
}

Call Perp Price Levels from your agent

Sign in, get an API key and make your first call in under a minute. No card required.

For agents: this page as Markdown · all docs

On this page