What is the correct endpoint in V2/V3 to fetch the full list of instruments dynamically via API (preferably segment‑wise for NSE, MCX, BSE)?

Dear Upstox Developer Support Team,

I am currently integrating my trading strategy with the Upstox V2 API. I have successfully generated the access token and tested it by fetching my profile data from:

text
GET https://api.upstox.com/v2/user/profile

This works correctly and confirms that my authentication and token are valid.

However, when I attempt to fetch the dynamic instruments master file using:

text
GET https://api.upstox.com/v2/instruments

or

text
GET https://api.upstox.com/v2/instruments/MCX_FO

I consistently receive:

text
404 Resource Not Found
errorCode: UDAPI100060

I have also tried variations like:

text
GET https://api.upstox.com/v2/instrument/master?exchange=MCX_FO

but the result is the same (404).


My Queries:

  1. What is the correct endpoint in V2/V3 to fetch the full list of instruments dynamically via API (preferably segment‑wise for NSE, MCX, BSE)?

  2. Are there any restrictions (e.g., available only in sandbox, or requires different headers such as Accept: text/csv)?

  3. Should I use the static daily CSV links like:

    text
    
    https://assets.upstox.com/instruments/MCX_FO.csv
    

    or is there a working authenticated/dynamic API that returns the same information?


My Environment:

  • Tool: Postman

  • Method: GET

  • Header:

    text
    
    Authorization: Bearer <access_token>
    Accept: text/csv
    
  • Access token verified via /v2/user/profile


Could you kindly confirm:

  • What is the officially supported endpoint for instrument list retrieval in API v2/v3?

  • If the authenticated API is not supported yet, is the static CSV link the recommended production approach?

Thank you for your guidance.

Regards,
Rupesh Parate

rupeshparate90@gmail.com

i dont think you need api with acc token to download them. its cdn delivered. just right click on the item and “copy link”. download the file and load as python dictionay or js object and filter them.

you can use this code

import pandas as pd

import requests

import gzip

import io

url = “https://assets.upstox.com/market-quote/instruments/exchange/complete.json.gz

# Download

response = requests.get(url)

response.raise_for_status()

# Decompress GZip

with gzip.GzipFile(fileobj=io.BytesIO(response.content)) as f:

data = f.read().decode(“utf-8”)

# Load JSON into pandas

df = pd.read_json(io.StringIO(data))

print(df.head())

print(df.shape)

distinct_segments = df[‘segment’].unique().tolist()

print(f"Distinct segments: {distinct_segments}")