Reference
Parameters
Every option the embed accepts, what it does, and a live chart showing it. Anything not on this page is ignored rather than passed through.
Two forms, one set of names
Each option is a data- attribute on the placeholder, or a query parameter on the iframe URL. The names and values are identical either way, so a snippet translates between the two by moving the dashes.
<div class="vp-chart"
data-symbol="AAPL"
data-interval="60"
data-theme="light"></div>
<script src="https://view.verticalprop.com/embed.js" async></script><iframe src="https://view.verticalprop.com/embed?symbol=AAPL&interval=60&theme=light"
width="100%" height="420" frameborder="0"></iframe>data-datafeed, and see the datafeed API. It is the commonest way an embed fails on the first try, so it is said beside the snippet rather than left to be discovered.Reference
| Parameter | Values | Default | Notes |
|---|---|---|---|
symbol | A ticker, pair, or venue-qualified pair | required | The only required option, and the only one whose absence is an error. |
interval | 1 5 15 30 60 240 1D 1W 1M | 1D | Minutes as bare numbers; D, W, M for the longer frames. With a host datafeed, additional resolutions such as 3 are accepted when declared in onReady().supported_resolutions. |
theme | light dark | dark | Can also be changed after load, see the API page. |
type | candles bars line area footprint | candles | footprint draws order flow per price level and needs a datafeed that supplies it: levels on the bars, a getFootprint method, or subscribeTrades. Without one it draws bars with no cells, never a distribution invented from the candle. |
toolbar | true false | false | The symbol, interval, indicator and drawing controls. Off suits an article; on suits a page where the chart is the point, and on is also what gives a reader the fx dialog, which is the only door to running their own indicators. |
symbolSearch | true false | true | Show the built-in pair selector when toolbar is on. Set false if your page has its own selector; setSymbol still works. |
legend | true false | true | The OHLC readout in the top-left of the plot. |
priceAnimation | true false | false | Ease the last bar's close, and the last-price line beside it, toward each live tick instead of snapping to it. Off by default, like the library and every other chart it runs on; pass true to turn it on for this embed. |
locale | A language tag | en | Display only. Never used to build a path or a request. |
indicators | Comma-separated listing ids | none | Community indicators. Up to five. See the indicators page. |
currency | EUR or EUR:EURUSD | the symbol’s own | Draw the chart in another currency. On your own site the rates come from YOUR feed, so name the market after the colon, see the currency page. |
calendar | 0 · 1 | 0 | Draw economic-calendar releases in the time gutter. OFF unless asked for, because a CPI flag is noise on a BTC chart and it is a request we make on your reader’s behalf, see the calendar page. |
timezone | Europe/Paris | the instrument’s own | The clock the time axis is read in. An IANA name — Europe/Paris, America/New_York, UTC — and never an offset like +02:00, which cannot express daylight saving and so is wrong for half the year. Left out, the chart keeps whatever the instrument’s session implies, which is what a 24/7 crypto chart wants. An unreadable value drops and the chart still renders. |
sessions | us, or label@HH:mm-HH:mm[@days],… | none | Tint trading sessions behind the bars. us is the two US equity bands (pre-market 04:00–09:30, after-hours 16:00–20:00); or spell your own, comma-separated, as Asia@00:00-08:00@12345. Hours are read on the symbol’s own clock, so a New York pre-market lands at 04:00 New York rather than 04:00 UTC; days is 0 = Sunday to 6 = Saturday and defaults to weekdays. The chart ships with none, because crypto trades around the clock. Colours are assigned from a fixed set; name them yourself through setSessions. |
live | line, or candle,window:900,accent:3b82f6 | off | Draw a live chart instead of the full one: a line or candles whose tip, axis and window ease toward each tick. Bare words pick the mode; key:value pairs set window, accent, value, change, momentum and exaggerate. Same datafeed as the full chart. With no interval it opens on one-minute bars. See the live charts page. |
numberFormat | auto · standard · european · plain · spaced | auto | How every number on the chart is punctuated: standard is 1,234.56, european 1.234,56, plain 1234,56 and spaced 1 234,56. auto is the reader’s own locale, read off their browser, so a German reader of an English article still sees a thousand the way they write one. Pin a preset when the numbers must read one way for everybody. |
colors | bg:0b0f19,up:26a69a | the theme’s own | Repaint the chart. Roles are bg, text, grid, up, down, crosshair, muted, border, chrome and accent; values are hex, and the # is optional because it opens a fragment in a URL. Anything omitted or misspelled keeps the theme’s colour, see the styling page. |
datafeed | The name of a feed your page registered | required off-site | An ATTRIBUTE only, and the loader derives the rest. A chart on a site that is not ours and names no feed renders an explanation instead of drawing our bars, see the datafeed page. |
datafeed is the one entry with no query-parameter form. You set data-datafeed="myfeed" and the loader appends the rest to the frame URL itself, a deliberate asymmetry, because a form with a mode flag and a separate name has a state where one is present and the other is not, which is a chart silently drawing our bars under your symbol.The same options, after the chart has mounted
Every parameter here is read once, when the frame loads. Several have a live equivalent through the loader, and the table below identifies which. A page that only ever renders markup can ignore it, and a page whose chart changes needs nothing else.
| Parameter | After mount | Notes |
|---|---|---|
symbol | chart.setSymbol(s) | Keeps drawings and indicators, because it changes state rather than remounting. |
interval | chart.setInterval(v) | |
theme | chart.setTheme(t) | Set the attribute too, or a reader on the other theme sees one frame of the wrong ground. |
type | chart.setChartType(t) | |
colors | chart.setStyle({ … }) | Same ten role names. Merges, and outlives a setTheme. |
toolbar | no | The widget builds its chrome at construction, so this decides what EXISTS rather than what is shown. |
legend | no | Same reason. |
calendar | no | Same reason, though the reader can switch the marks off from the chart's own menu. |
currency | no | The picker in the toolbar is the reader's way to change it. |
indicators | no | Community indicators are re-synced on a timer, so a takedown reaches an open chart; the LIST is fixed at mount. |
locale | no | |
numberFormat | chart.setNumberFormat(f) | Same five names. auto returns to the reader's locale. |
sessions | chart.setSessions(b) | Takes full band objects with a colour and an optional timezone, which the URL grammar cannot carry. Replaces the set; [] clears it. |
live | no | It decides which chart the frame builds. chart.setSymbol and chart.setTheme still work on a live chart; the other methods drive the full chart only and are refused. |
datafeed | no | The chart consumes its feed at construction, so register the feed before the frame requests it. The order of the two script tags is what matters. |
symbol
The instrument to draw. Four shapes resolve, and the chart picks the venue from the shape rather than asking you to name one:
| Shape | Example | Resolves to |
|---|---|---|
AAPL | AAPL, NVDA, TSLA | US equities |
BTC-USDT | BTC-USDT, ETH-USDT | OKX spot |
BINANCE:BTCUSDT | or HL:BTC | A named venue |
^GSPC | ^GSPC, ^VIX, GC=F, EURUSD=X | Indices, futures, FX |
interval
The bar size the chart opens on. With toolbar on, the reader can change it; with the toolbar off, this is the only interval they will see.
With datafeed=host, the opening interval and chart.setInterval()use the host datafeed's onReady().supported_resolutions. For example, declare ["1", "3", "5"] to use data-interval="3" orchart.setInterval("3"). Unsupported opening intervals report a data error; unsupported commands reject without changing the interval. If the feed omits the list, the default intervals above apply.
symbolSearch
Keep toolbar=true and set symbolSearch=0 in the iframe URL, or data-symbolSearch="false" on the loader element, to hide only the built-in pair selector. Your own selector can still call chart.setSymbol().
<div class="vp-chart"
data-symbol="BTC-USDCX"
data-datafeed="titan"
data-toolbar="true"
data-symbolSearch="false"
data-interval="3"></div>theme
Two themes, and no automatic matching of the reader’s system setting, an embed sits inside your page, so it should follow YOUR design rather than their OS. If your site has a theme toggle, send setTheme when it flips.
type
Five chart types. candles and bars show the full range of each period; line and area show closes only, which reads better at small sizes and in a column of prose. footprint is the fifth and is not drawn below: it shows volume per price level inside each bar, which only exists when your datafeed supplies order flow, so on the first-party feed these panels use it would be four charts and an empty one. See order flow for the three ways to feed it.
The same instrument and window, drawn four ways.
numberFormat
How every number is punctuated. Leave it out and the chart follows the reader’s own locale, which is usually right: an English article read from Berlin shows 1.234,56 to the person in Berlin. Pin a preset when the numbers must read one way for everybody, and read the price scale to see the difference.
sessions
Tinted bands behind the bars marking a venue’s sessions. us gives the two US equity bands; anything else is spelled label@HH:mm-HH:mm, comma-separated, with an optional @days such as @12345, the weekdays it applies to as digits. Hours are read on the instrument’s own clock, and a band whose end is at or before its start wraps midnight, so Overnight@22:00-06:00 is an eight-hour band. Absent, no bands are drawn.
toolbar and legend
Both off is the smallest honest chart: a price series, an axis, and the attribution mark. Both on is close to the full terminal experience. Most articles want the first; a “live prices” page usually wants the second.
Preparing the snippet…
Preparing the snippet…
Height and width
The chart always fills its container’s width. Height is yours to set: with the loader, data-height is the STARTING height and the frame then reports what it would like, so the chart is never letterboxed. Without the loader, the height you put on the <iframe> is final.
Below about 200px the chart drops its axis labels to keep the series legible, and below roughly 320px wide the drawing rail is hidden automatically, a phone should spend its width on candles, not on a column of tools nobody uses with a thumb.
Unknown parameters
Anything not in the table above is dropped by the loader and ignored by the chart. That is a deliberate allowlist rather than an oversight: it means a parameter cannot be smuggled through to something that was never reviewed, and it is what makes the attribution mark structural rather than a default somebody can turn off.