---
title: "Daily bars for one instrument over a window"
method: GET
path: "/v2/tape/history/{ref}"
tags: ["tape"]
---

# Daily bars for one instrument over a window

`GET /v2/tape/history/{ref}`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/tape/history/{ref}`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Path parameters

- `ref` string, required

## Query parameters

- `window` '1w' | '1m' | '3m' | '6m' | 'ytd' | '1y' | '3y' | '5y' | '10y' | 'all'

## Response `200`

Ascending daily bars from daily snapshots and observed prints

- TapeHistory
  - `ref` string, required
  - `grain` 'mmy' | 'mmy.drive' | 'mmy.fuel' | 'mmy.body' | 'squish', required: Level of detail the instrument is priced at: "mmy" (model year), "mmy.drive", "mmy.fuel" or "mmy.body" (model year split by drive type, fuel type, or body style), or "squish" (exact configuration: WMI + VDS + model year, plant-agnostic)
  - `window` '1w' | '1m' | '3m' | '6m' | 'ytd' | '1y' | '3y' | '5y' | '10y' | 'all', required
  - `bars` object[], required: One bar (one day's aggregate of prices) per day, oldest first
    - `day` string, required: The day this bar covers (ISO date, YYYY-MM-DD)
    - `median` number, nullable, required: Median asking price that day
    - `p25` number, nullable, required: 25th percentile of asking prices that day
    - `p75` number, nullable, required: 75th percentile of asking prices that day
    - `best` number, nullable, required: Lowest asking price that day
    - `count` integer, nullable, required: Number of live listings that day. Set on bars with source "fold".
    - `prints` integer, nullable, required: Number of price observations aggregated into the bar. Set on bars with source "prints".
    - `source` string, required: How the bar was built: "fold" (a once-daily snapshot of live listings) or "prints" (built from individual price observations). Other values may be added.
  - `links` object: Related resources, keyed by relation name, each a server-relative path. Example: {"recalls": "/v2/recalls/entity/model-year:toyota/rav4/2021"}

## Other responses

- `400`: Invalid request — grammar failure or unknown-but-well-formed refs, NAMED in `refs`/`details`, with nearest-ref `suggestions` where computable. Never a fuzzy fallback.
- `401`: No valid credential (API key, session, or internal token)
- `402`: Insufficient credits (free-tier hard stop; paid tiers bill overage instead)
- `404`: Resource not found
- `429`: Per-minute rate limit exceeded
- `500`: Internal error

---

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