---
title: "FPI holdings and flows by sector"
method: GET
path: "/v1/market/fpi-flows/sectors"
tags: ["market"]
---

# FPI holdings and flows by sector

`GET /v1/market/fpi-flows/sectors`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/market/fpi-flows/sectors`
- Auth: HTTP bearer

Fortnightly FPI assets under custody and net investment by sector, INR crore, from April 2012. The sector classification changed in May 2022. Defaults to the last 180 days. Pages by (date, measure, sector).

## Query parameters

- `measure` 'assets_under_custody' | 'net_investment'
- `sector` string
- `from` string
- `to` string
- `order` 'asc' | 'desc'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` FpiSectorHoldingsItem[], required
    - `date` string, required: End of the fortnight the row reports (YYYY-MM-DD).
    - `period_start` string, nullable, required: First day of the fortnight (YYYY-MM-DD).
    - `measure` 'assets_under_custody' | 'net_investment', required: assets_under_custody: FPI holdings at fortnight end; net_investment: net FPI investment during the fortnight.
    - `sector` string, required: Sector name. The sector classification changed in May 2022; earlier names differ.
    - `parent_sector` string, nullable, required: Parent group for sub-sectors (until Apr 2022), else null.
    - `equity_cr` number, nullable, required: Equity, INR crore.
    - `debt_cr` number, nullable, required: Debt under the general limit, INR crore.
    - `debt_vrr_cr` number, nullable, required: Debt under the voluntary retention route, INR crore.
    - `debt_far_cr` number, nullable, required: Debt under the fully accessible route, INR crore.
    - `hybrid_cr` number, nullable, required: Hybrid instruments, INR crore.
    - `total_cr` number, nullable, required: Total across instrument classes, INR crore.
  - `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)
