Fathom Levels
Your reference levels, always in view. Open, extremes and VWAP frame your read of the session.
Keeps the last days sessions, weeks weeks and months months, current period included, with their levels: midpoint, low, high, open and close (past periods only), plus the POC, 70% value area and VWAP for sessions and weeks. Levels of the current period are provisional and update on every closed bar; they become final when the period ends and are removed once it leaves the window.
- Identifier
key-levels- Objects received
level- Calculation
- Over the requested periods
- Historical cost
- 1 unit per trade
Subscribe
The same params work in real time, on historical data and in exports. Any you leave out take their default value.
{
"t": "subscribe",
"sub": "key-levels",
"instrument": "NQ.front",
"indicator": "key-levels",
"params": {
"days": 2,
"months": 0,
"skipCurrent": false,
"timeframe": 300,
"weeks": 1
},
"mode": "live",
"from": "live"
}Parameters
As soon as a parameter differs from its default, the subscription counts as a custom configuration. A new value may require preparing a new calculation (status warming).
| Parameter | Type | Default | Allowed values | Unit | Description |
|---|---|---|---|---|---|
days | integer | 2 | 0 to 30 | — | Number of sessions kept, current session included. |
months | integer | 0 | 0 to 12 | — | Number of months kept, current month included (no POC, value area or VWAP). |
skipCurrent | boolean | false | true · false | — | Hide the levels of the current period. |
timeframe | integer | 300 | 15 · 60 · 300 | — | Bar duration in seconds: 15, 60 or 300. |
weeks | integer | 1 | 0 to 12 | — | Number of weeks kept, current week included. |
Objects received
Each object keeps the same id from one update to the next. Its data is in the data field. Prices are in ticks: multiply them by the instrument’s tick size (GET /v1/instruments) to get points.
level updated continuously
Level; provisional during the current period.
Format of the id: <period>:<key>:<label>. While it changes, the object is sent with final: false, and each new version fully replaces the previous one. Its last version carries final: true.
| Field | Type | Unit | Present | Description |
|---|---|---|---|---|
current | boolean | — | always | Level of the current period, hence provisional. |
key | string | — | always | Session (closing date), Sunday of the week, or month as YYYY-MM. |
label | string · MP | L | H | O | C | P | VH | VL | VW | — | always | Midpoint, low, high, open, close, POC, value area high and low, VWAP. |
period | string · day | week | month | — | always | Period. |
price | number | ticks | always | Price of the level. |
Calculation warm-up
The calculation covers the days, weeks or months requested in the parameters. If nobody is using your parameters yet, the server first recomputes those periods (status warming), then goes live (status live).
Historical data follows the same rules: a query over a past period returns exactly what the real-time stream published.
Example messages
Messages received with the subscription parameters above. Over WebSocket, each message also carries sub and cursor.
{
"t": "upsert",
"id": "day:2026-09-24:VH",
"final": false,
"ts": "1790208000058746563",
"data": {
"period": "day",
"key": "2026-09-24",
"label": "VH",
"price": 123177,
"current": true
}
}{
"t": "upsert",
"id": "week:2026-09-20:VW",
"final": false,
"ts": "1790208000058746563",
"data": {
"period": "week",
"key": "2026-09-20",
"label": "VW",
"price": 123433.46225133342,
"current": true
}
}{
"t": "upsert",
"id": "day:2026-09-24:MP",
"final": true,
"ts": "1790287500006398661",
"data": {
"period": "day",
"key": "2026-09-24",
"label": "MP",
"price": 122395,
"current": false
}
}JSON schemas
To validate or type your data: the JSON schemas of the parameters and of data, also available from GET /v1/indicators. The SDK can generate types from them.
Parameters schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://fathomcharts.com/schemas/key-levels/params.json",
"type": "object",
"additionalProperties": false,
"properties": {
"days": {
"type": "integer",
"default": 2,
"minimum": 0,
"maximum": 30,
"description": "Number of sessions kept, current session included."
},
"months": {
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 12,
"description": "Number of months kept, current month included (no POC, value area or VWAP)."
},
"skipCurrent": {
"type": "boolean",
"default": false,
"description": "Hide the levels of the current period."
},
"timeframe": {
"type": "integer",
"default": 300,
"enum": [
15,
60,
300
],
"description": "Bar duration in seconds: 15, 60 or 300."
},
"weeks": {
"type": "integer",
"default": 1,
"minimum": 0,
"maximum": 12,
"description": "Number of weeks kept, current week included."
}
}
}Schema of the data field
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://fathomcharts.com/schemas/key-levels/data.json",
"title": "level",
"type": "object",
"additionalProperties": false,
"required": [
"period",
"key",
"label",
"price",
"current"
],
"properties": {
"current": {
"type": "boolean",
"description": "Level of the current period, hence provisional."
},
"key": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}(-[0-9]{2})?$",
"description": "Session (closing date), Sunday of the week, or month as `YYYY-MM`."
},
"label": {
"type": "string",
"enum": [
"MP",
"L",
"H",
"O",
"C",
"P",
"VH",
"VL",
"VW"
],
"description": "Midpoint, low, high, open, close, POC, value area high and low, VWAP."
},
"period": {
"type": "string",
"enum": [
"day",
"week",
"month"
],
"description": "Period."
},
"price": {
"type": "number",
"description": "Price of the level."
}
}
}