---
title: "Index catalogue"
method: GET
path: "/v1/reference/indices"
tags: ["indices"]
---

# Index catalogue

`GET /v1/reference/indices`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/reference/indices`
- Auth: HTTP bearer

Every index: ~140 NSE indices plus SENSEX and BANKEX. `first_date`/`last_date` give the daily-level coverage (null when no levels are held, currently SENSEX and BANKEX) and `has_constituents` says whether point-in-time membership is available. Use `slug` in `/v1/indices/{slug}/levels` and `/v1/indices/{slug}/constituents`. Pages by slug.

## Query parameters

- `category` 'broad' | 'sectoral' | 'thematic' | 'strategy' | 'volatility'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` IndicesItem[], required
    - `slug` string, required: Stable identifier used in `/v1/indices/{slug}/...` paths.
    - `name` string, required: Index name, e.g. Nifty 50.
    - `exchange` string, required: Exchange that computes the index: NSE or BSE.
    - `category` 'broad' | 'sectoral' | 'thematic' | 'strategy' | 'volatility', nullable, required: Index family: broad (market-cap based), sectoral, thematic, strategy (factor/smart-beta) or volatility.
    - `first_date` string, nullable, required: Earliest date with a daily level (YYYY-MM-DD); null when no levels are held.
    - `last_date` string, nullable, required: Latest date with a daily level (YYYY-MM-DD).
    - `has_constituents` boolean, required: Whether point-in-time constituents are available at `/v1/indices/{slug}/constituents`.
  - `meta` ListMeta, required
    - `as_of` string, date-time, required: When this response was assembled (UTC).
    - `route` string, required: operationId that served the request.
    - `count` integer, required: Items in this page.
    - `limit` integer, required: Page size applied.
    - `has_more` boolean, required: Whether another page exists.
    - `next_cursor` string, nullable, required: Pass as `cursor` to fetch the next page; null on the last page.
  - `links` Links, required
    - `next` string, nullable: Relative URL of the next page, or null.

## Other responses

- `400`: Malformed or out-of-range parameter. Not charged.
- `401`: Missing or invalid bearer token.
- `404`: The requested resource does not exist. Not charged.
- `429`: Per-minute burst cap (`rate_limited`) or plan quota (`quota_exhausted`) reached.
- `500`: Unexpected server error. Not charged.
- `502`: A data dependency was unavailable. Not charged.
- `503`: Authentication or quota service temporarily unavailable (`service_unavailable`). Not charged; retry after `Retry-After` seconds.

---

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