GET
/v1/hist/:venue/:symbol/signalsSignal history
Get the technical-analysis signal as a time series, one point per bar: summary, score, close, and any discrete events (golden_cross, death_cross, macd_cross_up, macd_cross_down) that fired on that bar. Same computation as the live signal, so a historical point is identical to the one that fired live: backtest what you saw. t is the bar-open time in Unix epoch milliseconds, the same as the bars routes.
- Auth
X-API-Keyheader- Format
- JSON
- Rate limits
- Per-key, see limits
Example
request · shell
curl -H "X-API-Key: $KEY" \
"https://api.sifting.io/v1/hist/crypto/BTCUSD/signals?interval=1d&limit=90"200OKapplication/json
{ "data": [ { "t": 1754870400000, "close": 60120.0, "summary": "buy", "score": 0.28, "events": [] }, { "t": 1754956800000, "close": 61010.5, "summary": "strong_buy", "score": 0.55, "events": ["macd_cross_up"] }, { "t": 1755043200000, "close": 61980.4, "summary": "strong_buy", "score": 0.61, "events": ["golden_cross"] } ], "meta": { "as_of": "2026-08-13T14:32:07Z", "symbol": "BTCUSD", "interval": "1d" }}Loading runner…
First load onlyParameters
ParameterDescription
Parameter
venuerequiredenum · path- stocks | crypto | forex | commodities.
symbolrequiredstring · path- Concatenated USD-quoted form, uppercase (e.g. BTCUSD, EURUSD, XAUUSD, AAPL). Case-insensitive.
intervalstring · query- Bar size each point is computed on. One of: 1m, 5m, 15m, 30m, 1h, 1d, 1w, 1mo. Default 1d. Same enum as the /hist bars routes.
limitinteger · query- Return the most recent N points, newest last. Default 100.
Response fields
FieldDescription
Field
data[]array- Signal points, oldest first, one per interval bucket.
data[].tint64 (epoch ms)- Bar open time, Unix epoch milliseconds, UTC. Same as the /hist bars routes.
data[].closefloat- Close for the bar.
data[].summaryenum- Label for the bar: strong_sell | sell | neutral | buy | strong_buy.
data[].scorefloat- Score for the bar, -1 to +1.
data[].eventsarray- Discrete markers that fired on the bar (see the events legend). Empty array when none.
meta.symbolstring- Echoed symbol.
meta.intervalstring- Echoed bar size.
meta.as_ofstring- When the response was produced. RFC 3339, UTC.
Reference
Events (data[].events)Description
Events (data[].events)
- golden_cross
- Fast moving average crossed above a slow one.
- death_cross
- Fast moving average crossed below a slow one.
- macd_cross_up
- MACD line crossed above its signal line.
- macd_cross_down
- MACD line crossed below its signal line.
Error responses
StatusCodeMeaning
- 422
insufficient_historyNot enough bars to compute the signal for this symbol and interval (short listings, illiquid pairs).
{ "error": "insufficient_history", "message": "not enough history to compute a signal for this symbol and interval"} - 404
not_foundUnknown venue, or a symbol outside our coverage for that venue.
{ "error": "not_found" } - 400
invalid_parameterBad interval, limit, or malformed symbol.
{ "error": "invalid_parameter", "message": "interval must be one of: 1m, 5m, 15m, 30m, 1h, 1d, 1w, 1mo."} - 403
market_not_entitledUS stock signals on the free tier. Stocks is a paid market, the same gate as stock bars.
{ "error": "your subscription doesn't include the stocks market" }