---
title: "Get queryable history coverage"
method: GET
path: "/coverage"
---

# Get queryable history coverage

`GET /coverage`

Returns the first and last eligible observation dates at which /rates with the same base, quotes and providers returns at least one record. Defaults to the EUR-based daily blended feed. Supplying providers selects their history, including non-daily observations. Null bounds mean no queryable pair. Bounds are request dates, not necessarily returned record dates: a carried quote can predate the bridge required to convert its base. Interior gaps are possible. Bounds do not extend beyond stored observation dates merely because carry-forward can answer later requests. With several quotes, at least one must be available. Only base, quotes and providers are accepted. Use start_date from this endpoint for a headline describing default rate history; provider and currency publication dates are not pair coverage.

## Query parameters

- `base` string
- `quotes` string
- `providers` string

## Response `200`

Coverage of the selected rate query

- Coverage
  - `base` string, required — Requested base currency, EUR by default
  - `quotes` string[], nullable, required — Requested quotes, or null for all
  - `providers` string[], nullable, required — Selected providers, or null for the default daily blend
  - `start_date` string, date, nullable, required — First eligible observation date with a nonempty matching rates query
  - `end_date` string, date, nullable, required — Last eligible observation date with a nonempty matching rates query

## Other responses

- `422` — Invalid request
- `503` — The request deadline expired before the response could be computed, or the worker process is already running its limit of concurrent live daily-range computes (any daily range served live: with providers, with expand=providers, or before the precomputed blend is ready). In the second case a Retry-After header says how many seconds to wait before retrying. Otherwise retry with a narrower request: filter with quotes, aggregate with group, or split the range into shorter requests.

## Changes

- **2026-09-26** (v2) `55803a2b0588` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/lineofflight/apis/frankfurter-api/changes/coverage/get.md)

---

[API](https://skmtc.dev/lineofflight/apis/frankfurter-api.md) · [All operations](https://skmtc.dev/lineofflight/apis/frankfurter-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lineofflight/apis/frankfurter-api/revisions/55803a2b0588?raw)
