---
title: "Market History"
method: GET
path: "/market/history/{symbol}"
tags: ["market"]
---

# Market History

`GET /market/history/{symbol}`

## Request

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

Bulk history for one coin, one metric per call, in pages: 'price' (OHLCV candles, spot or perp), 'open_interest' (market-wide aggregate USD), 'funding' (OI-weighted rate, %/8h and annualized) or 'liquidations' (market-wide long/short USD per bucket). Returns up to 'limit' rows (default 200, max 1000) at or before 'end' (default now), oldest first, as compact columns + rows; pass the returned nextEndMs as 'end' to fetch the page before it, and 'start' to stop there. Reach: price is full venue history (Binance spot from 2017, futures from 2019) at 1m–1w; derivatives come from CoinGlass at 4h (about 180 days back), 6h/8h/12h (about 360 days) or 1d/1w (back to 2020) — use 1d for anything older than six months. The newest row may still be forming (newestForming). Use this to pull history; for a read of what is happening now, use the derivatives_* and research_* tools.

## Path parameters

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

## Query parameters

- `metric` 'price' | 'open_interest' | 'funding' | 'liquidations', required
- `interval` '1m' | '5m' | '15m' | '30m' | '1h' | '4h' | '6h' | '8h' | '12h' | '1d' | '1w': Bucket size. Price: 1m–1w except 6h/8h, default 1d. Derivatives: 4h, 6h, 8h, 12h, 1d or 1w; default 4h (funding 8h).
- `market` 'spot' | 'perp': Price only: spot (default) or perpetual candles.
- `start` string: Earliest time to include: ISO-8601 (UTC if no offset) or Unix ms. Paging stops here.
- `end` string: Latest time to include: ISO-8601 or Unix ms. Default now. Pass nextEndMs here to page back.
- `limit` integer: Rows per page, 1–1000. Default 200.

## Response `200`

The result.

- object
  - `data` object
    - `symbol` string, required
    - `metric` string, required
    - `interval` string
    - `market` string, nullable: Price only: spot or perp
    - `source` string: Provider that answered this page
    - `units` string: What each value column means
    - `columns` string[], required: Names of each row's cells; the first is timeMs (bucket open, Unix ms)
    - `rows` array[], required: Oldest first; each row is [timeMs, ...values] in column order; null where the source has no value
      - number[]
    - `count` integer, required
    - `endMs` integer: The page's end bound, Unix ms
    - `startMs` integer, nullable
    - `nextEndMs` integer, nullable: Pass as 'end' for the page before this one; null when this page reached 'start' or the series' beginning
    - `newestForming` boolean: Newest row's bucket is still open; the vendor rewrites it until it closes
    - `earliestAvailableMs` integer, nullable: Set when 'end' was before the plan's history edge for this interval
    - `note` string, nullable
  - `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)
