Relative Strength Index (RSI)
Retrieve real-time RSI values for any supported symbol and timeframe. RSI is a momentum oscillator measuring the speed and magnitude of price movements on a 0-100 scale.
https://tickatlas.com/v1/indicator ! Authentication Required
All requests require an API key passed in the X-API-Key header.
X-API-Key: YOUR_API_KEY Don't have an API key? Get started here.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | Required | — | Trading symbol (e.g., EURUSD, GBPUSD, XAUUSD) |
indicator | string | Required | RSI_14 | Indicator name with period. Available: RSI_14 |
timeframe | string | Optional | H1 | Timeframe: M1, M5, M15, M30, H1, H4, D1 (default: H1) |
Request Examples
curl -H "X-API-Key: YOUR_API_KEY" \
"https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=RSI_14&timeframe=H1" import requests
url = "https://tickatlas.com/v1/indicator"
headers = {"X-API-Key": "YOUR_API_KEY"}
params = {
"symbol": "EURUSD",
"indicator": "RSI_14",
"timeframe": "H1"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()["data"]
print(f"RSI: {data['value']}") const response = await fetch(
"https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=RSI_14&timeframe=H1",
{
headers: { "X-API-Key": "YOUR_API_KEY" },
}
);
const { data } = await response.json();
console.log(`RSI: ${data.value}`);
console.log(`As of: ${data.updated_at}`); <?php
$url = "https://tickatlas.com/v1/indicator";
$params = http_build_query([
"symbol" => "EURUSD",
"indicator" => "RSI_14",
"timeframe" => "H1"
]);
$context = stream_context_create([
"http" => [
"header" => "X-API-Key: YOUR_API_KEY"
]
]);
$response = file_get_contents("$url?$params", false, $context);
$data = json_decode($response, true)["data"];
echo "RSI: " . $data["value"] . "\n";
echo "As of: " . $data["updated_at"] . "\n";
?> package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=RSI_14&timeframe=H1"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var payload struct {
Data map[string]interface{} `json:"data"`
}
json.Unmarshal(body, &payload)
fmt.Printf("RSI: %v\nAs of: %v\n", payload.Data["value"], payload.Data["updated_at"])
} Response
{
"success": true,
"data": {
"symbol": "EURUSD",
"indicator": "RSI_14",
"timeframe": "H1",
"value": 58.43,
"bid": 1.08432,
"ask": 1.08443,
"updated_at": 1711548000,
"server_time": "2024-03-27T14:00:00+00:00"
}
} Error Responses
400 Bad Request — Missing or invalid parameters
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Parameter \"symbol\" is required"
}
} 401 Unauthorized — Invalid or missing API key
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key"
}
} 404 Not Found — Symbol or indicator not available
{
"success": false,
"error": {
"code": "SYMBOL_NOT_FOUND",
"message": "Symbol INVALID not found"
}
} 429 Rate Limited — Too many requests
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Retry after 60 seconds",
"reset_in_seconds": 60
}
} 500 Server Error — Internal server error
{
"success": false,
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
} See full error documentation for all error codes.
Playground
Shows the documented example response. Live values come from the API, called with your key.
Common Use Cases
Build an RSI-based trading bot that enters positions when RSI crosses below 30 (oversold) and exits when RSI crosses above 70 (overbought).
Create a market screener that scans all available symbols for RSI divergence patterns across multiple timeframes.
Feed RSI data into a machine learning model for price prediction alongside other technical indicators.
Changelog
- Improved response latency by 40%
- Initial RSI endpoint release
- Support for all 7 timeframes