# Volume Indicators API
> Live volume-based technical indicators that traders run to confirm a move with the volume behind it, computed on demand from the OHLCV candles you pass in — no key, no cache, nothing stored. The mfi endpoint returns the Money Flow Index, a volume-weighted version of RSI that swings from 0 to 100, with an overbought reading above 80 and oversold below 20. The obv endpoint returns On-Balance Volume, the running total that adds a candle's volume on an up close and subtracts it on a down close, together with whether it is rising or falling — rising OBV confirms buying pressure. The cmf endpoint returns the Chaikin Money Flow, which sums money-flow volume over the lookback to show whether buyers or sellers are in control. These indicators all need the volume of each candle, which makes them a fundamentally different tool from price-only indicators like RSI, MACD, Stochastic and ADX: they answer whether volume is confirming the price move or diverging from it. Works for any market — forex, stocks, crypto or commodities — because you supply the candles with volume. Computed locally and deterministically, so it is instant and private. Ideal for trading bots, divergence screeners, breakout confirmation and trading dashboards. Candles are open:high:low:close:volume. Live, nothing stored. 3 compute endpoints. For price-only indicators use a technical-indicators, oscillators or trend-indicators API.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/volumeindicators-api/..."
```

## Pricing
- **Free** (Free) — 4,400 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 88,000 calls/Mo, 6 req/s
- **Pro** ($21/Mo) — 455,000 calls/Mo, 18 req/s
- **Business** ($46/Mo) — 2,850,000 calls/Mo, 45 req/s

## Endpoints

### Volume

#### `GET /v1/cmf` — Chaikin Money Flow (buying/selling pressure)

**Parameters:**
- `candles` (query, required, string) — OHLCV candles open:high:low:close:volume Example: `100.00:102.00:99.00:101.00:1000,101.00:103.00:100.00:102.00:1100,102.00:104.00:101.00:103.00:1200,103.00:105.00:102.00:104.00:1300,104.00:106.00:103.00:105.00:1400,105.00:107.00:104.00:106.00:1500,106.00:108.00:105.00:107.00:1600,107.00:109.00:106.00:108.00:1700,108.00:110.00:107.00:109.00:1800,109.00:111.00:108.00:110.00:1900,110.00:112.00:109.00:111.00:2000,111.00:113.00:110.00:112.00:2100,112.00:114.00:111.00:113.00:2200,113.00:115.00:112.00:114.00:2300,114.00:116.00:113.00:115.00:2400,115.00:117.00:114.00:116.00:2500,116.00:118.00:115.00:117.00:2600,117.00:119.00:116.00:118.00:2700,118.00:120.00:117.00:119.00:2800,119.00:121.00:118.00:120.00:2900,120.00:122.00:119.00:121.00:3000,121.00:123.00:120.00:122.00:3100`
- `period` (query, optional, string) — Period (default 20) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/volumeindicators-api/v1/cmf?candles=100.00%3A102.00%3A99.00%3A101.00%3A1000%2C101.00%3A103.00%3A100.00%3A102.00%3A1100%2C102.00%3A104.00%3A101.00%3A103.00%3A1200%2C103.00%3A105.00%3A102.00%3A104.00%3A1300%2C104.00%3A106.00%3A103.00%3A105.00%3A1400%2C105.00%3A107.00%3A104.00%3A106.00%3A1500%2C106.00%3A108.00%3A105.00%3A107.00%3A1600%2C107.00%3A109.00%3A106.00%3A108.00%3A1700%2C108.00%3A110.00%3A107.00%3A109.00%3A1800%2C109.00%3A111.00%3A108.00%3A110.00%3A1900%2C110.00%3A112.00%3A109.00%3A111.00%3A2000%2C111.00%3A113.00%3A110.00%3A112.00%3A2100%2C112.00%3A114.00%3A111.00%3A113.00%3A2200%2C113.00%3A115.00%3A112.00%3A114.00%3A2300%2C114.00%3A116.00%3A113.00%3A115.00%3A2400%2C115.00%3A117.00%3A114.00%3A116.00%3A2500%2C116.00%3A118.00%3A115.00%3A117.00%3A2600%2C117.00%3A119.00%3A116.00%3A118.00%3A2700%2C118.00%3A120.00%3A117.00%3A119.00%3A2800%2C119.00%3A121.00%3A118.00%3A120.00%3A2900%2C120.00%3A122.00%3A119.00%3A121.00%3A3000%2C121.00%3A123.00%3A120.00%3A122.00%3A3100&period=20"
```

**Response:**
```json
{
    "data": {
        "cmf": 0.333333,
        "note": "Chaikin Money Flow = sum(money-flow volume) / sum(volume) over the period; money-flow multiplier = ((close-low)-(high-close))/(high-low). Ranges -1..+1; positive = buying pressure.",
        "period": 20,
        "source": "VOLUME",
        "candles": 22,
        "pressure": "buying"
    },
    "meta": {
        "timestamp": "2026-06-11T07:48:59.712Z",
        "request_id": "8793f860-6e17-45a5-9c71-7573b00fcf70"
    },
    "status": "ok",
    "message": "CMF computed",
    "success": true
}
```

#### `GET /v1/mfi` — Money Flow Index (volume-weighted RSI)

**Parameters:**
- `candles` (query, required, string) — OHLCV candles open:high:low:close:volume, comma-separated oldest first Example: `100.00:102.00:99.00:101.00:1000,101.00:103.00:100.00:102.00:1100,102.00:104.00:101.00:103.00:1200,103.00:105.00:102.00:104.00:1300,104.00:106.00:103.00:105.00:1400,105.00:107.00:104.00:106.00:1500,106.00:108.00:105.00:107.00:1600,107.00:109.00:106.00:108.00:1700,108.00:110.00:107.00:109.00:1800,109.00:111.00:108.00:110.00:1900,110.00:112.00:109.00:111.00:2000,111.00:113.00:110.00:112.00:2100,112.00:114.00:111.00:113.00:2200,113.00:115.00:112.00:114.00:2300,114.00:116.00:113.00:115.00:2400,115.00:117.00:114.00:116.00:2500,116.00:118.00:115.00:117.00:2600,117.00:119.00:116.00:118.00:2700,118.00:120.00:117.00:119.00:2800,119.00:121.00:118.00:120.00:2900,120.00:122.00:119.00:121.00:3000,121.00:123.00:120.00:122.00:3100`
- `period` (query, optional, string) — Period (default 14; needs period + 1 candles) Example: `14`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/volumeindicators-api/v1/mfi?candles=100.00%3A102.00%3A99.00%3A101.00%3A1000%2C101.00%3A103.00%3A100.00%3A102.00%3A1100%2C102.00%3A104.00%3A101.00%3A103.00%3A1200%2C103.00%3A105.00%3A102.00%3A104.00%3A1300%2C104.00%3A106.00%3A103.00%3A105.00%3A1400%2C105.00%3A107.00%3A104.00%3A106.00%3A1500%2C106.00%3A108.00%3A105.00%3A107.00%3A1600%2C107.00%3A109.00%3A106.00%3A108.00%3A1700%2C108.00%3A110.00%3A107.00%3A109.00%3A1800%2C109.00%3A111.00%3A108.00%3A110.00%3A1900%2C110.00%3A112.00%3A109.00%3A111.00%3A2000%2C111.00%3A113.00%3A110.00%3A112.00%3A2100%2C112.00%3A114.00%3A111.00%3A113.00%3A2200%2C113.00%3A115.00%3A112.00%3A114.00%3A2300%2C114.00%3A116.00%3A113.00%3A115.00%3A2400%2C115.00%3A117.00%3A114.00%3A116.00%3A2500%2C116.00%3A118.00%3A115.00%3A117.00%3A2600%2C117.00%3A119.00%3A116.00%3A118.00%3A2700%2C118.00%3A120.00%3A117.00%3A119.00%3A2800%2C119.00%3A121.00%3A118.00%3A120.00%3A2900%2C120.00%3A122.00%3A119.00%3A121.00%3A3000%2C121.00%3A123.00%3A120.00%3A122.00%3A3100&period=14"
```

**Response:**
```json
{
    "data": {
        "mfi": 100,
        "note": "Money Flow Index = volume-weighted RSI over the period; raw money flow = typical price x volume. >=80 overbought, <=20 oversold.",
        "period": 14,
        "signal": "overbought",
        "source": "VOLUME",
        "candles": 22,
        "negative_money_flow": 0,
        "positive_money_flow": 3972966.6667
    },
    "meta": {
        "timestamp": "2026-06-11T07:48:59.797Z",
        "request_id": "3031a514-85be-4403-8a9e-92ec86bfc14f"
    },
    "status": "ok",
    "message": "MFI computed",
    "success": true
}
```

#### `GET /v1/obv` — On-Balance Volume + trend

**Parameters:**
- `candles` (query, required, string) — OHLCV candles open:high:low:close:volume Example: `100.00:102.00:99.00:101.00:1000,101.00:103.00:100.00:102.00:1100,102.00:104.00:101.00:103.00:1200,103.00:105.00:102.00:104.00:1300,104.00:106.00:103.00:105.00:1400,105.00:107.00:104.00:106.00:1500,106.00:108.00:105.00:107.00:1600,107.00:109.00:106.00:108.00:1700,108.00:110.00:107.00:109.00:1800,109.00:111.00:108.00:110.00:1900,110.00:112.00:109.00:111.00:2000,111.00:113.00:110.00:112.00:2100,112.00:114.00:111.00:113.00:2200,113.00:115.00:112.00:114.00:2300,114.00:116.00:113.00:115.00:2400,115.00:117.00:114.00:116.00:2500,116.00:118.00:115.00:117.00:2600,117.00:119.00:116.00:118.00:2700,118.00:120.00:117.00:119.00:2800,119.00:121.00:118.00:120.00:2900,120.00:122.00:119.00:121.00:3000,121.00:123.00:120.00:122.00:3100`
- `lookback` (query, optional, string) — Candles back for trend (default 10) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/volumeindicators-api/v1/obv?candles=100.00%3A102.00%3A99.00%3A101.00%3A1000%2C101.00%3A103.00%3A100.00%3A102.00%3A1100%2C102.00%3A104.00%3A101.00%3A103.00%3A1200%2C103.00%3A105.00%3A102.00%3A104.00%3A1300%2C104.00%3A106.00%3A103.00%3A105.00%3A1400%2C105.00%3A107.00%3A104.00%3A106.00%3A1500%2C106.00%3A108.00%3A105.00%3A107.00%3A1600%2C107.00%3A109.00%3A106.00%3A108.00%3A1700%2C108.00%3A110.00%3A107.00%3A109.00%3A1800%2C109.00%3A111.00%3A108.00%3A110.00%3A1900%2C110.00%3A112.00%3A109.00%3A111.00%3A2000%2C111.00%3A113.00%3A110.00%3A112.00%3A2100%2C112.00%3A114.00%3A111.00%3A113.00%3A2200%2C113.00%3A115.00%3A112.00%3A114.00%3A2300%2C114.00%3A116.00%3A113.00%3A115.00%3A2400%2C115.00%3A117.00%3A114.00%3A116.00%3A2500%2C116.00%3A118.00%3A115.00%3A117.00%3A2600%2C117.00%3A119.00%3A116.00%3A118.00%3A2700%2C118.00%3A120.00%3A117.00%3A119.00%3A2800%2C119.00%3A121.00%3A118.00%3A120.00%3A2900%2C120.00%3A122.00%3A119.00%3A121.00%3A3000%2C121.00%3A123.00%3A120.00%3A122.00%3A3100&lookback=10"
```

**Response:**
```json
{
    "data": {
        "obv": 44100,
        "note": "On-Balance Volume adds the candle's volume on an up close and subtracts it on a down close. Rising OBV confirms buying pressure.",
        "trend": "rising",
        "source": "VOLUME",
        "candles": 22,
        "lookback": 10,
        "change_over_lookback": 26500
    },
    "meta": {
        "timestamp": "2026-06-11T07:48:59.888Z",
        "request_id": "d47d35cd-1f36-42db-9de8-6f0496ec1771"
    },
    "status": "ok",
    "message": "OBV computed",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/volumeindicators-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "candles = open:high:low:close:volume, comma-separated, oldest first. MFI period defaults to 14 (needs period+1); CMF defaults to 20.",
        "source": "Computed in-process from caller-supplied OHLCV candles (no upstream)",
        "service": "volumeindicators-api",
        "endpoints": {
            "GET /v1/cmf": "Chaikin Money Flow — buying/selling pressure (candles=o:h:l:c:v,...&period=20).",
            "GET /v1/mfi": "Money Flow Index — volume-weighted RSI (candles=o:h:l:c:v,...&period=14).",
            "GET /v1/obv": "On-Balance Volume + trend (candles=o:h:l:c:v,...&lookback=10).",
            "GET /v1/meta": "This document."
        },
        "description": "Live volume-based technical indicators computed on demand from OHLCV candles. The mfi endpoint returns the Money Flow Index (volume-weighted RSI) with an overbought/oversold reading; the obv endpoint returns On-Balance Volume with its trend; the cmf endpoint returns Chaikin Money Flow (buying vs selling pressure). These need the volume of each candle, which makes them distinct from price-only indicator tools (RSI, MACD, Stochastic, ADX): they measure whether volume confirms price. Computed locally, nothing stored — works for forex, stocks, crypto or commodities.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-11T07:49:02.088Z",
        "request_id": "8c04de7a-5e5e-4305-9d99-bb9dd6e70eed"
    },
    "status": "ok",
    "message": "Meta",
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/volumeindicators-api
OpenAPI spec: https://www.oanor.com/api/volumeindicators-api/openapi.json
