---
title: "Market-wide position limit utilisation"
method: GET
path: "/v1/derivatives/{underlying}/position-limits"
tags: ["derivatives"]
---

# Market-wide position limit utilisation

`GET /v1/derivatives/{underlying}/position-limits`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/derivatives/{underlying}/position-limits`
- Auth: HTTP bearer

Daily market-wide position limit, open interest, utilisation and next-session ban flag for one F&O stock, from 2010-02-01. Utilisation needs future-equivalent OI, published from 2025-10-01. Index underlyings have no market-wide limit (404). Window defaults to the last 90 days (max 5 years). Pages by date, newest first by default.

## Path parameters

- `underlying` string, required: Underlying symbol as listed for derivatives, e.g. "NIFTY", "BANKNIFTY", "SENSEX", "RELIANCE". Percent-encode "&" (M%26M).

## Query parameters

- `from` string
- `to` string
- `order` 'asc' | 'desc'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` DerivativePositionLimitsItem[], required
    - `date` string, required: Session the figures were computed after (end of day) (YYYY-MM-DD).
    - `symbol` string, required: Underlying stock symbol.
    - `isin` string, nullable, required: ISIN of the underlying stock.
    - `market_wide_limit_units` number, nullable, required: Market-wide position limit, in shares.
    - `open_interest_units` number, nullable, required: Combined open interest across all futures and options of the stock, in shares (gross, not delta-adjusted).
    - `future_equivalent_open_interest_units` number, nullable, required: Delta-weighted (future-equivalent) open interest, in shares; the figure the ban test uses. From 2025-10-01; null earlier.
    - `utilisation_pct` number, nullable, required: future_equivalent_open_interest_units / market_wide_limit_units x 100. A stock enters the ban period above 95%. From 2025-10-01; null earlier.
    - `headroom_next_session_units` number, nullable, required: Shares of new future-equivalent positions the market may still add on the next session before the 95% threshold. Null when the stock is in the ban period.
    - `ban_next_session` boolean, required: True when fresh positions are barred on the NEXT trading session (only position-reducing trades allowed).
    - `applies_to_session` string, required: The trading session `ban_next_session` and the headroom apply to (YYYY-MM-DD).
    - `applies_to_session_basis` 'published' | 'calendar', required: published: the next session for which limits were published. calendar: the newest row, whose next session is projected as the next weekday that is not a full exchange holiday (special weekend sessions are not projected).
  - `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)
