---
title: "Index Snapshot"
method: GET
path: "/v1/indices/{index_slug}"
---

# Index Snapshot

`GET /v1/indices/{index_slug}`

## Request

- Base URL: `https://api.exchangerate.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://api.exchangerate.dev/v1/indices/{index_slug}`
- Auth: none declared

## Path parameters

- `index_slug` string, required

## Response `200`

Successful Response

- IndexSnapshotResponse
  - `result` string
  - `index` string, required
  - `name` string, required
  - `methodology_version` string, required
  - `value` number, required
  - `timestamp` string, required
  - `data_updated_at` string, required
  - `source` 'live' | 'ecb_daily' | 'market_daily', required: Public `source` enum — wire contract (D2). NO `cached` value (cache lives in X-Cache). `ecb_daily` is the only reference source (October 2026). `market_daily` labels the stored daily close of the live market feed, for the currencies with no reference fix, in date history and 1d time series; it is never a live rate.
  - `source_type` 'market' | 'reference', required
  - `market_session` 'open' | 'weekend' | 'interbank_closed', required: Computed from a clock, no feed (D9). `interbank_closed` = a known non-weekend closure (e.g. an ECB/TARGET2 holiday detected via an empty Tier-C response — INGESTION §4).
  - `stale` boolean, required
  - `base_date` string, nullable, required
  - `weights` object, required
  - `constituents` IndexConstituent[], required
    - `currency` string, required
    - `weight` number, required
    - `rate` number, required
    - `effective_at` string, required
    - `contribution` number, required
  - `notice` string, required

## Other responses

- `400`: Bad request. Codes include invalid_pair, unsupported_base, bad_date, invalid_amount, invalid_request, missing_parameter, unsupported_interval, unsupported_pair_interval and unsupported_index_interval.
- `401`: Authentication failed: invalid_api_key (or invalid_session_token on dashboard routes).
- `403`: plan_gated: the caller's plan does not include this interval or history depth; forbidden: the request did not pass through the public origin.
- `404`: Not found, e.g. unknown_index or no_data_for_date.
- `422`: Request validation failed.
- `429`: Rate limit or quota exceeded: rate_limited (per-minute limit, X-RateLimit-Scope tier-rate-minute), ip_rate_limited (keyless per-IP hourly cap, anon-ip-hour) or quota_exceeded (monthly quota, tier-quota-month). Wait Retry-After seconds; do not retry a monthly quota error automatically. quota_unavailable means the quota store could not be read; retry after Retry-After.
- `500`: The operation failed internally.
- `503`: A required data source or feature is temporarily unavailable, e.g. data_unavailable, live_unavailable, source_unavailable or service_unavailable.

## Changes

- **2026-10-09** `db0de0a0d416`: 1 warning, 4 info
  - added the new `market_daily` enum value to the `source` response property for the response status `200`
  - removed the `banxico_daily` enum value from the `source` response property for the response status `200`
  - removed the `dof_daily` enum value from the `source` response property for the response status `200`
  - removed the `fred_daily` enum value from the `source` response property for the response status `200`
  - …1 more
- **2026-09-15** `04e3122b22dd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/exchangerate/apis/exchangerate-dev/changes/v1/indices/:index_slug/get.md)

---

[API](https://skmtc.dev/exchangerate/apis/exchangerate-dev.md) - [All operations](https://skmtc.dev/exchangerate/apis/exchangerate-dev/llms.txt) - [OpenAPI document](https://skmtc.dev/exchangerate/apis/exchangerate-dev/revisions/87db12560e4a?raw)
