curl -X GET "https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
import requests
response = requests.get(
"https://api.innova-trading.com/api/external/bars",
params={
"symbol": "EURUSD",
"timeframe": 60,
"limit": 100
},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
bars = response.json()["bars"]
const response = await fetch(
"https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100",
{
headers: { Authorization: "Bearer YOUR_API_KEY" }
}
);
const { bars } = await response.json();
{
"success": true,
"symbol": "EURUSD",
"timeframe": 60,
"count": 100,
"bars": [
{
"bar_number": 0,
"time": 1765540800,
"datetime_utc": "2025-12-12T04:00:00Z",
"open": 1.1732,
"high": 1.1740,
"low": 1.1725,
"close": 1.1738,
"volume": 2500
},
{
"bar_number": 1,
"time": 1765544400,
"datetime_utc": "2025-12-12T05:00:00Z",
"open": 1.1738,
"high": 1.1745,
"low": 1.1730,
"close": 1.1742,
"volume": 1800
}
],
"pagination": {
"has_more": true,
"oldest_time": 1765540800
}
}
{
"error": "forbidden",
"message": "Symbol XAUUSD not allowed for your API key",
"allowed_symbols": ["EURUSD", "GBPUSD", "USDJPY"]
}
{
"error": "no_data",
"message": "No bar data available. VPS/MT5 may be offline.",
"symbol": "EURUSD",
"timeframe": 60
}
Market Data
Get OHLC Bars
Fetch historical OHLC candlestick data for a trading symbol
GET
/
api
/
external
/
bars
curl -X GET "https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
import requests
response = requests.get(
"https://api.innova-trading.com/api/external/bars",
params={
"symbol": "EURUSD",
"timeframe": 60,
"limit": 100
},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
bars = response.json()["bars"]
const response = await fetch(
"https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100",
{
headers: { Authorization: "Bearer YOUR_API_KEY" }
}
);
const { bars } = await response.json();
{
"success": true,
"symbol": "EURUSD",
"timeframe": 60,
"count": 100,
"bars": [
{
"bar_number": 0,
"time": 1765540800,
"datetime_utc": "2025-12-12T04:00:00Z",
"open": 1.1732,
"high": 1.1740,
"low": 1.1725,
"close": 1.1738,
"volume": 2500
},
{
"bar_number": 1,
"time": 1765544400,
"datetime_utc": "2025-12-12T05:00:00Z",
"open": 1.1738,
"high": 1.1745,
"low": 1.1730,
"close": 1.1742,
"volume": 1800
}
],
"pagination": {
"has_more": true,
"oldest_time": 1765540800
}
}
{
"error": "forbidden",
"message": "Symbol XAUUSD not allowed for your API key",
"allowed_symbols": ["EURUSD", "GBPUSD", "USDJPY"]
}
{
"error": "no_data",
"message": "No bar data available. VPS/MT5 may be offline.",
"symbol": "EURUSD",
"timeframe": 60
}
Request
string
required
Trading symbol (e.g.,
EURUSD, GBPUSD, XAUUSD)integer
required
Timeframe in minutes:
1- M1 (1 minute)5- M5 (5 minutes)15- M15 (15 minutes)60- H1 (1 hour)240- H4 (4 hours)1440- D1 (1 day)
integer
default:"500"
Number of bars to return. Maximum:
5000integer
Unix timestamp. Only return bars before this time (for pagination).
Response
boolean
Indicates if the request was successful
string
The requested symbol
integer
The requested timeframe in minutes
integer
Number of bars returned
array
object
curl -X GET "https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
import requests
response = requests.get(
"https://api.innova-trading.com/api/external/bars",
params={
"symbol": "EURUSD",
"timeframe": 60,
"limit": 100
},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
bars = response.json()["bars"]
const response = await fetch(
"https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100",
{
headers: { Authorization: "Bearer YOUR_API_KEY" }
}
);
const { bars } = await response.json();
{
"success": true,
"symbol": "EURUSD",
"timeframe": 60,
"count": 100,
"bars": [
{
"bar_number": 0,
"time": 1765540800,
"datetime_utc": "2025-12-12T04:00:00Z",
"open": 1.1732,
"high": 1.1740,
"low": 1.1725,
"close": 1.1738,
"volume": 2500
},
{
"bar_number": 1,
"time": 1765544400,
"datetime_utc": "2025-12-12T05:00:00Z",
"open": 1.1738,
"high": 1.1745,
"low": 1.1730,
"close": 1.1742,
"volume": 1800
}
],
"pagination": {
"has_more": true,
"oldest_time": 1765540800
}
}
{
"error": "forbidden",
"message": "Symbol XAUUSD not allowed for your API key",
"allowed_symbols": ["EURUSD", "GBPUSD", "USDJPY"]
}
{
"error": "no_data",
"message": "No bar data available. VPS/MT5 may be offline.",
"symbol": "EURUSD",
"timeframe": 60
}
Pagination Example
To fetch more historical data:all_bars = []
before_time = None
while True:
params = {"symbol": "EURUSD", "timeframe": 60, "limit": 1000}
if before_time:
params["before_time"] = before_time
response = requests.get(url, params=params, headers=headers)
data = response.json()
all_bars.extend(data["bars"])
if not data["pagination"]["has_more"]:
break
before_time = data["pagination"]["oldest_time"]
print(f"Fetched {len(all_bars)} total bars")
The
time field is the real Unix timestamp from the market data source.
Always use this value when submitting signals to ensure correct positioning on the chart.⌘I