Summary
Comprehensive factual snapshot for a single asset
Returns the full factual state of a single asset: categorical facts first, with optional stability metadata for trend, momentum, volatility, volume, support/resistance context, sector context, and fundamentals (stocks). No bias, no score, no recommendation.
The summary endpoint handles four modes depending on the parameters you provide:
| Mode | Parameters | Description |
|---|---|---|
| Latest | ticker | Most recent snapshot for the asset |
| Historical | ticker + date | Snapshot for a specific past date |
| Date Range | ticker + start + end | Bulk historical series across a date range |
| Event Lookup | ticker + field + band | Historical band transition events with aftermath data |
Plus Adds support/resistance context and basic fundamentals.
Pro Adds
sector_context and advanced fundamentals.
_meta objects off by default so the primary band label stays front-and-center. Add meta=true to include them across the response, or explicitly request a *_meta field in fields. Each _meta object can include stability (fresh, holding, established, or volatile), periods_in_current_state, flips_recent, and flips_lookback. Not available on Starter tier. See Band Stability.
as_of_date so you can see which market session the snapshot represents. Use data_status for the high-level freshness mode, and Categorical Bands when you need the exact band definitions behind labels like deep_value or oversold. For update timing, coverage, and data-quality notes, see Data Quality.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
ticker | string | — | Required. Asset symbol (e.g. AAPL). Path parameter. |
timeframe | string | daily | daily or weekly |
date | string | latest | Historical mode. Snapshot for a specific date (YYYY-MM-DD). Starter 30 days. Plus 2 years. Pro 5 years. |
start | string | — | Date range mode. Inclusive start date (YYYY-MM-DD). Requires end. Sequential ranges must fit within your plan cap: Starter 3 rows. Plus 10 rows. Pro 50 rows. |
end | string | — | Date range mode. Inclusive end date (YYYY-MM-DD). Requires start. |
fields | string | full summary | Snapshot and history modes only. JSON array or comma-separated list of sections and dotted paths to return, such as trend, momentum.rsi_zone, fundamentals.valuation_zone, or levels.support_levels. |
meta | boolean | false | Snapshot and history modes only. Add meta=true to include sibling _meta / status_meta stability objects in the response. Explicit *_meta field paths in fields still work without this flag. |
sample | string | — | Date range mode only. Use even to evenly distribute snapshots across the full filtered range. |
limit | integer | plan max (sample) / 10 (events) | Date range mode: only valid with sample=even, where it requests sampled rows up to your plan cap (Starter 3, Plus 10, Pro 50). Event mode: max events, max 100. |
field | string | — | Event mode. Band field name to query. Prefer the full schema/search name (e.g. momentum_rsi_zone, extremes_condition, trend_direction, trend_distance_ma50, fundamentals_valuation_zone). Legacy short aliases like rsi_zone still work for compatibility. |
band | string | — | Event mode. Filter to a specific band value (e.g. deep_oversold). MA distance event fields also accept grouped aliases above and below, which expand to the three corresponding granular MA bands. |
context_ticker | string | — | Event mode. Second ticker for cross-asset correlation. Requires context_field and context_band. Plus Pro |
context_field | string | — | Event mode. Band field to check on the context ticker |
context_band | string | — | Event mode. Only return events where context ticker was in this band. MA distance context fields also accept grouped aliases above and below. |
trend.direction and fundamentals.valuation_zone. Search and /v1/schema/fields use canonical flat snake_case names like trend_direction and fundamentals_valuation_zone. Watchlist diffs keep short top-level technical names like rsi_zone and trend_direction, but keep dotted fundamentals names like fundamentals.valuation_zone. When you pass field=... in Summary event mode, use the canonical flat names from Schema.
fields when you want smaller, more LLM-friendly summary payloads. The endpoint always keeps top-level identity keys like ticker and timeframe, then returns only the requested sections or dotted paths. Summary omits _meta by default even when you request a whole section like trend; add meta=true for full-section stability metadata, or explicitly request just the few *_meta paths you need. In historical range mode, the duplicate top-level levels block is only returned when you explicitly request levels or a child path like levels.support_levels.
Response Sections
Identification
| Field | Type | Description |
|---|---|---|
ticker | string | Asset symbol |
timeframe | string | daily or weekly |
asset_class | string | stock, crypto, or etf |
sector | string | Sector or category |
data_status | string | "eod" |
as_of_date | string | The session date represented by this snapshot (YYYY-MM-DD) |
performance | string | Candle performance vs. asset's own history. Per-ticker percentile-based: sharp_decline through sharp_gain. See Bands. |
trend
| Field | Type | Description |
|---|---|---|
trend.direction | string | strong_uptrend through strong_downtrend |
trend.duration_days | integer | Days current trend has persisted |
trend.ma_alignment | string | aligned_bullish, mixed, or aligned_bearish |
trend.distance_from_ma_band | object | MA distance bands for ma_8, ma_20, ma_50, ma_100, ma_200 |
trend.volume_confirmation | string | confirmed, diverging, or neutral |
momentum
| Field | Type | Description |
|---|---|---|
momentum.rsi_zone | string | Current RSI zone |
momentum.stochastic_zone | string | Current Stochastic zone |
momentum.rsi_stochastic_agreement | boolean | RSI and Stochastic agree? |
momentum.macd_state | string | MACD histogram state |
momentum.direction | string | accelerating, steady, decelerating, bullish_reversal, or bearish_reversal |
momentum.divergence_detected | boolean | Price diverging from momentum? |
momentum.divergence_type | string | bullish_divergence, bearish_divergence, or null |
extremes
| Field | Type | Description |
|---|---|---|
extremes.condition | string | deep_oversold through deep_overbought, or normal |
extremes.days_in_condition | integer | Consecutive days in extreme. 0 if normal |
extremes.historical_median_duration | float | Median duration for this asset |
extremes.historical_max_duration | integer | Longest streak for this asset |
extremes.occurrences_1yr | integer | Occurrences in past year |
extremes.condition_percentile | float | Rarity of current conditions. 0–100 |
extremes.condition_rarity | string | Human-readable rarity: extremely_rare, very_rare, rare, uncommon, occasional, or common |
volatility
| Field | Type | Description |
|---|---|---|
volatility.regime | string | low, normal, above_normal, high, or extreme |
volatility.regime_trend | string | compressing, stable, or expanding |
volatility.squeeze_active | boolean | Bollinger squeeze currently active |
volatility.squeeze_days | integer | Days squeeze active. 0 if not |
volatility.historical_avg_squeeze_duration | float | Average squeeze duration for this asset |
volume
| Field | Type | Description |
|---|---|---|
volume.ratio_band | string | Today vs. 50-day average |
volume.percentile | float | Rank in 1-year history |
volume.accumulation_state | string | Accumulation/distribution state |
volume.climax_detected | boolean | Volume climax in last 5 bars |
volume.climax_type | string | buying_climax, selling_climax, or null |
volume.price_direction_on_volume | string | Price direction on the elevated-volume bar, typically up, down, or flat |
volume.consecutive_elevated_days | integer | Current streak length of elevated-volume sessions |
volume.historical_avg_elevated_streak | float | Average elevated-volume streak length for this asset |
support_level / resistance_level
Each is an object (or null if no level found). Both share the same fields:
| Field | Type | Description |
|---|---|---|
status | string | intact, approaching, or breached |
status_meta | object | null | Optional level-status stability metadata on paid tiers when meta=true or when explicitly requested |
consecutive_closes_beyond | integer | Consecutive closes past the level. 0 if intact or approaching |
distance_band | string | at_level through very_far |
touch_count | integer | Times tested (past year) |
held_count | integer | Times level held |
broke_count | integer | Times level broke |
last_tested_days_ago | integer | Days since last test |
type | string | horizontal or ma_derived |
ma_name | string | null | Moving-average name when the level is MA-derived, otherwise null |
volume_at_tests_band | string | Typical volume at tests |
levels.support_levels / levels.resistance_levels
Date range mode can also return a top-level levels object when you explicitly request levels, levels.support_levels, or levels.resistance_levels. These arrays expose the tracked candidate levels for each historical row using the same public band-first structure as the current support_level and resistance_level objects. Raw level prices are not included in public responses.
| Field | Type | Description |
|---|---|---|
levels.support_levels / levels.resistance_levels | object[] | Ordered arrays of support or resistance candidates for that historical date |
distance_band | string | at_level through very_far |
touch_count | integer | Times tested (past year) |
held_count | integer | Times level held |
broke_count | integer | Times level broke |
last_tested_days_ago | integer | null | Days since the level was last tested |
type | string | null | horizontal or ma_derived |
ma_name | string | null | Moving-average name when the level is MA-derived, otherwise null |
volume_at_tests_band | string | null | Typical volume at tests |
status | string | null | intact, approaching, or breached |
consecutive_closes_beyond | integer | Consecutive closes past the level |
status_meta | object | Level-status stability metadata when transition history exists for that row and meta=true is enabled |
range_position
Top-level field: lower_third, mid_range, or upper_third.
sector_context Pro
| Field | Type | Description |
|---|---|---|
sector_context.rsi_zone | string | Sector aggregate RSI zone |
sector_context.trend | string | Sector aggregate trend |
sector_context.asset_vs_sector_rsi | string | weaker, aligned, or stronger |
sector_context.asset_vs_sector_trend | string | weaker, aligned, or stronger |
sector_context.agreement | boolean | Whether the asset and sector are directionally aligned across the tracked sector states |
sector_context.oversold_count | integer | Peers oversold (if applicable) |
sector_context.overbought_count | integer | Peers currently overbought |
sector_context.breakout_count | integer | Peers currently in breakout-style conditions |
sector_context.total_count | integer | Total peers |
sector_context.valuation_zone | string | Sector aggregate valuation band when available |
sector_context.elevated_volume_count | integer | Peers currently showing elevated volume |
fundamentals Stocks Only
Omitted entirely for crypto and ETFs — keys are absent, not null.
Plus
| Field | Type | Description |
|---|---|---|
fundamentals.valuation_zone | string | deep_value through deeply_overvalued |
fundamentals.growth_zone | string | YoY revenue/EPS growth band |
fundamentals.growth_zone_meta | object | null | Optional band stability metadata for growth_zone on paid tiers when requested |
fundamentals.earnings_proximity | string | Next earnings timing |
fundamentals.analyst_consensus | string | Aggregate analyst recommendation |
Pro Only Pro
| Field | Type | Description |
|---|---|---|
fundamentals.valuation_percentile | float | Rarity in asset's 5yr history. 0–100 |
fundamentals.pe_vs_historical_zone | string | P/E vs. 5yr range |
fundamentals.pe_vs_sector_zone | string | P/E vs. sector median |
fundamentals.pb_vs_historical_zone | string | P/B vs. 5yr range |
fundamentals.revenue_growth_direction | string | Revenue trend direction |
fundamentals.revenue_growth_direction_meta | object | null | Optional band stability metadata for revenue_growth_direction when requested |
fundamentals.eps_growth_direction | string | EPS trend direction |
fundamentals.eps_growth_direction_meta | object | null | Optional band stability metadata for eps_growth_direction when requested |
fundamentals.last_earnings_surprise | string | big_beat, beat, met, missed, or big_miss |
fundamentals.analyst_consensus_direction | string | upgrading, stable, or downgrading |
fundamentals.insider_activity | object | null | Derived insider activity summary. null when no recent insider dataset is available for that asset/date. |
fundamentals.insider_activity.zone | string | heavy_buying, moderate_buying, neutral, moderate_selling, heavy_selling, or no_activity |
fundamentals.insider_activity.net_direction | string | strong_buying, buying, neutral, selling, or strong_selling |
fundamentals.insider_activity.quarter | string | null | Reporting quarter for the recent insider activity snapshot |
Usage Examples
Latest snapshot
Latest snapshot with stability metadata
Historical snapshot (specific date)
Date range (bulk history)
Date range mode returns full sequential history in ascending date order, but only when the row count stays within your plan cap. Starter up to 3 rows. Plus up to 10 rows. Pro up to 50 rows. Lookback depth still applies separately: Starter 30 days. Plus 2 years. Pro 5 years.
sample=even. Sampled ranges spread snapshots across the entire matching series and return sample, row_count, and total_rows in the response.
Date range (evenly sampled)
LLM-friendly range with selected fields
This returns the same sampled date series, but trims each snapshot down to the requested state fields. Add levels.support_levels or levels.resistance_levels only when you specifically need the detailed historical level arrays.
Single stability field without full meta
Use this when you only need a narrow stability signal instead of every _meta object in the full payload.
Event lookup (band transitions)
Event mode returns historical band transition events. Starter 30-day lookback. Plus 2-year lookback + aftermath data. Pro 5-year lookback + aftermath data.
Event lookup (extreme-state entries)
Use extremes_condition when you care about entries into extreme states like deep_oversold or deep_overbought rather than the broader RSI zone transitions.
Event lookup with cross-asset correlation
Cross-asset correlation costs 2 credits per request. Available on Plus and Pro plans.
Event lookup with grouped MA aliases
For MA distance event fields only, band=above expands to slightly_above, moderately_above, and far_above. band=below does the same for the three below-MA bands. The stored and returned event rows still use the granular MA band labels.
Latest Mode Response
The default latest response is band-first and does not include sibling _meta objects. Add meta=true when you want the paid-tier stability context inline.