Errors
HTTP status codes the API returns and what they mean.
Error responses use a consistent JSON shape:
{ "error": "Human-readable message describing the problem." }
Status codes
Success. The response body contains the requested data.
{ "value": [62.34], "timestamp": [1708300800] }
Calculation queued. The API has received your request but the result is not ready yet — typically because candle data is being fetched for the first time for this symbol/timeframe combination. Retry the same request after a short delay (1–2 seconds).
{
"pending": true,
"key": "ta:binance:BTCUSDT:1h:rsi:abc123:rmax"
}
The key field is an internal cache key — you do not need to send it in your retry; just repeat the original request.
Invalid request. A required parameter is missing, has the wrong type, or has an unsupported value. The error message identifies the problem.
{ "error": "Missing required: exchange, symbol, timeframe" }
{ "error": "Unknown indicator: fakeindicator" }
{ "error": "Invalid timeframe: 2h" }
Authentication failed. The Authorization header is missing or the API key is invalid.
{ "error": "Invalid or missing API key." }
Make sure the header is exactly Authorization: Bearer YOUR_API_KEY.
Resource not found. Returned by GET /exchanges/{exchange}/symbols when the exchange identifier is not recognised.
{ "error": "Exchange not found: unknownexchange" }
Rate limit exceeded. You have sent more requests than your plan allows in the current 15-second window. Wait for the window to reset and retry.
{ "error": "Rate limit exceeded. Your plan allows 30 requests per 15 seconds." }
See Rate Limits & Credits for per-plan limits and retry guidance.
Bulk error handling
For POST /bulk requests, a failure in one construct does not fail the whole request. Instead, the failed construct returns an _error key and its indicators return null:
{
"btc_1h": {
"_error": "Failed to fetch candles: 404 Not Found — check exchange, symbol and timeframe",
"rsi_14": null
},
"eth_1h": {
"rsi_14": { "value": [55.1], "timestamp": [1708300800] }
}
}