Financial data, one API.

A read-only HTTP, WebSocket, and MCP interface over a 961 GB financial dataset — symbols, OHLC bars, fundamentals, short interest, SEC filings, news with sentiment, ownership, regulatory, macro, plus a 33.8 M-row KOL tweet archive with 10 M mirrored images. Refreshed continuously, streamed live.

287
data sources
33.9 M
KOL tweets
10 M
tweet images
~20 M
news articles
7,851
symbols
31 M+
prediction markets
251 M+
PM trades
1.4 TB
total dataset

01Quick start

Every endpoint is a plain GET that returns JSON. A Lumid PAT is required — pass it as Authorization: Bearer <pat>. Anonymous requests get 401. The authed tier is 100 req/min.

Latest snapshot for one symbol

Profile, sector, market cap from the warehouse.
curl https://kv.run:5000/symbols/AAPL

OHLC bars — one liner

Defaults to last 365 d for 1d, 7 d for 5min, 1 d for 1min.
curl "https://kv.run:5000/ohlc/AAPL?interval=1d"

Real-time tick snapshot

Last-known tick across the Tier-C cache.
curl "https://kv.run:5000/quotes?symbols=AAPL,BTCUSD"

Stream live ticks (WebSocket)

Lumid bearer required. Subscribe by symbol after connect.
websocat -H="Authorization: Bearer $TOKEN" \
  wss://kv.run:5000/ws/quotes

Server-side screener

Sector / industry / market-cap / exchange / instrument-type.
curl "https://kv.run:5000/screener?sector=Technology&market_cap_min=1e12"

KOL tweets — archive search

33.9 M tweets, 2010-2026. Full-text + cashtag indexed.
curl "https://kv.run:5000/kols/tweets/search?q=earnings+beat"

News firehose by category

18.4 M articles across multiple wire and CSV feeds.
curl "https://kv.run:5000/news/latest?category=general&limit=20"

Tweet image (locally mirrored)

7.8 M cached images. by-url falls through to pbs.twimg.com if not cached.
curl -L "https://kv.run:5000/kols/media/by-url?u=<twitter-cdn-url>"

02Surface

Endpoints are grouped by data domain. Open any group in the OpenAPI spec or the guide for schemas and example payloads.

/Symbols
Universe lookup, search, profile, the canonical 7,851-symbol roster.
GET /symbols • /universe • /screener
/OHLC
1-min through 4-hour and dividend-adjusted daily bars across asset classes. US equity bars sourced from two independent feeds — merged automatically, with seamless failover if one has a gap.
GET /ohlc/{symbol}?interval=…
/Realtime
WS + SSE tick streams, last-tick snapshot, day range + 50/200-day SMAs, news WS, lag percentiles per source.
WSS /ws/quotes • /ws/news • SSE /quotes/stream • /quote-stats/{sym}
/Prediction Markets
Kalshi + Polymarket: 31M+ markets (Polymarket back to 2020-10), 251M+ trades, 161M+ L2 orderbook snapshots. Intraday OHLC at 1m/5m/15m/1h/1d — Polymarket candles union executed trade prints with orderbook-midprice (~7-month history); Kalshi candles back to 2021-06. Open-interest history, top holders, wallet leaderboard + PnL/positions/activity, cross-venue matched pairs. Live: CLOB-WSS recorder captures 500 active Polymarket markets; consume via SSE /prediction-markets/stream.
GET /prediction-markets/candles/{venue}/{id}?interval=1|5|15|60|1440 • /trades/{venue}/{id} • /markets/search • SSE /stream
/Fundamentals
Income, balance, and cash-flow statements from multiple sources — multi-source coverage for cross-validation. Wide-format latest or historical.
GET /fundamentals/{symbol} • /financials/{symbol}/{kind}
/Analysis
Ratios, key metrics, point-in-time metrics snapshot (52-week stats, returns, beta), per-statement growth, financial scores, owner earnings, DCF. Technical indicators (SMA/EMA/RSI/MACD) from two independent sources for cross-validation.
GET /ratios/{sym} • /key-metrics/{sym} • /technical/{sym} • /dcf/{sym}
/Estimates
Analyst price targets, grades (current + history), upgrade-downgrade news.
GET /price-target/{sym} • /grades/{sym}
/Investors
13F top holders, insider transactions, fund ownership, gov / acquisitions.
GET /holders/{sym} • /insider/{sym} • /gov-trades/{sym}
/Events
Earnings calendar, transcripts, IPOs, mergers, FDA calendar.
GET /earnings/{sym} • /transcripts/{sym} • /ipos
/News
~20 M articles deduped across multiple wire and CSV feeds, including structured per-ticker sentiment (positive/negative/neutral + reasoning). Per-symbol, global firehose, or PG full-text search.
GET /news/latest • /news/search • /news/{symbol}
/KOL
Curated 3,702-handle roster + live cashtag SSE. 33.9 M-row Postgres archive (2010-2026, full-text + cashtag-indexed) with 10 M mirrored images served at /kols/media/.
GET /kols/tweets/search • /kols/{handle}/tweets/history • /kols/media/by-url
/ETF
Info, holdings, sector weights, asset-class exposure for 500 ETFs.
GET /etf/{sym}/info • /etf/{sym}/holdings
/Short Data & Filings
Bi-weekly FINRA short interest, daily off-exchange short volume. Machine-readable SEC risk-factor disclosures (primary/secondary/tertiary taxonomy). Plain-text 10-K annual-filing sections.
GET /short-interest/{sym} • /short-volume/{sym} • /risk-factors/{sym} • /10k-sections/{sym}
/Macro & Regulatory
Treasury rates, economic indicators, ESG, patents, lobbying, USA-spending, SEC filings, XBRL.
GET /macro/* • /regulatory/* • /esg/{sym}/* • /xbrl/{sym}/*

03Realtime

Three streams over the same hub: tick prices, news articles, KOL tweets. Both WSS /ws/quotes (bidirectional, subscribe-by-symbol) and GET /quotes/stream (SSE) are supported; WSS /ws/news is a news-only variant. Authentication via Lumid PAT (or X-API-Key).

StreamTransportSource tier
tick:<sym> /ws/quotes • /quotes/stream A — WS feed for US equities + crypto / forex. Multiple sources: crypto & forex run a primary + hot-standby WSS pair; US equities additionally have a secondary quote feed that auto-covers within seconds if the primary goes quiet. No manual intervention needed on any gap.
news:<sym> /ws/news B — news firehose poller (60 s)
kol:<sym> /kols/tweets/stream (SSE) B — tweet provider, filtered by roster
pm:events /prediction-markets/stream (SSE) A — 1st-hand Polymarket CLOB WSS (500 active markets)
last:tick:<sym> /quotes?symbols=… C — Tier-C Redis snapshot, evictable on memory pressure

Tier and lag are exposed live at GET /freshness (realtime.by_source.{p50,p95,p99}_ms).

04Authentication

A Lumid PAT is required on every route — anonymous requests return 401. Auth goes through Lumid identity introspection; bring a Lumid PAT (lm_pat_live_… / rm_pat_live_…) or an RS256 JWT. Authed tier: 100 req/min.

# Bring your Lumid PAT (lm_pat_live_… / rm_pat_live_…) or JWT.
curl -H "Authorization: Bearer $LUMID_TOKEN" \
     https://kv.run:5000/symbols/AAPL

# Or via X-API-Key header — same effect.
curl -H "X-API-Key: $LUMID_TOKEN" \
     "https://kv.run:5000/quotes?symbols=AAPL"

05MCP — for agents

Every query is also a Model Context Protocol tool, so an agent can pull OHLC, fundamentals, holdings, or a real-time quote without learning a separate HTTP shape.

# Streamable-HTTP transport (MCP 2025-03-26, recommended):
curl -X POST https://kv.run:5000/mcp \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Read tools: symbols_search, symbol_get, universe_list, ohlc, fundamentals_latest, fundamentals_history, news_for_symbol, holders_top, price_target, freshness, get_quote, get_quotes.
Write & discovery tools: catalog_ingress, catalog_table_profile, catalog_table_schema, catalog_lineage_run, catalog_lineage_row, catalog_sources, ingest_typed, ingest_adapter.

06Ingress — write surface

The read API is paired with an ingress surface. Partners and agents push data with a Lumid PAT (per-role allowlist); the server stamps provenance and exposes the lineage chain back at /catalog/lineage/*. One call discovery: GET /catalog/ingress.

ModeEndpointWhen
Typed POST /ingest/{schema}/{table} JSON body with records in target-column shape. Idempotent.
Adapter POST /ingest/adapter/{adapter_id} Upstream-shape records flattened server-side via the registered adapter (69 available).
Stream POST /ingest/{schema}/{table}/stream NDJSON, chunked transfer; one run row spans the whole stream. Gzip/zstd accepted.
File POST /ingest/{schema}/{table}/file Multipart upload — JSON / NDJSON / CSV / TSV / XML / YAML / Parquet / Arrow.
Blob POST /ingest/blob Images / PDFs / opaque binary. sha256 dedup; bytes land in sibling object storage, metadata in raw.blobs.
Webhook POST /webhook/{webhook_id} HMAC-SHA256 signed, no PAT. Created via POST /admin/ingress/webhooks. Rate-limited per webhook.

Full guide: INGRESS.md. MCP tools for AI agents: catalog_ingress, catalog_table_schema, ingest_typed, ingest_adapter, catalog_lineage_run, catalog_lineage_row, catalog_sources.

07Refresh cadence

SourceCadence
Realtime tick stream Continuous — WS feed across asset classes (stocks, crypto, forex, indices) + secondary quote feed with live 1-min OHLC aggregation as a backup layer
Prediction-markets trades + orderbook Continuous WSS recorder; live trade prints + L2 deltas land in <1 s
Kalshi trades (incremental) Every 30 min
Non-stock 1-min OHLC Every 30 minutes (etf / crypto / forex / index / commodity)
Stock 1-min OHLC Daily at 04:30 UTC (primary feed lags ~3 days) + real-time secondary feed writes live bars continuously
Stock daily-adjusted EOD Daily at 05:15 UTC (dividend + non-split adjusted)
Analyst estimates Every 4 hours — grades, price-target, recommendation, ratings
Fundamentals statements Daily at 06:00 UTC — income / balance / cashflow + ratios + key-metrics + scores + earnings + growth + enterprise-values
Ownership (13F + insider + gov-trades) Daily at 07:00 UTC
Events + macro Daily at 07:30 UTC — earnings calendar, IPOs, treasury rates, economic indicators, COT, FDA
Market metadata Daily at 08:00 UTC — dividends, splits, market_cap
Social + news sentiment Daily at 09:00 UTC
Reference (profile, executives, ETF metadata) Weekly Sun 03:00 UTC + ETF holdings refresh
Regulatory (ESG, SEC filings, patents, lobbying) Weekly Sun 04:30 UTC
News articles (6 sources) Every 15 min — company-news, general, stock, crypto, forex, press releases + sentiment-enhanced feed every 4 h (structured per-ticker sentiment)
Short interest + short volume Weekly Sun 03:00 UTC — FINRA bi-weekly short interest + daily off-exchange short volume
Risk factors + 10-K sections Weekly Sun 05:00 UTC — machine-readable SEC risk-factor taxonomy + plain-text 10-K sections
Fundamentals (secondary source) Weekly Sun 07:00 UTC — income / balance / cash-flow (second provider, for cross-validation)
KOL tweets 3h / 12h / 24h tiers by tweet frequency (3,702 active handles)
News firehose → SSE Polled every 60 s — event-driven WS fan-out

08Conventions

Times UTC ISO-8601. Dates are YYYY-MM-DD.
Symbols Upper-cased server-side. Crypto / forex use the upstream shape (e.g. BTCUSD, EURUSD).
Lineage The fields source, source_endpoint, source_run_id, ingest_ts, raw are intentionally stripped from responses. The API picks the canonical provider per surface.
Errors JSON {"detail": "…"} on 4xx / 5xx. 429 carries a Retry-After header.
Pagination Endpoints that return lists accept limit (max 1000) and offset; /ohlc uses a server-side row cap instead.
Failure mode Lumid unreachable while validating a presented token → 503 fail-closed.