The chart agrees with the tape.
Candles and the latest mark come from one feed, so the two surfaces cannot disagree.
Two calls, one contract.
Bars for the chart, the latest mark for the tape, from the same schema.
84,240.00USD
published 02:38:15 UTC · from the tape
84,194.62USD
bucket 02:37 UTC · from the chart
One decimal convention on both sides, so this is a subtraction.
119 bars · 1m buckets · every body and wick is that bucket's own open, high, low and close · the dotted rule is that newest close
119 1m bars for Bitcoin, from 2026-09-24 00:39 to 2026-09-24 02:37. The drawn window runs from 83,687 to 84,529 USD, with the latest mark at 84,240.00.
| Printed | Price | Move |
|---|---|---|
| 02:38:15 | 84,240.00 | first |
One row per published mark — a read that returns the same updated_at prints nothing. The last ten stay on the tape.
GET /v1/prices/ohlcv?asset=BTC&interval=1mGET /v1/prices/latest?assets=BTCWhat draws a candle.
Every figure below is that bar, printed to the places the rest of the screen reads at.
- closestring
- 337.00Bar close as a decimal string, matching the mark on the tape.
- timestampstring
- 2026-09-23T00:00:00.000ZBucket start, ascending, so bars append without a re-sort.
- intervalenum
- 1dThe bucket you asked for, echoed back on every bar.
- volumestring | null
- 1308.09Null means the source published no size, not a measured zero.
And what a bar is not.
A bar is its bucket and nothing more. There is no bid behind it, no ask, and no size at a level — LIAW publishes prices, so the book is not ours to hand you.
Draw the chart, then the tape.
const bars = await ohlcv('BTC', { interval: '1m', limit: 240 }) const [tick] = (await latest('BTC')).data chart.draw(bars.data) tape.write(tick.price)
Two polls on a timer, and the chart cannot disagree with the tape because both came out of the same schema.
Bars append.
timestamp ascends on every response, so a redraw appends to the series instead of re-sorting it.
The mark replaces itself.
One row per asset per read, and updated_at says whether it moved since the last one.
The blotter stays yours.
Orders, positions and fills never leave your terminal — this contract ends at the price.
Point a terminal at it.
Open the live board, or read the candles reference.