---
title: "Order Book Snapshot"
method: GET
path: "/flow/orderbook/{symbol}"
tags: ["flow"]
---

# Order Book Snapshot

`GET /flow/orderbook/{symbol}`

## Request

- Base URL: `https://mcp.f1ow.com/v1`
- URL: `https://mcp.f1ow.com/v1/flow/orderbook/{symbol}`
- Auth: one of:
  - HTTP bearer
  - none

Order-book snapshot for one coin's perpetuals: best bid/ask, spread in bps, top-of-book depth (USD) per side, bid/ask depth imbalance, and the cost vs mid of $10k and $100k market orders against the visible levels. Positive imbalance means more bid depth. Single-venue by nature — Hyperliquid, falling back to Bybit for coins it doesn't list; the response names the venue that answered and how far its visible book reaches.

## Path parameters

- `symbol` string, required: Coin symbol, e.g. "BTC".

## Response `200`

The result.

- object
  - `data` object
    - `symbol` string, required
    - `asOfAt` string: Order-book timestamp, ISO-8601 UTC
    - `asOfMs` integer: Order-book timestamp, Unix epoch milliseconds
    - `bestBidUsd` number: Best bid price, USD
    - `bestAskUsd` number: Best ask price, USD
    - `midPriceUsd` number: Mid price, USD
    - `spreadBps` number: Bid/ask spread, basis points of mid
    - `bidDepthUsd` number: Top-of-book bid depth, USD
    - `askDepthUsd` number: Top-of-book ask depth, USD
    - `imbalancePct` number: Signed bid-vs-ask depth skew in percentage points (positive = more bids)
    - `fillCosts` object[]: Cost vs mid of a market order of each size against the visible levels
      - `sizeUsd` number, required
      - `buyBps` number: Average buy fill vs mid in bps; absent when the visible asks can't fill the size
      - `sellBps` number: Average sell fill vs mid in bps (positive = cost); absent when the visible bids can't fill the size
    - `visibleBidReachPct` number: Deepest returned bid vs mid, percent; nothing beyond is visible
    - `visibleAskReachPct` number: Deepest returned ask vs mid, percent; nothing beyond is visible
    - `source` string: Venue that served the book
  - `text` string, required: Human-readable rendering of the result.
  - `meta` ResponseMeta
    - `generatedAt` string, date-time: When the data was produced (source timestamp where the provider has one), ISO 8601 UTC

## Other responses

- `400`: An argument is missing or invalid.
- `401`: No credential was sent.
- `402`: x402 route: a priced call without a valid payment (challenge in the base64 PAYMENT-REQUIRED header). Metered routes: the account balance or access period is spent.
- `403`: The credential was rejected.
- `500`: Unexpected server error.
- `502`: The data source could not answer.

---

[API](https://skmtc.dev/f1ow/apis/f1ow-api.md) · [All operations](https://skmtc.dev/f1ow/apis/f1ow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/f1ow/apis/f1ow-api/revisions/6974f25b6067?raw)
