---
title: "Get Asset History"
method: GET
path: "/v1/assets/{asset}/history"
tags: ["Assets"]
---

# Get Asset History

`GET /v1/assets/{asset}/history`

## Request

- Base URL: `https://api.ensemble.markets` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ensemble.markets/v1/assets/{asset}/history`
- Auth: HTTP bearer

Daily total returns, spliced with your backfill rule when one exists,
then cut to `start_date`/`end_date` so a dated read matches what a
backtest sees. A read past the stored edge refreshes the bars first and
waits a few seconds for them. Answers 202 with `status: fetching` while
a load is still in flight and the window has nothing to show.
`data_edge` is the last bar stored whatever the window, so an
empty window is legible: past the edge, or before the listing.

## Path parameters

- `asset` string, required: Symbol (`AAPL`) or asset ID (`asset_...` or legacy `a-...`)

## Query parameters

- `include` string[], nullable: metrics: return, risk and drawdown statistics over the returned slice
- `backfill` boolean: Splice your backfill rule in before the asset's first bar. False returns its own bars only.
- `start_date` string, date, nullable: Earliest bar to return (YYYY-MM-DD, inclusive). Omit for the beginning of the series (for a model, its default view start).
- `end_date` string, date, nullable: Latest bar to return (YYYY-MM-DD, inclusive). Omit for the end of the series.

## Response `200`

Successful Response

- AssetHistory: Daily total-return stream for one asset. When `backfill` is set the stream is the spliced full history and `backfill.splice_date` marks where the asset's own bars begin. A requested `start_date`/`end_date` window is echoed back, and `dates`, `returns`, `first_date`, `last_date`, `rows` and `metrics` all describe the returned slice (inclusive bounds).
  - `id` string, required
  - `symbol` string, required
  - `status` string, required
  - `dates` string[]
  - `returns` number[]
  - `first_date` string, date, nullable
  - `last_date` string, date, nullable
  - `rows` integer
  - `start_date` string, date, nullable: Requested window start (inclusive)
  - `end_date` string, date, nullable: Requested window end (inclusive)
  - `fetched_at` string, date-time, nullable
  - `data_edge` string, date, nullable: Last bar stored for the asset, whatever the window. An empty window that starts after this is past the edge, not missing data.
  - `stale` boolean: The bars are older than the refresh window; a refresh failed or is in flight
  - `refreshing` boolean: A refresh is running now; read again in a few seconds for the new edge
  - `error` string, nullable
  - `backfill` AssetBackfill: The caller's history-extension rule for this symbol. Present on asset reads so an extended series is self-documenting: a 2x silver ETN listed in 2026 whose history starts in 2008 is a backfill, not corrupt data, and the reader should not have to infer that from a date.
    - `source_type` 'asset' | 'model', required
    - `source` string, required: Ticker or model ID supplying the history
    - `source_name` string, nullable: Display name of the source, when it has one
    - `splice_date` string, date, nullable: First bar of the symbol's own history. Everything before it comes from `source`, scaled to join continuously.
  - `metrics` AssetMetrics
    - `total_return` number, nullable
    - `cagr` number, nullable
    - `volatility` number, nullable
    - `sharpe` number, nullable
    - `sortino` number, nullable
    - `max_drawdown` number, nullable
    - `calmar` number, nullable
    - `best_month` number, nullable
    - `worst_month` number, nullable
    - `positive_months` number, nullable
    - `trading_days` integer

## Other responses

- `4XX`: The request was refused; `error.type` says why
- `5XX`: The server failed; quote `X-Request-Id` when reporting it

---

[API](https://skmtc.dev/ensemble/apis/ensemble-api.md) · [All operations](https://skmtc.dev/ensemble/apis/ensemble-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ensemble/apis/ensemble-api/revisions/4c0fbd80c197?raw)
