REST / WebSocket endpoints

Forex candles

Retrieve historical candles by FX pair code.

Updated: 2026-09-12

GET/api/v1/market/forex/kline?symbol=EURUSD&interval=1h

Overview

Forex candles

Parameter symbol such as EURUSD plus interval.

Request parameters

FieldTypeRequiredDescription
symbolstringYesSymbol (required)
intervalstringNoDefault 1; supports 1/1m, 5, 15, 60/1h, 240/4h, 1d, 1w, 1mo, …
limitnumberNoDefault 300, range 1–5000

Response envelope & auth

FieldTypeDescription
succbooleanWhether the request succeeded
dataobject | arrayBusiness payload (see fields below)
msgstringHuman-readable error message on failure (optional)
codestringMachine-readable error code (optional)
X-Request-IdheaderRequest trace ID (response header, not in JSON body)
X-API-KeyheaderAPI key; Authorization: Bearer is also accepted

data payload fields

FieldTypeDescription
symbolstringResolved symbol
intervalstringNormalized interval
barsarrayCandle array (see below)
sourcestringAlways tradingview
marketstringMarket tag for this path
bars[].openTime / openTimeMsstring | numberBar open time
bars[].closeTime / closeTimeMsstring | numberBar close time
bars[].open / high / low / closenumberOHLC
bars[].volumenumberVolume

Common error codes

codeHTTPDescription
INVALID_REQUEST400Missing or invalid parameters (e.g. interval)
INVALID_SYMBOL400Invalid symbol format
UNKNOWN_SYMBOL400Unrecognized symbol (multi-market quote)
NO_SUBSCRIPTION403No active subscription
SUBSCRIPTION_EXPIRED403Subscription expired
MARKET_NOT_ENABLED403Market not enabled on current plan
API_KEY_SCOPE_DENIED403API key scope denied
IP_DENIED / GEO_DENIED403IP or geo policy denied
DAILY_LIMIT_EXCEEDED429Daily quota exceeded
MONTHLY_LIMIT_EXCEEDED429Monthly quota exceeded
RATE_LIMIT_EXCEEDED429Per-user RPM exceeded
KEY_RATE_LIMIT_EXCEEDED429Per-key RPM exceeded
UPSTREAM_UNAVAILABLE502Upstream market source unavailable
RATE_LIMIT_UNAVAILABLE503Rate-limit infrastructure unavailable
WS_CONN_LIMITWSWebSocket connection cap reached

Rate limits & quotas

  • REST quote/kline and WS handshake count toward daily quota and RPM; pushed ticks are not re-counted.
  • Typical RPM: Free/Trial 30, Growth/Standard 120, Pro 600, Enterprise 3000 (see console plan).
  • WS caps (approx.): Free 1 conn / 10 symbols; Growth 3/25; Pro 10/50; Enterprise 50/200.

Request example (cURL)

curl https://api.tiqex.io/api/v1/market/forex/kline?symbol=EURUSD&interval=1h \
  -H "X-API-Key: YOUR_API_KEY"

Python

import requests

url = "https://api.tiqex.io/api/v1/market/forex/kline?symbol=EURUSD&interval=1h"
headers = {"X-API-Key": "YOUR_API_KEY"}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()
print(resp.json())

JavaScript

const res = await fetch("https://api.tiqex.io/api/v1/market/forex/kline?symbol=EURUSD&interval=1h", {
  headers: { "X-API-Key": "YOUR_API_KEY" }
});
if (!res.ok) throw new Error(res.status);
console.log(await res.json());