Common Errors
401 Unauthorized
{
"error" : "unauthorized" ,
"message" : "Invalid API key"
}
Causes:
Missing Authorization header
Invalid API key format (should be Bearer YOUR_KEY)
API key is less than 10 characters
Solution:
# Correct format
curl -H "Authorization: Bearer your_api_key_here" ...
# Wrong (missing Bearer)
curl -H "Authorization: your_api_key_here" ...
403 Forbidden - Symbol Not Allowed
{
"error" : "forbidden" ,
"message" : "Symbol BTCUSDT not allowed for your API key" ,
"allowed_symbols" : [ "EURUSD" , "GBPUSD" , "USDJPY" , "XAUUSD" ]
}
Cause: Your API key tier doesn’t have access to this symbol.
Solution:
Use one of the allowed_symbols from the error message
Upgrade your plan to access more symbols
Call GET /api/external/symbols to see your available symbols
503 No Data Available
{
"error" : "no_data" ,
"message" : "No bar data available. VPS/MT5 may be offline." ,
"symbol" : "EURUSD" ,
"timeframe" : 60
}
Cause: The data source (VPS/MT5) is temporarily offline.
Solutions:
Wait a few minutes and retry
Check our status page for outages
Use cached data if you have it
This error is temporary. Our VPS typically reconnects within 5-15 minutes.
422 Validation Error
{
"error" : "validation_error" ,
"message" : "Point 0: type must be 'high' or 'low'" ,
"point_index" : 0
}
Cause: Invalid data in your request body.
Common issues:
type must be exactly "high" or "low" (not "HIGH" or "above")
time must be a valid Unix timestamp
price must be a number, not a string
404 Indicator Not Found
{
"error" : "not_found" ,
"message" : "Indicator not found"
}
Causes:
Indicator hasn’t been submitted yet
Indicator expired (data expires after 24 hours)
Wrong indicator_id, symbol, or timeframe
Solution:
# Make sure all three match
GET / api / external / indicators / my_indicator ? symbol = EURUSD & timeframe = 60
Rate Limiting
If you receive a 429 Too Many Requests error:
{
"error" : "rate_limit_exceeded" ,
"message" : "Too many requests. Limit: 100/hour" ,
"retry_after" : 3600
}
Solutions:
Implement exponential backoff
Cache responses where possible
Upgrade to a higher tier for more requests
Debugging Tips
1. Check Your Request
import requests
response = requests.get(
"https://api.innova-trading.com/api/external/bars" ,
params = { "symbol" : "EURUSD" , "timeframe" : 60 , "limit" : 10 },
headers = { "Authorization" : "Bearer YOUR_KEY" }
)
# Print full response for debugging
print ( f "Status: { response.status_code } " )
print ( f "Headers: { response.headers } " )
print ( f "Body: { response.text } " )
2. Verify Your API Key Works
# Test with symbols endpoint (simplest)
curl -v "https://api.innova-trading.com/api/external/symbols" \
-H "Authorization: Bearer YOUR_API_KEY"
3. Check Indicator Data
# List all your indicators
response = requests.get(
"https://api.innova-trading.com/api/external/indicators" ,
headers = { "Authorization" : "Bearer YOUR_KEY" }
)
print (response.json())
Getting Help
Discord Community support and discussions
Email For account and billing issues
When reporting issues, please include:
Your API key (first 8 characters only)
The exact error message
The request you made (URL, method, body)
Timestamp when the error occurred