Equities

Metric History

GET/v2/equities/metrics/history

Returns one statement-derived metric (ratios, margins, growth and every *_ttm name) as a series of points, one per fiscal period end, newest first. Suppressed periods are returned as explicit null points with a reason instead of being omitted, so point counts stay stable for mirrors; see the Metric History guide for basis, vintage and TTM-overlap semantics.

Included in: Startup, Pro, Growth.

Authentication

Send your API key in the x-api-key header on every request to https://api.bavest.co. The samples read it from the BAVEST_API_KEY environment variable. Get an API key · Authentication guide

Parameters

Required: one of symbol, isin, for example symbol=AAPL.

NameInTypeRequiredDescription
symbolquerystringone of symbol, isin

Stock ticker symbol (e.g., AAPL, MSFT, GOOGL). Provide exactly one of symbol or isin.

Example AAPL

isinquerystringone of symbol, isin

ISIN code (e.g., US0378331005). Provide exactly one of symbol or isin. Clear the symbol example before using an ISIN.

namequerystringyes

Metric name. Discover valid names via GET /equities/metrics/names.

Example roe_ttm

basisquerystringno

Reporting basis. Defaults to TTM for *_ttm names, FY otherwise.

One of FY Q1 Q2 Q3 Q4 H1 H2 TTM

vintagequerystringno

MR = most recent restated statements. AR / as_of point-in-time replay is not yet enabled.

One of MR

Default MR

fromquerystring (date)no

Earliest period end (inclusive).

toquerystring (date)no

Latest period end (inclusive).

provenancequerybooleanno

When true, each point carries a provenance block (knownAt, restated, and the vendor's acceptedDate/filingDate claim). Empty while ledger coverage has not begun for the security.

Default false

changedSincequerystring (date-time)no

Incremental sync. Returns only points whose value changed at or after this ISO-8601 timestamp. Pass the syncCursor of the previous response; points upsert on periodEnd, so re-pulling an overlap is harmless.

Try it

Stock ticker symbol (e.g., `AAPL`, `MSFT`, `GOOGL`). Provide exactly one of symbol or isin.

ISIN code (e.g., `US0378331005`). Provide exactly one of symbol or isin. Clear the symbol example before using an ISIN.

Metric name. Discover valid names via GET /equities/metrics/names.

MR = most recent restated statements. AR / as_of point-in-time replay is not yet enabled.

GET /v2/equities/metrics/history?symbol=AAPL&name=roe_ttm&vintage=MR

Sent only to api.bavest.co for this request; not stored.

Sign in to sendGet an API keySends with the key above, or sign in to use your account's key. Each request counts as one API call.

Response 200

Successful response · application/json

  • dataobject
    • metricobject
    • basisstring

      One of FY Q1 Q2 Q3 Q4 H1 H2 TTM

    • vintagestring

      One of MR

    • warningstring

      Present when no history is materialized yet for this security/metric/basis.

    • syncCursorstring (date-time) | null

      Latest change time across the whole series (not only the returned points). Pass it as changedSince on the next call. Null when no history is materialized.

      Example 2026-07-22T21:42:19.701813+00:00

    • pointsarray of object
  • metaResponseMeta

    Response envelope metadata. Always present on a 200: time is set by core/response.py on every successful response. Errors carry the same block, built by the same code, so a client parses one meta shape whether the call succeeded or failed.

    • timeinteger

      Server-side processing time in milliseconds

      Example 17

    • parametersobject

      Echo of the request parameters the endpoint resolved

Errors

  • 400Invalid request parameters. Returned when required query parameters are missing, have invalid types, or violate constraints (e.g., providing both symbol and isin when they are mutually exclusive).
  • 401Missing or invalid API key.
  • 404Resource not found.
  • 429Rate limit exceeded. Retry after the `Retry-After` header interval.
  • 500An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.
  • 502Upstream data provider returned an error or is temporarily unavailable. Retry after a short delay.
  • 504The request timed out waiting for a response from the upstream data provider. This may occur for complex queries or during peak load.
  • defaultAn unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.

For AI agents: this page as Markdown at /docs/v2_equities_metrics_history.md, every route in /llms.txt, the OpenAPI spec at /openapi.json.