Summary

Comprehensive factual snapshot for a single asset

GET https://api.tickerdb.com/v1/summary/AAPL

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:

ModeParametersDescription
LatesttickerMost recent snapshot for the asset
Historicalticker + dateSnapshot for a specific past date
Date Rangeticker + start + endBulk historical series across a date range
Event Lookupticker + field + bandHistorical band transition events with aftermath data
Tier Access
Starter Core technical sections: trend, momentum, extremes, volatility, volume.
Plus Adds support/resistance context and basic fundamentals.
Pro Adds sector_context and advanced fundamentals.
Band Stability Metadata
Plus Pro Summary keeps sibling _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.
Freshness And Methodology
Every summary includes 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

ParameterTypeDefaultDescription
tickerstringRequired. Asset symbol (e.g. AAPL). Path parameter.
timeframestringdailydaily or weekly
datestringlatestHistorical mode. Snapshot for a specific date (YYYY-MM-DD). Starter 30 days. Plus 2 years. Pro 5 years.
startstringDate 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.
endstringDate range mode. Inclusive end date (YYYY-MM-DD). Requires start.
fieldsstringfull summarySnapshot 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.
metabooleanfalseSnapshot 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.
samplestringDate range mode only. Use even to evenly distribute snapshots across the full filtered range.
limitintegerplan 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.
fieldstringEvent 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.
bandstringEvent 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_tickerstringEvent mode. Second ticker for cross-asset correlation. Requires context_field and context_band. Plus Pro
context_fieldstringEvent mode. Band field to check on the context ticker
context_bandstringEvent mode. Only return events where context ticker was in this band. MA distance context fields also accept grouped aliases above and below.
Naming Model
Summary responses are nested JSON, so the docs use dotted paths like 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.
Field Selection
Use 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

FieldTypeDescription
tickerstringAsset symbol
timeframestringdaily or weekly
asset_classstringstock, crypto, or etf
sectorstringSector or category
data_statusstring"eod"
as_of_datestringThe session date represented by this snapshot (YYYY-MM-DD)
performancestringCandle performance vs. asset's own history. Per-ticker percentile-based: sharp_decline through sharp_gain. See Bands.

trend

FieldTypeDescription
trend.directionstringstrong_uptrend through strong_downtrend
trend.duration_daysintegerDays current trend has persisted
trend.ma_alignmentstringaligned_bullish, mixed, or aligned_bearish
trend.distance_from_ma_bandobjectMA distance bands for ma_8, ma_20, ma_50, ma_100, ma_200
trend.volume_confirmationstringconfirmed, diverging, or neutral

momentum

FieldTypeDescription
momentum.rsi_zonestringCurrent RSI zone
momentum.stochastic_zonestringCurrent Stochastic zone
momentum.rsi_stochastic_agreementbooleanRSI and Stochastic agree?
momentum.macd_statestringMACD histogram state
momentum.directionstringaccelerating, steady, decelerating, bullish_reversal, or bearish_reversal
momentum.divergence_detectedbooleanPrice diverging from momentum?
momentum.divergence_typestringbullish_divergence, bearish_divergence, or null

extremes

FieldTypeDescription
extremes.conditionstringdeep_oversold through deep_overbought, or normal
extremes.days_in_conditionintegerConsecutive days in extreme. 0 if normal
extremes.historical_median_durationfloatMedian duration for this asset
extremes.historical_max_durationintegerLongest streak for this asset
extremes.occurrences_1yrintegerOccurrences in past year
extremes.condition_percentilefloatRarity of current conditions. 0–100
extremes.condition_raritystringHuman-readable rarity: extremely_rare, very_rare, rare, uncommon, occasional, or common

volatility

FieldTypeDescription
volatility.regimestringlow, normal, above_normal, high, or extreme
volatility.regime_trendstringcompressing, stable, or expanding
volatility.squeeze_activebooleanBollinger squeeze currently active
volatility.squeeze_daysintegerDays squeeze active. 0 if not
volatility.historical_avg_squeeze_durationfloatAverage squeeze duration for this asset

volume

FieldTypeDescription
volume.ratio_bandstringToday vs. 50-day average
volume.percentilefloatRank in 1-year history
volume.accumulation_statestringAccumulation/distribution state
volume.climax_detectedbooleanVolume climax in last 5 bars
volume.climax_typestringbuying_climax, selling_climax, or null
volume.price_direction_on_volumestringPrice direction on the elevated-volume bar, typically up, down, or flat
volume.consecutive_elevated_daysintegerCurrent streak length of elevated-volume sessions
volume.historical_avg_elevated_streakfloatAverage 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:

FieldTypeDescription
statusstringintact, approaching, or breached
status_metaobject | nullOptional level-status stability metadata on paid tiers when meta=true or when explicitly requested
consecutive_closes_beyondintegerConsecutive closes past the level. 0 if intact or approaching
distance_bandstringat_level through very_far
touch_countintegerTimes tested (past year)
held_countintegerTimes level held
broke_countintegerTimes level broke
last_tested_days_agointegerDays since last test
typestringhorizontal or ma_derived
ma_namestring | nullMoving-average name when the level is MA-derived, otherwise null
volume_at_tests_bandstringTypical 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.

FieldTypeDescription
levels.support_levels / levels.resistance_levelsobject[]Ordered arrays of support or resistance candidates for that historical date
distance_bandstringat_level through very_far
touch_countintegerTimes tested (past year)
held_countintegerTimes level held
broke_countintegerTimes level broke
last_tested_days_agointeger | nullDays since the level was last tested
typestring | nullhorizontal or ma_derived
ma_namestring | nullMoving-average name when the level is MA-derived, otherwise null
volume_at_tests_bandstring | nullTypical volume at tests
statusstring | nullintact, approaching, or breached
consecutive_closes_beyondintegerConsecutive closes past the level
status_metaobjectLevel-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

FieldTypeDescription
sector_context.rsi_zonestringSector aggregate RSI zone
sector_context.trendstringSector aggregate trend
sector_context.asset_vs_sector_rsistringweaker, aligned, or stronger
sector_context.asset_vs_sector_trendstringweaker, aligned, or stronger
sector_context.agreementbooleanWhether the asset and sector are directionally aligned across the tracked sector states
sector_context.oversold_countintegerPeers oversold (if applicable)
sector_context.overbought_countintegerPeers currently overbought
sector_context.breakout_countintegerPeers currently in breakout-style conditions
sector_context.total_countintegerTotal peers
sector_context.valuation_zonestringSector aggregate valuation band when available
sector_context.elevated_volume_countintegerPeers currently showing elevated volume

fundamentals Stocks Only

Omitted entirely for crypto and ETFs — keys are absent, not null.

Plus

FieldTypeDescription
fundamentals.valuation_zonestringdeep_value through deeply_overvalued
fundamentals.growth_zonestringYoY revenue/EPS growth band
fundamentals.growth_zone_metaobject | nullOptional band stability metadata for growth_zone on paid tiers when requested
fundamentals.earnings_proximitystringNext earnings timing
fundamentals.analyst_consensusstringAggregate analyst recommendation

Pro Only Pro

FieldTypeDescription
fundamentals.valuation_percentilefloatRarity in asset's 5yr history. 0–100
fundamentals.pe_vs_historical_zonestringP/E vs. 5yr range
fundamentals.pe_vs_sector_zonestringP/E vs. sector median
fundamentals.pb_vs_historical_zonestringP/B vs. 5yr range
fundamentals.revenue_growth_directionstringRevenue trend direction
fundamentals.revenue_growth_direction_metaobject | nullOptional band stability metadata for revenue_growth_direction when requested
fundamentals.eps_growth_directionstringEPS trend direction
fundamentals.eps_growth_direction_metaobject | nullOptional band stability metadata for eps_growth_direction when requested
fundamentals.last_earnings_surprisestringbig_beat, beat, met, missed, or big_miss
fundamentals.analyst_consensus_directionstringupgrading, stable, or downgrading
fundamentals.insider_activityobject | nullDerived insider activity summary. null when no recent insider dataset is available for that asset/date.
fundamentals.insider_activity.zonestringheavy_buying, moderate_buying, neutral, moderate_selling, heavy_selling, or no_activity
fundamentals.insider_activity.net_directionstringstrong_buying, buying, neutral, selling, or strong_selling
fundamentals.insider_activity.quarterstring | nullReporting quarter for the recent insider activity snapshot

Usage Examples

Latest snapshot

curl
curl "https://api.tickerdb.com/v1/summary/AAPL" \ -H "Authorization: Bearer YOUR_API_KEY"

Latest snapshot with stability metadata

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?meta=true" \ -H "Authorization: Bearer YOUR_API_KEY"

Historical snapshot (specific date)

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?date=2025-06-15" \ -H "Authorization: Bearer YOUR_API_KEY"

Date range (bulk history)

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?start=2025-01-05&end=2025-01-16" \ -H "Authorization: Bearer YOUR_API_KEY"

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.

Condensed Range Sampling
If a sequential range would exceed your cap, narrow the dates or use 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)

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?start=2025-01-01&end=2025-12-31&sample=even&limit=10" \ -H "Authorization: Bearer YOUR_API_KEY"

LLM-friendly range with selected fields

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?start=2025-01-01&end=2025-12-31&sample=even&limit=10&fields=["trend.direction","momentum.rsi_zone","fundamentals.valuation_zone"]" \ -H "Authorization: Bearer YOUR_API_KEY"

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

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?fields=["trend.direction","trend.direction_meta"]" \ -H "Authorization: Bearer YOUR_API_KEY"

Use this when you only need a narrow stability signal instead of every _meta object in the full payload.

Event lookup (band transitions)

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?field=momentum_rsi_zone&band=deep_oversold&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY"

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)

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?field=extremes_condition&band=deep_oversold&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY"

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

curl
curl "https://api.tickerdb.com/v1/summary/AAPL?field=momentum_rsi_zone&band=deep_oversold&context_ticker=SPY&context_field=trend_direction&context_band=downtrend" \ -H "Authorization: Bearer YOUR_API_KEY"

Cross-asset correlation costs 2 credits per request. Available on Plus and Pro plans.

Event lookup with grouped MA aliases

curl
curl "https://api.tickerdb.com/v1/summary/BTCUSD?field=trend_distance_ma50&band=below&context_ticker=SPY&context_field=trend_distance_ma50&context_band=above&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY"

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.

GET /v1/summary/AAPL
{ "ticker": "AAPL", "timeframe": "daily", "asset_class": "stock", "sector": "Technology", "data_status": "eod", "as_of_date": "2026-04-11", "performance": "slight_gain", "trend": { "direction": "uptrend", "duration_days": 18, "ma_alignment": "aligned_bullish", "distance_from_ma_band": { "ma_8": "slightly_above", "ma_20": "slightly_above", "ma_50": "moderately_above", "ma_100": "moderately_above", "ma_200": "moderately_above" }, "volume_confirmation": "confirmed" }, "momentum": { "rsi_zone": "neutral_high", "stochastic_zone": "overbought", "rsi_stochastic_agreement": false, "macd_state": "contracting_positive", "direction": "decelerating", "divergence_detected": false, "divergence_type": null }, "extremes": { "condition": "normal", "days_in_condition": 0, "historical_median_duration": 3.5, "historical_max_duration": 11, "occurrences_1yr": 4, "condition_percentile": 45.2, "condition_rarity": "common" }, "volatility": { "regime": "normal", "regime_trend": "stable", "squeeze_active": false, "squeeze_days": 0, "historical_avg_squeeze_duration": 8.2 }, "volume": { "ratio_band": "normal", "percentile": 52.1, "accumulation_state": "accumulation", "climax_detected": false, "climax_type": null, "price_direction_on_volume": "up", "consecutive_elevated_days": 2, "historical_avg_elevated_streak": 1.7 }, "support_level": { "status": "intact", "consecutive_closes_beyond": 0, "distance_band": "near", "touch_count": 6, "held_count": 5, "broke_count": 1, "last_tested_days_ago": 12, "type": "horizontal", "ma_name": null, "volume_at_tests_band": "above_average" }, "resistance_level": { "status": "approaching", "consecutive_closes_beyond": 0, "distance_band": "very_close", "touch_count": 3, "held_count": 3, "broke_count": 0, "last_tested_days_ago": 2, "type": "horizontal", "ma_name": null, "volume_at_tests_band": "high" }, "range_position": "upper_third", "sector_context": { "rsi_zone": "neutral", "trend": "uptrend", "asset_vs_sector_rsi": "stronger", "asset_vs_sector_trend": "aligned", "agreement": true, "oversold_count": 2, "overbought_count": 6, "breakout_count": 1, "total_count": 45, "valuation_zone": "fair_value", "elevated_volume_count": 4 }, "fundamentals": { "valuation_zone": "fair_value", "valuation_percentile": 52.8, "pe_vs_historical_zone": "average", "pe_vs_sector_zone": "premium", "pb_vs_historical_zone": "above_average", "growth_zone": "moderate_growth", "revenue_growth_direction": "steady", "eps_growth_direction": "accelerating", "earnings_proximity": "this_month", "last_earnings_surprise": "beat", "analyst_consensus": "buy", "analyst_consensus_direction": "stable", "insider_activity": { "zone": "moderate_buying", "net_direction": "buying", "quarter": "2026-Q1" } } }