---
title: "Derivative 1-minute bars"
method: GET
path: "/v1/derivatives/{underlying}/bars/intraday"
tags: ["derivatives"]
---

# Derivative 1-minute bars

`GET /v1/derivatives/{underlying}/bars/intraday`

## Request

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

One-minute OHLC, volume and open interest per contract for one underlying, expiry and session. Options from 2026-06-11, futures from 2025-07-18; earlier sessions return 400. Strike coverage is the actively traded part of the ladder, not every listed strike. Bars may extend past 15:30 IST to the end of the closing session. Minutes with no trade have no bar. Prices are as traded (not adjusted). `date` and `expiry` are required. Pages by time, then contract.

## Path parameters

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

## Query parameters

- `date` string, required
- `expiry` string, required
- `instrument` 'future' | 'option'
- `strike` number
- `option_type` 'CE' | 'PE'
- `exchange` 'NSE' | 'BSE'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` DerivativeIntradayBarsItem[], required
    - `ts` string, required: Bar start, ISO-8601 UTC (09:15 IST = 03:45Z). Bars cover one minute.
    - `exchange` 'NSE' | 'BSE', required: Listing exchange.
    - `instrument` 'future' | 'option', required: future or option.
    - `expiry` string, required: Contract expiry (YYYY-MM-DD).
    - `strike` number, nullable, required: Strike price in INR (index points for index options); null for futures.
    - `option_type` 'CE' | 'PE', nullable, required: CE (call) or PE (put); null for futures.
    - `open` number, nullable, required: Open price in INR.
    - `high` number, nullable, required: High price in INR.
    - `low` number, nullable, required: Low price in INR.
    - `close` number, nullable, required: Close price in INR.
    - `volume_units` number, nullable, required: Volume in the minute, in units of the underlying.
    - `volume_contracts` number, nullable, required: Volume in contracts (units / lot size). Null when it does not divide evenly or the lot size is unknown.
    - `open_interest_units` number, nullable, required: Open interest at the end of the minute, in units of the underlying.
  - `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)
