stock_prices uses a licensed end-of-day feed as the authoritative price source. Snapshot responses also include an IEX intraday quote/refusal overlay; it is not a consolidated real-time or tick feed. Freshness is explicit on every price view.
Within intraday, session_close means the close of the latest completed market session (the
intraday vendor’s prevClose relative to the live quote). It is not a second current-session close.
intraday.last is an attributed IEX last-sale print. intraday.derived_last is the feed’s
derived latest price: a computed value with no venue attribution and no per-print timestamp
(quote_at is the feed’s update time). On plan tiers without the real-time top-of-book
entitlement, derived_last is the only live intraday price and meta.basis reads
eod_licensed_iex_derived instead of eod_licensed_iex_passthrough — consumers must not
present a derived price as a venue last sale.
Schema 2 is the default. You can omit schema in new requests.
Snapshot
stock_prices_snapshot at 292 measured tokens with a 350-token gate.
Trimmed from tests/fixtures/prices_v2/golden_snapshot.json; shown values are unchanged.
data.freshness.sessionis the latest held bar for the security.data.freshness.sessions_behindis measured againstmeta.as_of.market, the market-feed cursor.
stock_technicals, so callers
pay that token cost only when they need specialist analytics.
view: "technicals" remains accepted for migration, but returns a 200 envelope with
meta.deprecation and an executable recovery:
History
stock_prices_summary at 208 measured tokens with a 400-token gate. The full 3mo history fixture has 63 rows.
Trimmed from tests/fixtures/prices_v2/golden_history_3mo.json; shown row values are unchanged.
columns with each row. If an indicator cell refuses, the capabilities catalog’s decode recipe is:
macd_12_26_9_line, macd_12_26_9_signal,
macd_12_26_9_histogram, bollinger_20_2_lower, bollinger_20_2_middle,
bollinger_20_2_upper, and atr_14_pct. MACD uses SMA-seeded EMA-12/26 with an EMA-9 signal;
Bollinger uses SMA-20 plus/minus two population standard deviations; ATR is Wilder RMA-14 true
range divided by that bar’s adjusted close. Warm-up cells are typed insufficient_history
refusals.
Corporate actions
view: "corporate_actions" serves per-payment dividend history and splits from the same licensed feed — one columnar row per payment, one split event per split, never a row per session. range uses the history duration grammar with a 5y default (max = full held depth).
stock_prices_corporate_actions at 261 measured tokens with an 800-token gate. Trimmed from tests/fixtures/prices_v2/golden_corporate_actions_5y.json; shown values are unchanged.
- Amounts are the feed’s as-paid per-share cash on each ex-date — not retroactively split-adjusted. When the window contains both a split and at least one payment, a
noteinsidedividendssays so and the split serves beside it (AAPL atrange: "max"adds"splits": [{ "date": "2020-08-31", "factor": 4 }]). - The ex-date cash series is a different fact from the SEC-declared
dividends_per_sharein overview/financials; each keeps its own source and basis stamp. - A covered window with no events serves
count: 0and empty lists — a zero-event fact, not a refusal. If the requested window predates the held bars,range.held_fromstates the first held session: before that date the answer is “not covered”, never “no events”. dividends.summaryrefusesinsufficient_historywhen held depth does not span the trailing 365 days, because a partially-held year would undercount payments.