# Utility APIs

Alongside the trading APIs used to place and manage orders on the exchange, Arrow exposes **utility** endpoints for calendars, index metadata, option chains, and options Greeks. These use the same authentication model as the rest of the Developer API.

## Base URL and headers

**Base URL**

```
https://edge.arrow.trade
```

**Required headers**

| Header | Description |
|--------|-------------|
| `appID` | Your application ID |
| `token` | Access token from the [authentication](authentication.md) flow |

---

## Endpoint overview

| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/info/holidays` | Trading holidays and special sessions for the current year |
| `GET` | `/info/index-list` | Indexes listed on the exchange (name and token) |
| `GET` | `/info/option-chain-symbols/all` | All Option-underlying symbols with available expiries |
| `POST` | `/info/option-chain` | Full option chain for an underlying symbol and expiry |
<!-- | `POST` | `/info/greeks` | Greeks (IV, delta, gamma, theta, vega) for multiple option tokens | -->

---

## Holidays

Returns exchange holidays (`DD-MM-YYYY` → holiday name) and optional **special trading days** with session windows.

**Sample request**

```bash
curl --location 'https://edge.arrow.trade/info/holidays' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>'
```

**Sample response**

```json
{
    "data": {
        "holidays": {
            "01-05-2026": "Maharashtra Day",
            "02-10-2026": "Mahatma Gandhi Jayanti",
            "03-03-2026": "Holi",
            "03-04-2026": "Good Friday",
            "10-11-2026": "Diwali-Balipratipada",
            "14-04-2026": "Dr. Baba Saheb Ambedkar Jayanti",
            "14-09-2026": "Ganesh Chaturthi",
            "15-01-2026": "Municipal Corporation Election in Maharashtra",
            "20-10-2026": "Dussehra",
            "24-11-2026": "Prakash Gurpurb Sri Guru Nanak Dev",
            "25-12-2026": "Christmas",
            "26-01-2026": "Republic Day",
            "26-03-2026": "Shri Ram Navami",
            "26-06-2026": "Muharram",
            "28-05-2026": "Bakri Id",
            "31-03-2026": "Shri Mahavir Jayanti"
        },
        "specialTradingDays": {
            "01-02-2026": [
                [
                    "09:00",
                    400
                ]
            ]
        }
    },
    "status": "success"
}
```

---

## Index list

Returns display names and **index tokens** (used for quotes, streaming, and instrument lookup).

**Sample request**

```bash
curl --location 'https://edge.arrow.trade/info/index-list' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>'
```

**Sample response**

```json
{
    "data": 
        {
            "name": "Nifty 50",
            "token": 26000
        },
        {
            "name": "Nifty IT",
            "token": 26008
        },
        {
            "name": "Nifty 100",
            "token": 26012
        },
        {
            "name": "Nifty Midcap 50",
            "token": 26014
        },
        .....
    ],
    "status": "success"
}
```

---

## All Option chain symbols

Returns a map of **underlying symbol** (for example `NIFTY`, `BANKNIFTY`) to a list of **expiry strings** available for that underlying.

**Sample request**

```bash
curl --location 'https://edge.arrow.trade/info/option-chain-symbols/all' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>'
```

**Sample response**

```json
{
    "data": {
        "equity": {
          ...
            "NSE:POLICYBZR-EQ": [
                "26-MAY-2026",
                "30-JUN-2026",
                "28-JUL-2026"
            ],
            "NSE:POLYCAB-EQ": [
                "26-MAY-2026",
                "30-JUN-2026",
                "28-JUL-2026"
            ],
            "NSE:POWERGRID-EQ": [
                "26-MAY-2026",
                "30-JUN-2026",
                "28-JUL-2026"
            ],
          ...
        },
        "indices": {
          
            "INDEX:BANKNIFTY": [
                "26-MAY-2026",
                "30-JUN-2026",
                "28-JUL-2026",
                "29-SEP-2026",
                "29-DEC-2026",
                "30-MAR-2027"
            ],
         
            "INDEX:NIFTY": [
                "12-MAY-2026",
                "19-MAY-2026",
                "26-MAY-2026",
                "02-JUN-2026",
                "09-JUN-2026",
                "30-JUN-2026",
                "28-JUL-2026",
                "29-SEP-2026",
                "29-DEC-2026",
                "30-MAR-2027",
                "29-JUN-2027",
                "28-DEC-2027",
                "27-JUN-2028",
                "26-DEC-2028",
                "26-JUN-2029",
                "24-DEC-2029",
                "25-JUN-2030",
                "31-DEC-2030"
            ],
          
            "INDEX:SENSEX": [
                "07-MAY-2026",
                "14-MAY-2026",
                "21-MAY-2026",
                "27-MAY-2026",
                "04-JUN-2026",
                "11-JUN-2026",
                "18-JUN-2026",
                "25-JUN-2026",
                "30-JUL-2026",
                "24-SEP-2026",
                "31-DEC-2026",
                "25-MAR-2027",
                "24-JUN-2027",
                "30-DEC-2027",
                "29-JUN-2028",
                "28-DEC-2028",
                "28-JUN-2029",
                "27-DEC-2029",
                "27-JUN-2030",
                "26-DEC-2030"
            ],
         
        }
    },
    "status": "success"
}
```

---

## Option chain

Returns option instruments (calls and puts) for a given **underlying symbol**, **exchange** segment, **expiry**, and strike **count**.

Use `/info/option-chain-symbols/all` to list valid underlyings and expiries. For index options (for example `NIFTY`), set `exchange` to `INDEX`. For equity options (for example `RELIANCE-EQ`), set `exchange` to `NSE`.

**Request body (JSON)**

| Field | Type | Description |
|-------|------|-------------|
| `underlying` | string | Underlying symbol (for example `NIFTY`, `BANKNIFTY`, or `RELIANCE-EQ` from `/info/option-chain-symbols/all`) |
| `exchange` | string | Segment: `INDEX` for indices; `NSE` for equity underlyings |
| `count` | string | Number of strikes around ATM to return |
| `expiry` | string | Expiry in `DD-MMM-YYYY` form (for example `21-JUL-2026`) |

**Sample request (index)**

```bash
curl --location 'https://edge.arrow.trade/info/option-chain' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
    "underlying": "NIFTY",
    "exchange": "INDEX",
    "count": "20",
    "expiry": "21-JUL-2026"
}'
```

**Sample request (equity)**

```bash
curl --location 'https://edge.arrow.trade/info/option-chain' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
    "underlying": "RELIANCE-EQ",
    "exchange": "NSE",
    "count": "20",
    "expiry": "28-JUL-2026"
}'
```

**Sample response**

```json
{
  "data": [
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45100",
      "token": "66652",
      "optionType": "CE",
      "strikePrice": "45100.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45200",
      "token": "66654",
      "optionType": "CE",
      "strikePrice": "45200.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45300",
      "token": "66656",
      "optionType": "CE",
      "strikePrice": "45300.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45400",
      "token": "66658",
      "optionType": "CE",
      "strikePrice": "45400.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45500",
      "token": "66660",
      "optionType": "CE",
      "strikePrice": "45500.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C45000",
      "token": "52219",
      "optionType": "CE",
      "strikePrice": "45000.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C44900",
      "token": "66650",
      "optionType": "CE",
      "strikePrice": "44900.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C44800",
      "token": "66648",
      "optionType": "CE",
      "strikePrice": "44800.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C44700",
      "token": "66644",
      "optionType": "CE",
      "strikePrice": "44700.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24C44600",
      "token": "66642",
      "optionType": "CE",
      "strikePrice": "44600.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45100",
      "token": "66653",
      "optionType": "PE",
      "strikePrice": "45100.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45200",
      "token": "66655",
      "optionType": "PE",
      "strikePrice": "45200.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45300",
      "token": "66657",
      "optionType": "PE",
      "strikePrice": "45300.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45400",
      "token": "66659",
      "optionType": "PE",
      "strikePrice": "45400.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45500",
      "token": "66661",
      "optionType": "PE",
      "strikePrice": "45500.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P45000",
      "token": "52221",
      "optionType": "PE",
      "strikePrice": "45000.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P44900",
      "token": "66651",
      "optionType": "PE",
      "strikePrice": "44900.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P44800",
      "token": "66649",
      "optionType": "PE",
      "strikePrice": "44800.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P44700",
      "token": "66647",
      "optionType": "PE",
      "strikePrice": "44700.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    },
    {
      "exchange": "NFO",
      "symbol": "BANKNIFTY28MAR24P44600",
      "token": "66643",
      "optionType": "PE",
      "strikePrice": "44600.00",
      "pricePrecision": "2",
      "tickSize": "0.05",
      "lotSize": "15"
    }
  ],
  "status": "success"
}
```

Each leg includes `exchange`, `symbol`, `token`, `optionType` (`CE` / `PE`), `strikePrice`, `pricePrecision`, `tickSize`, and `lotSize`.

---
<!-- 
## Greeks

Returns risk metrics for one or more **option instrument tokens** (for example tokens from the option chain or the [symbols](symbols.md) universe).

**Request body**

JSON array of numeric token IDs, in the same order as the response rows.

**Sample request**

```bash
curl --location 'https://edge.arrow.trade/info/greeks' \
--header 'appID: <YOUR_APP_ID>' \
--header 'token: <YOUR_TOKEN>' \
--header 'Content-Type: application/json' \
--data '[43797, 43798]'
```

**Sample response**

```json
{
  "data": [
    {
      "iv": 0.16202843326302246,
      "delta": -0.805477854173547,
      "gamma": 0.00044036985056966155,
      "theta": -48.87731964443301,
      "vega": 2.9009721614423136
    },
    {
      "iv": 0.24180179126861037,
      "delta": 0.24836677957405004,
      "gamma": 0.0003400777113221101,
      "theta": -61.900704895596824,
      "vega": 3.3432775633298264
    }
  ],
  "status": "success"
}
```

| Field | Description |
|-------|-------------|
| `iv` | Implied volatility |
| `delta` | Delta |
| `gamma` | Gamma |
| `theta` | Theta |
| `vega` | Vega |

--- -->

## Error handling

Failures follow the same patterns as other REST APIs: see [Error codes](error-codes.md) and [Response structure](response-structure.md).
