ERR_BAD_RESPONSE from Histroy_api

  status: 400,
  text: '{"status":"error","errors":[{"errorCode":"UDAPI100011","message":"Invalid Instrument key","propertyPath":null,"invalidValue":null,"error_code":"UDAPI100011","property_path":null,"invalid_value":null}]}',
  method: 'GET',
  path: '/v2/historical-candle/NSE_EQ%7CNIFTY%2050/1minute/2024-04-21/2024-04-13'

and this is code

backend 
app.get("/getAllcharts", async (req, res) => {
  try {
    const niftyInstrumentKey = "NSE_EQ|NIFTY 50"; // Corrected symbol format
    const niftyInterval = "1minute";
    const toDate = "2024-04-21";
    const fromDate = "2024-04-13";

    const intradayCandleData = await getIntradayCandleData(
      niftyInstrumentKey,
      niftyInterval,
      toDate,
      fromDate
    );

    res.status(200).json({ intradayCandleData });
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: "Internal Server Error" });
  }
});

async function getIntradayCandleData(symbol, interval, toDate, fromDate) {
  const upstoxClient = new UpstoxClient.HistoryApi();
  return new Promise((resolve, reject) => {
    upstoxClient.getHistoricalCandleData1(
      symbol,
      interval,
      toDate,
      fromDate,
      apiVersion,
      (error, data, response) => {
        if (error) {
          reject(error);
        } else {
          resolve(data);
        }
      }
    );
  });
}

frontend - 
import React, { useEffect, useState } from "react";
import axios from "axios";

function Niftychart() {
  const [intradayCandleData, setIntradayCandleData] = useState(null);
  const [error, setError] = useState(null);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await axios.get("http://localhost:3001/getAllcharts");
        setIntradayCandleData(response.data.intradayCandleData);
      } catch (error) {
        console.error(error);
        setError("Error fetching data from server");
      }
    };
    fetchData();
  }, []);

  return (
    <div>
      <h1>Nifty 50 Intraday Candle Data</h1>
      {error && <p>{error}</p>}
      {intradayCandleData && (
        <div>
          <pre>{JSON.stringify(intradayCandleData, null, 2)}</pre>
        </div>
      )}
    </div>
  );
}

export default Niftychart;

The accurate instrument key is NSE_INDEX|Nifty 50, not NSE_EQ|NIFTY 50. For the correct instrument keys, please refer the CSV files available at this link: https://uat.upstox.com/developer/api-documentation/instruments.

Here is a working curl request for your reference

curl --location 'https://api.upstox.com/v2/historical-candle/NSE_INDEX%7CNifty%2050/1minute/2024-03-21/2024-03-13' \
--header 'Accept: application/json'

Also if you require intraday candle data, utilize the getIntraDayCandleData method instead of getHistoricalCandleData1.

I hope above information is helpful.

1 Like