Skip to main content

Stolo API token charges

Stolo API token charges apply only to historical data from the analysis endpoints, the ones that return market data. Anything for the current trading day is free. Historical requests are paid for in Stolo Tokens, the same balance you use elsewhere on Stolo, taken from the account that owns your API app, and a paid request is free to repeat for 24 hours. Authenticating and trading cost nothing.

This page covers what each endpoint costs, how repeats and historical candles are priced, when a call is free or refunded, and how to estimate what a script will use in a day.

What each endpoint costs​

Only historical data is charged. The current trading day is free on every endpoint: that's today on a trading day, and the last trading day on weekends and market holidays (on a Saturday, Friday's data is free). Any earlier date is historical.

EndpointCurrent trading dayA past date
POST /authenticateFreeFree
GET /analysis/symbol/infoFree1 token per request
GET /analysis/option-chainFree, including live data1 token per request
GET /analysis/candles/intradayFree once today's session is served (after 3:40 PM)Before 3:40 PM it returns the previous session: 1 token per symbol, like historical candles
GET /analysis/candles/historicalFree1 token per symbol per trading day returned
/trade/* (place, cancel, positions, orders, margins)FreeFree

Every charge is free to repeat for 24 hours. See repeat requests.

A few terms used on this page:

TermWhat it means
Stolo TokensStolo's usage currency. The same balance pays for API calls and other paid actions on Stolo.
Current trading dayToday on a trading day; the last trading day on weekends and market holidays. Always free.
ChargeTokens taken from your balance when a call runs.
RefundA charge given back automatically because the call failed.
Candle dayOne symbol's candles for one trading day, the unit historical candles are priced in.

Repeat requests are free for 24 hours​

When a past-date request is charged, the same request costs nothing for the next 24 hours. "The same request" means the same data:

EndpointSame request when these match
Symbol infoSymbol and date
Option chainSymbol, date, and expiry
Candles (intraday and historical)Symbol and day, in any range and at any resolution

Defaults count as the values they resolve to, so leaving expiry out and passing the nearest expiry yourself are the same request. The 24 hours run from the charge, and free repeats don't extend them. After 24 hours the next request is charged again, and a new 24 hours start.

For example, for NIFTY on 24 September 2026:

RequestTokens
symbol/info?symbol=NIFTY&date=2026-09-24 at 10:00 AM1
The same request at 4:00 PM0
option-chain?symbol=NIFTY&date=2026-09-24 at 4:05 PM1 (a different endpoint)
option-chain?symbol=NIFTY&date=2026-09-24&expiry=2026-09-29 at 4:10 PM0 (the same expiry the default resolved to)
symbol/info?symbol=NIFTY&date=2026-09-24 at 10:30 AM the next day1 (the 24 hours have passed)

How historical candles are charged​

/analysis/candles/historical can return up to 30 days in one call, so a flat price per call wouldn't be fair either way. You pay for the data you get instead:

  • 1 token per symbol per past day that has candles. The current trading day, weekends, market holidays, and days with no data for that contract are free.
  • Resolution doesn't matter. 1-minute and 15-minute candles for the same symbol and day cost the same.
  • Free again for 24 hours. Once a symbol and day is charged, asking for it again within 24 hours of that charge costs nothing, in any range and at any resolution.
  • All or nothing. If your balance can't cover every new day in the request, nothing is charged, no candles come back, and you get a 402 whose required is the number of new days.

Here's how that plays out for the NIFTY 25100 CE (NIFTY26092925100CE):

RequestTokens
14 to 20 September (Monday to Sunday)5 (Saturday and Sunday are free)
The same range again an hour later0
17 to 24 September, the same day4 (17 and 18 are already paid; 21 to 24 are new)
14 to 20 September again two days later5 (the 24 hours have passed)
14 to 20 September for NIFTY26092925100PE5 (a different symbol)

/analysis/candles/intraday follows the same rule. After 3:40 PM it serves today's session, which is free. Before then it serves the previous session, which is charged 1 token per symbol and shares the same 24-hour window, so a day paid through either candle endpoint is free through the other.

When a call costs nothing​

Current-day data is always free. For historical data, you're only charged for calls that succeed:

  1. Calls rejected before they run are never charged. That covers a missing or expired token (401), no plan that allows API access (403), and a rate limit (429).
  2. A call that runs and then fails with any status of 400 or above is refunded automatically. A 422 for a bad date or a 404 for an unknown symbol nets to zero.
  3. A call you can't afford returns 402 and charges nothing.

Refunds show up in your token ledger, so you can always match a charge to its refund.

Estimate what your script will use​

Work out your daily usage before you leave a script running. Two common patterns:

A live option chain poller. Current-day data is free, so polling the NIFTY chain all session costs 0 tokens. The rate limits are what bound it: the session runs from 9:15 AM to 3:30 PM (375 minutes), so a 10-second poll is 2,250 requests a day, most of the default daily limit of 3,000.

A weekly backtest pull. You pull 5-minute historical candles for 5 NIFTY strikes, calls and puts, over 20 trading days. That's 10 symbols x 20 days = 200 tokens. If you tweak the strategy and re-run the pull within 24 hours, the same 200 candle days cost nothing.

Keep a local copy

Historical candles don't change once a session has closed. Save what you pull to a file or database, and you'll never pay for the same day twice.

Running out of tokens (402)​

When your balance can't cover a call, you get 402 and nothing is charged. action is external_api.candle_day for every historical charge. For candles, required is the number of new days in the request. This response uses Stolo's general error format, not the usual API envelope, so check body.error_code:

{
"error": true,
"message": "You don't have enough Stolo Tokens for this action",
"status": 402,
"body": {
"error_code": "INSUFFICIENT_TOKENS",
"required": 1,
"balance": 0,
"action": "external_api.candle_day"
},
"date": "2026-09-28T04:12:09.512Z"
}

Retrying won't help. Top up and the next call works straight away, with the same token. Trading calls are unaffected, since they don't use tokens.

Checking your balance and usage​

Everything your API app spends shows up in the Stolo app:

  1. Log in to Stolo and open Account, then Stolo Tokens.
  2. The top card shows your available balance. Press Buy tokens to top up.
  3. Where your tokens went groups your spending. API usage appears as Historical API Data (past-date symbol info, option chain, and candles).
  4. The Usage and Ledger lists show every charge and refund, newest first.

Buying tokens is a one-time purchase, not a subscription, and larger packs cost less per token. Stolo Tokens have no expiry date: once bought, they stay in your account for as long as the account exists, so unused tokens carry over until you spend them. See the current packs on the buy tokens page.

Check your Stolo Tokens balance

See what your API calls have used and top up before your script runs out.

Open Stolo Tokens

Frequently asked questions​

How much does a Stolo API call cost?
Only historical data costs Stolo Tokens. Anything for the current trading day is free on every analysis endpoint. For a past date, symbol info and option chain cost 1 token per request, and candles cost 1 token per symbol per past trading day returned. Repeating a paid request within 24 hours is free. Authentication and all trading calls are free.
Do I pay for today's market data through the API?
No. Data for the current trading day is free on every analysis endpoint, including the live option chain during market hours, as often as your rate limit allows. The current trading day is today on a trading day, and the last trading day on weekends and market holidays.
Which Stolo API endpoints use Stolo Tokens?
Only the analysis endpoints under /analysis, and only when they return data for a past trading day: symbol info, option chain, and candles. Current-day data, the /authenticate endpoint, and the five /trade endpoints never use Stolo Tokens.
Do trading calls through the API cost Stolo Tokens?
No. Placing and cancelling orders and reading positions, orders, and margins are free. They still need an active Stolo Pro or Stolo Trial (15 days) plan and a broker connected on Stolo, and they have their own rate limit of 10 requests per second and 300 per minute.
How are historical option candles charged?
The historical candles endpoint costs 1 token for each symbol and trading day that returns candles, not a flat amount per call. The current trading day, weekends, market holidays, and days with no data are free. A 5-day past range for one option costs 5 tokens whether you ask for 1-minute or 15-minute candles.
Does the candle resolution change the token cost?
No. Candles are priced per symbol per past day, so 1-minute and 15-minute candles for the same day cost the same, on both the intraday and the historical candle endpoints.
Can I repeat a paid request for free?
Yes, for 24 hours from the charge. The same request costs nothing within that time: the same symbol and date for symbol info, the same symbol, date, and expiry for the option chain, and the same symbol and day for candles, in any range and at any resolution. Free repeats don't extend the 24 hours. After that, the next request is charged again.
Am I charged for API calls that fail?
No. A call that ends with an HTTP status of 400 or above is refunded automatically, so a validation error or an unknown symbol costs nothing in the end. Calls rejected before they run, for authentication (401, 403) or a rate limit (429), are never charged at all.
What happens when I run out of Stolo Tokens?
Analysis calls return HTTP 402 with the error code INSUFFICIENT_TOKENS, and nothing is charged. Retrying will not help. Buy more tokens on Stolo and calls work again straight away, with no need to re-authenticate. Trading calls keep working because they do not use tokens.
Whose balance pays for Stolo API calls?
The Stolo account that owns the API app. Apps do not have a balance of their own, so API usage comes out of the same Stolo Tokens balance you use elsewhere on Stolo.
Where can I see what my API calls cost?
Open Account and then Stolo Tokens in the Stolo app. API usage appears as Historical API Data, for past-date symbol info, option chain, and candles, alongside your balance and the full ledger of credits and debits.
How do I buy more Stolo Tokens?
Go to Account, then Stolo Tokens, and press Buy tokens, or open app.stolo.in/subscription/tokens directly. Tokens are added to your balance as soon as the payment goes through, and your API calls can use them right away.
Do Stolo Tokens expire?
Never. Stolo Tokens have no expiry date. Once bought, they stay in your account for as long as the account exists, so there is no deadline to use them and unused tokens carry over indefinitely.
How can I reduce my Stolo API token usage?
Current-day data is free, so live polling costs no tokens, only rate limit. For past dates, pull a whole date range in one historical candles request instead of one call per day, and cache the results yourself. Repeating a past-date request within 24 hours, such as re-running a backtest, reuses what you already paid for.