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
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