Skip to main content
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"
{
  "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
  }
}

Request

symbol
string
required
Trading symbol (e.g., EURUSD, GBPUSD, XAUUSD)
timeframe
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)
limit
integer
default:"500"
Number of bars to return. Maximum: 5000
before_time
integer
Unix timestamp. Only return bars before this time (for pagination).

Response

success
boolean
Indicates if the request was successful
symbol
string
The requested symbol
timeframe
integer
The requested timeframe in minutes
count
integer
Number of bars returned
bars
array
Array of OHLC bar objects
pagination
object
Pagination information
curl -X GET "https://api.innova-trading.com/api/external/bars?symbol=EURUSD&timeframe=60&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "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
  }
}

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.