RSI, the relative strength index, is a momentum measure on a 0 to 100 scale, comparing the size of recent gains with the size of recent losses over a window. All gains and no losses pushes it towards 100; all losses pushes it towards 0. Massive calculates it for you on the rsi indicator endpoint, so you pass a ticker, a timespan and a window rather than pulling bars and computing it yourself.
Applies to
- Plans: every plan, including the free Basic tier.
- Endpoints: /v1/indicators/rsi/{ticker}, with timespan and window.
- Asset classes: stocks, options, indices, forex and crypto, using that asset class's ticker format.
How to call it
curl -X GET "https://api.massive.com/v1/indicators/rsi/AAPL?timespan=day&window=14&limit=1&apiKey=YOUR_API_KEY"
Response
{
"results": {
"values": [
{ "timestamp": 1789012800000, "value": 58.74808560730398 }
]
},
"status": "OK"
}
timespan is the bar size the indicator is computed on, and window is how many of those bars it looks back over. A 14 on a day timespan and a 14 on a minute timespan are entirely different indicators.
How to read it
The conventional readings are above 70 for overbought and below 30 for oversold, but they are conventions rather than rules: a strongly trending instrument can sit above 70 for weeks without reversing, which is the most common way RSI is misread.
Choosing a window
A shorter window reacts sooner and produces more signals, most of which are noise; a longer one is steadier and later. There is no correct value, and the common choices are conventions rather than findings. Pick the window from the horizon you actually trade or analyze on, and use the same one consistently rather than tuning it until the history looks good, which is the quickest route to a result that does not repeat.
If you see an error
An empty values array usually means you asked for fewer bars than the window needs. The indicator cannot produce its first point until window bars have closed.
A jump on a single date is usually a stock split rather than the market. Bars are split-adjusted by default, so mixing adjusted and unadjusted history will show up here.
{"status":"NOT_AUTHORIZED"} is about the asset class rather than the indicator: it follows the same subscription as the bars underneath.

