Get Vault Share Price History
Returns a daily time series of share prices (USD) for a single ERC-4626 vault. Each point carries apy_trailing_7d — annualised against the sample 7 days earlier — which is null when the 7-day look-back sample is missing or the absolute APY exceeds 100 (clamped to suppress single-day pricing artifacts). Each point also carries a quality_flag describing whether the producer marked the underlying share price as trustworthy. The hoisted latest aggregate additionally surfaces apy_trailing_30d, a smoother window intended for headline / stat-tile display.
Quality filtering (default): Samples flagged as capped, diverged, or spike are dropped from the response by default so the chart line stays clean against single-day pricing artifacts and depeg-style divergences. When this happens, count will be smaller than days and filtered_count reports how many points were excluded — a visible kink in the chart line is expected and does not indicate a missed cron tick. The 7-day look-back required to compute apy_trailing_7d is not subject to the filter and does not count toward filtered_count. Set includeFlagged=true to bypass the filter and receive the raw series with every sample’s quality_flag populated.
Envelope semantics: stale_reason disambiguates the four post-filter states (fresh, pipeline_lag, all_filtered, no_samples_yet); stale: boolean is preserved for back-compat (true iff stale_reason !== 'fresh'). schema_version is bumped any time the response shape changes — pin it if you’re building a regression harness.
Returns 404 when the vault is not in the verified-vaults catalog; tracked vaults with no samples yet still return 200 with count: 0, latest: null, and stale_reason: 'no_samples_yet'. Cached for 5 minutes; the includeFlagged=true and default responses are cached in partitioned namespaces so they never cross-pollinate.
Authorizations
Path Parameters
Vault contract address
^0x[a-fA-F0-9]{40}$Query Parameters
Blockchain network where the vault is deployed
eth, arb, base, opt, pol, bsc Window length to return. Defaults to 30d when omitted.
7d, 30d, 60d, 3m When true, bypasses the default quality_flag allowlist filter and returns the full raw series including capped, diverged, and spike samples. Intended for power users and researchers — the default chart-friendly behavior (false) drops those samples so single-day pricing artifacts and depeg-style divergences do not show up as misleading peaks or troughs in the line. filtered_count is always 0 when this flag is true. The hoisted latest aggregate tracks the same filter: when false, latest is the most recent passing sample (quality_flag ∈ {ok, unknown}); when true, latest is the most recent sample in the raw series and may carry any quality_flag value.
Response
Daily share-price series with per-point trailing 7-day APY plus a hoisted latest aggregate that adds trailing 30-day APY
Response-shape version token. Bumped any time the wire payload shape changes — pin if you are building a regression harness against this endpoint.
"s3"
Back-compat alias: true iff stale_reason !== 'fresh'. Prefer stale_reason for new integrations.
Disambiguates the four post-filter states. fresh: latest passing sample is within 48 hours. pipeline_lag: latest passing sample is older than 48 hours. all_filtered: every sample in the window was dropped by the quality filter (see filtered_count). no_samples_yet: the vault is tracked but has no samples in the window.
fresh, pipeline_lag, all_filtered, no_samples_yet Resolved value of the range query parameter expressed in days (7 / 30 / 60 / 90).
Number of points returned in series. May be less than days after the quality filter drops flagged points; count + filtered_count reconciles to the raw window size. The 7-day look-back used to compute apy_trailing_7d is not part of this window.
Number of samples in the window that were excluded by the default quality_flag filter. Always 0 when includeFlagged=true or when no flagged samples were present. Does not include the 7-day look-back samples used to compute apy_trailing_7d.
0
UTC-midnight timestamp of the first point in series. null when series is empty.
UTC-midnight timestamp of the last point in series. null when series is empty.
Most recent point in the returned series, hoisted for stat-tile rendering. Tracks the same filter as series: when includeFlagged=false (default), this is the most recent passing sample, and latest.quality_flag is always ok or unknown; when includeFlagged=true, this is the most recent sample in the raw series and may carry any quality_flag value (including capped, diverged, or spike) if the absolute newest sample was flagged. null when no samples were available after filtering.
Per-point time series, ordered by ascending ts.
