Helious Boards API
The FX momentum, implied volatility, correlation and Hormuz boards: newest reading plus history.
The FX momentum, implied volatility, correlation and Hormuz boards: newest reading plus history.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/helious-io:helious-io-boards-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Helious Public Boards API
version: '2026-11-06'
summary: Real-time US economic releases, Treasury auction results, rates and market news from the Helious desk.
description: 'Read-only surface of api.helious.io. Every dataset here is first-party: captured by the Helious desk the moment it prints, with methodology at https://helious.io/methodology. On /v1/feed and the stream the Helious news wire rides beside the desk''s own posts: a wire headline is marked kind: headline and scored like everything else. The /v1 endpoints are the versioned contract for agents, and every tier sees the same endpoints and the same response shapes: only the history window, the delay and the market-data axis change, so an integration built keyless survives every upgrade untouched. The ladder: Sample (no key, no account, $0) gets 1 day of history, news and prints 1 hour behind, no market prices at all (price endpoints answer with the upgrade steps instead of numbers) and 30 calls a minute and 50 credits a month, shared by everyone on your network address. Free (a key on a free helious.io account, $0) gets 7 days of history, news 1 hour behind, every price board 60 minutes behind, and 60 calls a minute and 100 credits a month of your own. ONE CREDIT WALLET pays for everything an account does: a data call on any /v1 endpoint or MCP tool is 1 credit, a typed Ask Helious question in the terminal is 10, and on Free, Squawk and Starter the query fresh=1 (fresh: true as an MCP tool argument) answers that one call live for 5 credits. /v1/me, /v1/access, the MCP handshake, get_access_info, list_series, every error and every refusal are free; a keyless market wall is free too. Every answer carries X-Credits-Charged and X-Credits-Remaining headers and the same two numbers in meta (credits_charged, credits_left), and an empty wallet is a 429 with code out_of_credits carrying credits_left, resets_on, next_step (one sentence to relay), the packs that top it up (500 for $9.99, 1,500 for $24.99, never expiring) and upgrade_url: two ways on, a pack or a plan, and the person who owns the key chooses. Not on Pro and need one call live? Add fresh=1 to that request (fresh: true in an MCP tool''s arguments) and it answers live for 5 credits. Each delayed stream snapshot takes one credit on Free and with no key; a paid plan''s stream takes none. Starter ($14.99/mo or $135/yr) gets 12 months of history, live news and prints, every price board 60 minutes behind (live for 5 credits a call with fresh=1), 1,500 credits a month, at 90 calls a minute. Pro ($39.99/mo or $360/yr) gets 24 months of history, 3,000 credits a month and everything live for 1 credit (yields, treasuries, commodities, equities, FX, volatility, correlations) at 120 calls a minute, the streaming WebSocket included. Ultimate ($99/mo or $891/yr) gets 10 years of history, everything live, no credit cap, commercial use and redistribution, 300 calls a minute and the live stream on 5 connections a key. The stream at wss://api.helious.io/v1/stream is open on every tier, key or no key: below Pro it runs the delayed lane (one snapshot a minute, prices and the ranked NASDAQ-100 board 60 minutes behind, news on the plan''s own delay), and Pro and Ultimate run the live lane (every price tick, print and NASDAQ-100 update pushed the moment it happens, on up to 2 connections a key on Pro and 5 on Ultimate), in identical message shapes, so a stream integration survives the upgrade untouched. Authenticate with the same hel_ key sent as the ''Authorization: Bearer hel_...'' header, never a query parameter; the socket sends a hello whose mode field names your lane, feed items in the /v1/feed shape, price ticks, the ranked NASDAQ-100 board, daily official closes and the Helious momentum score, and answers ''ping'' with pong. Keys are sent as ''Authorization: Bearer hel_...''; GET /v1/access returns the ladder and the exact upgrade steps in plain words. There is also an MCP server at https://api.helious.io/mcp: point any MCP client at that URL and the same data arrives as tools.'
x-stream: 'wss://api.helious.io/v1/stream is the live WebSocket, which OpenAPI cannot describe as a path. One socket on every plan: live on Pro (2 connections a key) and Ultimate (5), delayed below Pro (one snapshot a minute). Messages: hello (mode names the lane), feed (items in the /v1/feed shape; a release print is kind post, category release, with the actual, forecast, previous and sigma in its text), prices, ndx, market_data, score (the Helious momentum score when it moves, in the /v1/score shape), and pong to a ping. The hel_ key goes in the Authorization: Bearer header, never a query parameter; no key opens the delayed lane. Documented at https://helious.io/developers/#stream and https://helious.io/developers/economic-calendar-api/#stream.'
contact:
name: Helious support
email: support@helious.news
url: https://helious.io/contact
termsOfService: https://helious.news/terms
servers:
- url: https://api.helious.io
tags:
- name: Boards
description: 'The FX momentum, implied volatility, correlation and Hormuz boards: newest reading plus history.'
paths:
/v1/nasdaq100:
get:
tags:
- Boards
summary: The NASDAQ-100, ranked best to worst on the session
description: Every NASDAQ-100 stock with price, change, sector and rank, sorted by the session's move. Live on Pro and Ultimate; Free, Squawk and Starter get the board 60 minutes behind for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers. limit trims the list; the laggard rides along so the bottom of the board is visible even on a short slice. Pass symbol to ask about one company instead of the whole board.
security:
- {}
- helious_key: []
parameters:
- name: limit
in: query
required: false
schema:
type: integer
default: 25
- name: symbol
in: query
required: false
schema:
type: string
description: One or more NASDAQ-100 tickers, comma separated, like AAPL. Returns that name's price, session move and rank on the board. Empty returns the whole ranked board.
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Nasdaq100
x-operation-id-source: derived
/v1/fx:
get:
tags:
- Boards
summary: 'FX momentum board: newest reading and history'
description: Seven major currencies scored against the basket. current is the newest board; history is past boards back to since, within your plan's depth. Live on Pro and Ultimate; Free, Squawk and Starter get the board 60 minutes behind for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers.
security:
- {}
- helious_key: []
parameters:
- name: since
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 60
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Fx
x-operation-id-source: derived
/api/seo/fx:
get:
tags:
- Boards
summary: FX momentum sample (JSON)
description: 'The current seven-major currency-strength reading: each currency scored against the whole basket, with the 1-day and 5-day components and the exact tape window each was measured over. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/fx, where depth follows your plan.'
responses:
'200':
description: Board reading
content:
application/json:
schema:
type: object
operationId: getApiSeoFx
x-operation-id-source: derived
/api/seo/fx.csv:
get:
tags:
- Boards
summary: FX momentum sample (CSV)
description: 'Columns: currency, momentum_vs_basket_pct, d1_pct, d5_pct. Seven rows, one per basket currency, with a trailer line pointing to the API. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/fx, where depth follows your plan.'
responses:
'200':
description: CSV file
content:
text/csv:
schema:
type: string
operationId: getApiSeoFxCsv
x-operation-id-source: derived
/v1/vol:
get:
tags:
- Boards
summary: 'Implied volatility board: newest reading and history'
description: VIX and the other vol gauges with their one-year percentile. Same shape as /v1/fx. Live on Pro and Ultimate; Free, Squawk and Starter get the board 60 minutes behind for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers.
security:
- {}
- helious_key: []
parameters:
- name: since
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 60
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Vol
x-operation-id-source: derived
/api/seo/vol:
get:
tags:
- Boards
summary: Implied volatility sample (JSON)
description: 'The current implied-volatility board: level, session change, and trailing-year percentile with a calm/normal/elevated/stressed read for each gauge. Each row carries the session its own close came from, and `measured_through` is the newest across the board. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/vol, where depth follows your plan.'
responses:
'200':
description: Board reading
content:
application/json:
schema:
type: object
operationId: getApiSeoVol
x-operation-id-source: derived
/api/seo/vol.csv:
get:
tags:
- Boards
summary: Implied volatility sample (CSV)
description: 'Columns: gauge, measures, session, level, change, change_pct, percentile_1y, regime, low_1y, high_1y. One row per gauge, with a trailer line pointing to the API. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/vol, where depth follows your plan.'
responses:
'200':
description: CSV file
content:
text/csv:
schema:
type: string
operationId: getApiSeoVolCsv
x-operation-id-source: derived
/v1/correlations:
get:
tags:
- Boards
summary: 'Cross-asset correlation matrix: newest reading and history'
description: Stocks, bonds, the dollar, gold and oil over 30 to 120 day windows. Same shape as /v1/fx. Live on Pro and Ultimate; Free, Squawk and Starter get the board 60 minutes behind for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers.
security:
- {}
- helious_key: []
parameters:
- name: since
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 60
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Correlations
x-operation-id-source: derived
/v1/imbalance:
get:
tags:
- Boards
summary: 'Helious market imbalance: market-on-open and market-on-close reads'
description: Net dollar imbalance into the opening and closing auctions (shares not paired at the reference price, times the stock's previous close, buys less sells) over every NYSE listed company (nyse) and the S&P 500 names the feed carries (spx, coverage stated in the read), with the ten largest single names to buy and to sell, the paired volume and a plain-English read; `tiers` gives each basket's cut-offs in USD (below `small_below_usd` reads small, from `large_from_usd` large). Reads land at 9:28 and 9:29 ET for the open and 15:50, 15:55 and 15:58 ET for the close (three hours earlier for the close on a 1pm early close, none on an exchange holiday; `schedule` gives today's and the next session's moments in UTC); `open` and `close` carry the newest read of each, `reads` the ones behind them. Every read is stored, so `since` reaches back through the plan's history window. Helious calculates every figure itself from each listing's own auction print. Nasdaq-listed names are not on the feed. Live on Pro and Ultimate; Free, Squawk and Starter get each read the moment its auction prints (9:30 ET for the open, 4:00 PM ET for the close) for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers.
security:
- {}
- helious_key: []
parameters:
- name: since
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 20
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Imbalance
x-operation-id-source: derived
/v1/imbalance/{symbol}:
get:
tags:
- Boards
summary: One name's auction imbalance prints in one session
description: 'Every read of the open and the close for one symbol, newest first: side, shares, price (the previous close the print is marked at), dollars, paired shares and the exchange''s clearing price. The newest session by default; date=YYYY-MM-DD reads any stored session inside the plan''s history window. Covers every NYSE main-board listing, companies and the NYSE-listed ETFs; a Nasdaq or NYSE Arca listing (SPY, QQQ) answers on_feed=false. Same plan rules as /v1/imbalance: on Free, Squawk and Starter each read opens when its auction prints.'
security:
- {}
- helious_key: []
parameters:
- name: symbol
in: path
required: true
schema:
type: string
example: JPM
- name: date
in: query
required: false
description: An ET session date, YYYY-MM-DD. Empty reads the newest session.
schema:
type: string
example: '2026-11-06'
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1ImbalanceBySymbol
x-operation-id-source: derived
/v1/score:
get:
tags:
- Boards
summary: 'The Helious momentum score: newest reading and history'
description: 'Helious''s own gauge of the session, bonds and equities each on a -10 to +10 scale (positive bullish for that asset, negative bearish), with a 0 to 100 strength and the desk''s signal label, plus the quarter-hour history. It is the momentum score the Helious terminal shows: a blend of the scored headlines and the live tape, recomputed as either moves, a reading of the desk and never a market fact or a forecast. Same shape as /v1/fx. Live on Pro and Ultimate; Free, Squawk and Starter get the reading 60 minutes behind for 1 credit and live for 5 with fresh=1; without a key the upgrade steps come instead of numbers. The stream pushes the same reading as {type:''score''} when it moves.'
security:
- {}
- helious_key: []
- helious_oauth:
- market:read
parameters:
- name: since
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 60
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Score
x-operation-id-source: derived
/api/seo/corr:
get:
tags:
- Boards
summary: Cross-asset correlations sample (JSON)
description: 'The current correlation matrix over all four windows (30/60/90/120 days) with the notable pairs off the default window. Carries `proxy_note`: the high yield credit row is an ETF price, never a spread. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/correlations, where depth follows your plan.'
responses:
'200':
description: Board reading
content:
application/json:
schema:
type: object
operationId: getApiSeoCorr
x-operation-id-source: derived
/api/seo/corr.csv:
get:
tags:
- Boards
summary: Cross-asset correlations sample (CSV)
description: 'The default-window matrix as a square grid: columns are asset, window_days, measured_through, then one column per asset. A trailer line points to the API. A keyless sample carrying the current reading only. The archive and the live feed come through /v1/correlations, where depth follows your plan.'
responses:
'200':
description: CSV file
content:
text/csv:
schema:
type: string
operationId: getApiSeoCorrCsv
x-operation-id-source: derived
/v1/hormuz:
get:
tags:
- Boards
summary: Strait of Hormuz transits per day
description: Ships through the strait per day, split tanker and cargo, measured by Helious from live ship tracking.
security:
- {}
- helious_key: []
parameters:
- name: days
in: query
required: false
schema:
type: integer
default: 60
- $ref: '#/components/parameters/fresh'
responses:
'200':
description: summary + source + data + meta envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
'429':
description: 'Over the per-minute limit (code rate_limited, Retry-After the rest of the minute) or the wallet cannot pay (code out_of_credits: credits_left, resets_on, retry_after_seconds, packs, topup_url, upgrade_url, and fresh_costs on a held plan). Nothing is charged for a refusal.'
operationId: getV1Hormuz
x-operation-id-source: derived
/api/seo/hormuz:
get:
tags:
- Boards
summary: Strait of Hormuz transits sample (JSON)
description: 'The Strait of Hormuz daily transit dataset: the newest measured day with its tanker split, 7-day, 30-day and pre-crisis averages, a 30-day series and the desk read. The measured record publishes weekly, so the newest day runs a few days behind and carries `age_days`. A capped sample; the full history comes through /v1/hormuz, where depth follows your plan.'
responses:
'200':
description: Board reading
content:
application/json:
schema:
type: object
operationId: getApiSeoHormuz
x-operation-id-source: derived
/api/seo/hormuz.csv:
get:
tags:
- Boards
summary: Strait of Hormuz transits sample (CSV)
description: 'Columns: date, total_transits, tankers, cargo, other. Recent days only, with a trailer line pointing to the API. The full history comes through /v1/hormuz, where depth follows your plan.'
responses:
'200':
description: CSV file
content:
text/csv:
schema:
type: string
operationId: getApiSeoHormuzCsv
x-operation-id-source: derived
/api/seo/hormuz-activity:
get:
tags:
- Boards
summary: Strait of Hormuz live Gulf activity (JSON)
description: 'Hourly first-party history of live Gulf shipping activity beside the weekly transit count: vessels active on AIS, dark tankers (the measured size of the transit count''s AIS blind spot) and per-port congestion. NOT a transit count: these run roughly 85-270 hourly, while the Strait of Hormuz TRANSIT count is a different, much smaller quantity (roughly 1-8/day) served by /api/seo/hormuz. Never sum or compare the two. Aggregate the activity series with a median, never a mean: the upstream collection is tiled and undercounts one-sidedly when a tile fails. Each row carries the basis that produced it; never fit across a basis change. Query param `days` (1-90, default 14).'
parameters:
- name: days
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 90
default: 14
responses:
'200':
description: Hourly activity series with coverage stats
content:
application/json:
schema:
type: object
operationId: getApiSeoHormuzActivity
x-operation-id-source: derived
/api/seo/hormuz-independent:
get:
tags:
- Boards
summary: Strait of Hormuz independent transit comparison
description: 'Weekly transit totals from independent tracking, alongside this platform''s own total for the same calendar week and the ratio between them. The two measure different populations: the daily count at /api/seo/hormuz sees only vessels broadcasting AIS, while these totals include vessels crossing with transponders off. The daily count has run 2.0-3.1x lower week by week and the gap is widening. Compare them; never sum or average them, since a blend would be true of neither. `ours` is summed from the same calendar days as each independent week, and is null for any week not fully covered rather than reported as a misleading partial. Query param `weeks` (1-260, default 52).'
parameters:
- name: weeks
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 260
default: 52
responses:
'200':
description: Weekly independent totals with the ratio to this platform's own count
content:
application/json:
schema:
type: object
operationId: getApiSeoHormuzIndependent
x-operation-id-source: derived
/api/seo/hormuz-activity.csv:
get:
tags:
- Boards
summary: Strait of Hormuz live Gulf activity (CSV)
description: 'Columns: hour_utc, vessels_active, vessels_active_tanker, vessels_active_cargo, dark_tankers, dark_tankers_7d_baseline, congestion_outside_strait, congestion_inside_strait, basis. NOT a transit count: the Strait of Hormuz TRANSIT count is a different, much smaller quantity served by /api/seo/hormuz.csv. Never sum or compare the two. Query param `days` (1-90, default 14).'
parameters:
- name: days
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 90
default: 14
responses:
'200':
description: CSV file
content:
text/csv:
schema:
type: string
operationId: getApiSeoHormuzActivityCsv
x-operation-id-source: derived
components:
parameters:
fresh:
name: fresh
in: query
required: false
schema:
type: boolean
description: 'Not on Pro or Ultimate? Add fresh=1 to this request and this one call answers live (news, prints, auctions, boards and prices at the live instant) for 5 credits. Left out, Free, Squawk and Starter get the answer 60 minutes behind for 1 credit. With fewer than 5 credits left the live call is refused with out_of_credits and nothing is charged; the same call without the flag still answers for 1. Accepted and free on Pro and Ultimate, where the view is already live. Ignored without a key: a free account key has the flag. Over MCP the same flag is fresh: true in the tool''s arguments.'
schemas:
Envelope:
type: object
description: Every /v1 response. `summary` states the answer as one plain-English sentence and `source` says who to credit for it, both before the raw `data`, so the finished claim is the first thing a reader meets.
properties:
summary:
type: string
description: The answer as a sentence, with the numbers in it. Identical to the sentence the matching MCP tool returns.
source:
type: object
description: Who to credit and where a reader can check the number.
properties:
name:
type: string
example: Helious
url:
type: string
format: uri
description: The Helious page backing this answer.
cite_as:
type: string
example: Helious, https://helious.io/auctions
attribution:
type: string
live:
type: string
description: How current these numbers are on YOUR plan, and how to ask for them again. Says the data is live only on a tier that serves it live.
data:
type: object
description: The dataset itself.
meta:
type: object
description: When it was true, and what your plan allows.
plan_limit:
type: object
description: Present only when your plan moved the window AND Helious holds rows older than it. Says this is a plan limit rather than missing data, where the record begins (record_begins, on the lanes that say it), the plans that reach further, and the exact step to relay to the person you work for.
record_start:
type: object
description: 'Present instead of plan_limit when you asked for more history than any plan reads here: record_begins is the first day any plan reads (null when there is none yet), your plan''s window already reaches it, older_rows_on_any_plan is false, and meta.clamped is false. No plan reaches further back, so there is nothing to upgrade for.'
securitySchemes:
helious_key:
type: http
scheme: bearer
description: 'Your Helious API key, like hel_xxx, made on your helious.io account page (Account, then API keys). Every /v1 endpoint also works with no key at the sample tier: 1 day of history, news 1 hour behind, no market prices. A free account key gets 7 days and a rate budget of your own. Starter ($14.99/mo) takes the news live, reaches 12 months back and adds the Treasury curve 60 minutes behind; Pro ($39.99/mo) makes every price live with 24 months of history, the /v1/stream WebSocket included; Ultimate ($99/mo) reaches 10 years, allows commercial use and holds the live stream on 5 connections a key (Pro holds 2).'
helious_oauth:
type: oauth2
description: Sign the person in instead of asking them for a key. Dynamic client registration is open, so your client can enrol itself; the one human step is the consent screen. Access tokens last an hour; ask for offline_access to get a rotating refresh token. Full details at https://helious.io/auth.md.
flows:
authorizationCode:
authorizationUrl: https://helious.io/oauth/authorize
tokenUrl: https://api.helious.io/oauth/token
refreshUrl: https://api.helious.io/oauth/token
scopes:
market:read: Read Helious market data at that plan level.
account:read: See which plan the account is on.
openid: Confirm the account identity to your app.
offline_access: Get a refresh token so you stay connected.