---
title: "What TWAP history is held"
method: GET
path: "/v1/crypto/twap/coverage"
tags: ["Crypto"]
---

# What TWAP history is held

`GET /v1/crypto/twap/coverage`

## Request

- Base URL: `https://crowdintel.xyz/api`
- URL: `https://crowdintel.xyz/api/v1/crypto/twap/coverage`
- Auth: HTTP bearer

**Min tier: `free`.** One row per symbol and window with the observation count and the first and last observation held.

This endpoint exists because the series has a hard start. The upstream feed publishes live and offers no history, so coverage begins when recording started and nothing earlier can ever be filled in. Read `first_ts` before treating an empty page as "nothing happened" — the two are otherwise indistinguishable.

## Response `200`

Coverage per symbol and window.

- CryptoTwapCoveragePage
  - `windows` object: What each window means, so a caller need not infer it from the numbers.
  - `data` CryptoTwapCoverage[]
    - `symbol` string
    - `window_seconds` 0 | 30 | 60
    - `ticks` integer
    - `first_ts` integer: Oldest observation held, unix ms. Nothing before this exists.
    - `last_ts` integer: Newest observation held, unix ms.
  - `next_cursor` string, nullable

## Other responses

- `401`: Missing, invalid, or revoked API key. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `429`: Hourly or monthly rate limit exceeded.

---

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