Returns a daily time series of total value locked (USD) for a single ERC-4626 vault. Each point is a UTC-midnight sample and carries a quality_flag describing whether the producer marked the underlying TVL reading as trustworthy. The response also hoists the most recent passing point to a top-level latest aggregate so stat-tile consumers can render the current value without paging the full series.
Quality filtering (default): Samples flagged as capped, diverged, or spike are dropped from the response by default, so the chart line stays clean against producer-side data-quality issues. 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. 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.
Responses
400
Invalid address format, missing chain parameter, or unsupported range value
401
Authorization information is missing or invalid
404
Vault not in the verified-vaults catalog for the given address and chain