Tradovate API 'NoServicePlan' Tick-Chart Error
You paid for the API module and subscribed to market data, and your bot still can't pull a tick chart. Platform data and API real-time data are two separate entitlements, and NoServicePlan means the server doesn't see the second one.
You paid for the API module, you subscribed to market data inside Tradovate, and your bot still can't pull a tick chart. Instead of a data stream you get back a flat refusal: A real-time market data subscription is required for tick-base charts, error code NoServicePlan. It's maddening precisely because you did buy something. The catch is that Tradovate treats platform market data and API real-time market data as two separate entitlements, and NoServicePlan is the server telling you the plan it sees on your API session doesn't cover what a tick chart needs. This one rarely gets fixed by changing your code, it gets fixed by reconciling what you actually own with what the server recognizes. Here's the full breakdown.
Quick Checklist for "NoServicePlan"
- Platform data ≠ API data, the subscription you accept in the Tradovate trader is not the same entitlement that authorizes real-time streaming over the API WebSocket.
- Tick charts demand a live feed, a tick-based chart is built from individual trades, so it can't run on delayed data. This is why the block is tick-specific.
- Real-time API data is CME-gated, streaming live exchange data through the API requires a CME sub-vendor arrangement and a server-side whitelist on your account.
- Prop/eval accounts are controlled upstream, you can't reconcile the plan yourself; the firm has to enable data.
- Entitlements drift, a plan that worked can fall out of sync after billing, a renewal, or a support edit. Re-authenticate, then contact support to reconcile.
- Workaround exists, request a time-based chart instead of ticks, or run orders-only automation and skip the real-time API feed entirely.
What "NoServicePlan" Means
Read the message literally and it makes sense: a real-time market data subscription is required for tick-base charts. The NoServicePlan code is the machine version of “the service plan on this session doesn't include what you're asking for.” Your WebSocket request was well-formed and it reached the server, nothing is wrong with your JSON or your token. The server simply looked at the market-data entitlement tied to your API login, didn't find a real-time plan that covers tick data, and bounced the request.
The reason people find this so confusing is that they've genuinely paid. They bought the API Access add-on. They accepted a market-data agreement in the Tradovate front end and can see live quotes on the web platform. So when the API refuses a tick chart, it feels like a bug. It isn't. Those two things sit in different lanes, and NoServicePlan lives in the lane you probably haven't set up yet.
Why Tick Charts Get Singled Out
A tick chart isn't measured in time, it's measured in trades. Each bar closes after a set number of ticks (individual transactions) print, so the chart has to consume the live trade-by-trade stream to draw anything current. Delayed or snapshot data can't feed a live tick chart. That's why NoServicePlan calls out tick-base charts by name: a minute chart might tolerate delayed data in some contexts, but a real-time tick chart has no fallback. No live feed, no tick chart.
Top Causes of "NoServicePlan"
1. Platform Market Data Mistaken for API Market Data
This is the number-one cause. The market-data subscription you accept inside the Tradovate trader entitles the platform, the web and desktop apps, to show you live quotes. It does not automatically entitle the API WebSocket feed. Those are billed and licensed separately. If the only thing you've done is subscribe to data inside the trader UI, your API session still has no real-time plan attached, and every tick request comes back NoServicePlan.
2. No CME Sub-Vendor Registration / Whitelist
Streaming real-time exchange data through the API is gated behind a CME arrangement. Tradovate registers API users as sub-vendors under the exchange's license, and until that's in place, and your account is whitelisted on Tradovate's side, the server has no real-time API plan to hand you. This carries a monthly exchange fee paid to the CME, not to Tradovate. Any specific dollar figure you find in an old post is likely stale; the amount depends on the exchange and your license type (non-professional vs. professional / non-display) and it changes, so confirm the current rate with the CME and Tradovate directly.

3. A Prop or Evaluation Account You Don't Control
If your login is tied to a prop firm or an evaluation service, the data entitlements belong to that provider, not to you. You can't accept a data agreement or reconcile a plan on their account from inside Tradovate, the controls are managed upstream. An API session on an evaluation account will keep returning NoServicePlan on tick requests until the firm turns real-time data on for that account. The people to talk to are the firm's support, not Tradovate's.
4. A Drifted or Lapsed Entitlement
Sometimes the plan was set up correctly and then fell out of sync. A billing cycle rolls over, a plan change gets applied, an agreement lapses, or a support-side account edit doesn't propagate cleanly, and suddenly a session that streamed tick data yesterday returns NoServicePlan today. This is exactly the “mismatch the API doesn't recognize” situation: your records say you're entitled, the server's don't. Re-authenticating clears the easy version (a stale session); the stubborn version needs support to reconcile the account.
5. Requesting Ticks When You Didn't Mean To
Worth a sanity check: confirm your chart request is actually asking for a tick-based element and that you need it. Some libraries and wrappers default a chart request to a tick unit. If your strategy runs on minute or second bars, you may be triggering the strictest entitlement requirement without realizing it, switching the request to a time interval can quietly make the error disappear.
How to Fix "NoServicePlan": Step-by-Step
Confirm which entitlement you actually have
Log in to the Tradovate web or desktop platform with the same account your API key authenticates against. Open Application Settings and go to the market-data / subscriptions area. Note what's active. Seeing live quotes in the trader tells you the platform entitlement is on, it does not confirm an API real-time plan. Ask yourself the key question: have you completed a CME sub-vendor registration and been whitelisted for API market data? If not, that's your gap, and no code change will close it.
Set up real-time API data (if you truly need ticks)
Contact the CME to register as a sub-vendor under their license arrangement for real-time futures data. Budget for the monthly exchange fee, it's paid to the CME, and the current amount varies by exchange and license type, so verify it before committing. Notify Tradovate support that you've registered, and ask them to whitelist your account for API market data. Once they confirm the whitelist, re-authenticate and re-issue your tick chart / md/subscribeQuote request. The plan should now resolve.
Reconcile a drifted entitlement with support
First rule out a stale session: discard your cached access token, re-run the authentication flow, reconnect the market-data WebSocket, and retry. If tick requests still return NoServicePlan across every symbol, the plan itself is out of sync. This is not something you can force from the client. Open a ticket with Tradovate support. State plainly what you purchased (API Access, any data subscription, sub-vendor registration) and paste the exact error, including the NoServicePlan code and the tick-base message. Ask them to verify the real-time market-data plan is active and correctly attached to your API account, and to re-apply the whitelist if it lapsed. On a prop/eval account, send this request to the firm instead.
Or sidestep it entirely
If you don't need ticks, change your chart request from a tick unit to a time interval (minute/second). This often clears the tick-specific block outright. If you don't need Tradovate's real-time feed at all, run orders-only automation, place orders, manage positions, and query the account without a real-time data plan. Source your live data from a third-party market-data vendor or use free delayed data for signals, and keep execution on Tradovate.


Troubleshooting Table
| Symptom | Likely cause | What to do |
|---|---|---|
| NoServicePlan on a tick chart, but live quotes show in the trader UI | Platform data active, API real-time data not entitled | Set up CME sub-vendor registration and ask Tradovate to whitelist the account |
| NoServicePlan on every symbol via API | No real-time API plan attached to the session | Complete API market-data entitlement, then re-authenticate |
| Only a prop/eval account throws it | Data controlled by the account provider | Ask the prop firm to enable market data for that account |
| Worked yesterday, fails today | Entitlement drifted or lapsed after billing/renewal | Re-authenticate; if it persists, have support reconcile the plan |
| Fails only on tick units, minute charts load | Tick charts require a live feed delayed data can't provide | Switch to a time interval, or enable real-time data |
| You don't actually need real-time API data | Paying for a plan you won't use | Run orders-only automation or use a third-party data source |
Where PickMyTrade Fits
Most people hitting NoServicePlan don't actually want to run a raw market-data pipe through the Tradovate API, they want their strategy to fire on Tradovate. PickMyTrade lets you do exactly that without touching the CME sub-vendor feed at all:
- Signal on TradingView, execute on Tradovate, your charts and tick logic live in TradingView, so you never have to pull real-time data through the Tradovate API to trade it.
- Orders-only routing, PickMyTrade sends orders and manages positions, sidestepping the entire real-time API market-data entitlement that triggers NoServicePlan.
- Managed authentication, tokens and sessions stay fresh, so a stale login never masquerades as an entitlement problem.
- Multi-account sync, mirror the same alert across every connected account in one pass, no per-account data plan required.
No CME Data Feed Needed
Start your free 5-day trial, automate Tradovate from your TradingView alerts, no CME data feed needed.
Start Your Free 5-Day TrialFrequently Asked Questions
It means the market-data plan attached to your API session doesn't include the real-time feed a tick-based chart needs. The full message is 'A real-time market data subscription is required for tick-base charts.' The server isn't seeing an entitlement it recognizes as covering real-time API data, so it refuses the request.
Because platform market data and API real-time market data are two different entitlements. The subscription you accept inside the Tradovate trader lets you see live quotes in the front end. Streaming real-time data over the API WebSocket is governed separately, through a CME sub-vendor arrangement and a server-side whitelist. Buying one does not automatically grant the other.
Yes. A tick chart plots each trade (or a fixed count of trades per bar), so it has to consume the live trade stream. Delayed data can't build a live tick chart, which is why NoServicePlan targets tick-based charts specifically while a time-based chart on delayed data may load without the same block.
Register with the CME as a sub-vendor under their license arrangement, then notify Tradovate so they whitelist your account for API market data. There's a monthly exchange fee, paid to the CME rather than to Tradovate. The exact amount varies by exchange and license type and changes over time, so confirm the current figure with the CME and Tradovate before you commit.
Your prop or evaluation firm. On those accounts the data entitlements are controlled upstream by the provider, not by you, so you can't reconcile the plan inside Tradovate yourself. Contact the firm's support and ask them to enable the market data (and API access, if they permit it) for your specific account.
Often, yes. If you don't strictly need Tradovate's real-time API feed, you can run orders-only automation, place orders, query the account, and route TradingView alerts, without registering as a sub-vendor. You can also pull data from a third-party vendor or use free delayed data, keeping your execution on Tradovate.
It can, if your workflow doesn't depend on ticks. Time-based charts (minute, hour, day) can be built from delayed or standard data in more contexts, so requesting a time interval instead of a tick interval may sidestep the tick-specific block. It's a workaround, not a fix for the underlying entitlement gap.
Entitlements can drift out of sync on the server after a billing cycle, a plan change, a lapsed agreement, or a support-side account edit. Re-authenticate first to rule out a stale session. If tick requests still return NoServicePlan across every symbol, the plan itself needs to be reconciled, contact support.
This guide is for educational and informational purposes only and is not financial, investment, or trading advice. Trading futures and other leveraged products carries a substantial risk of loss and is not suitable for every investor. PickMyTrade is an independent third-party automation platform and is not affiliated with, endorsed by, or sponsored by Tradovate, Inc. All related names, logos, and trademarks are the property of their respective owners. Platform features and steps change over time, so always confirm the current process in the official Tradovate platform and documentation before acting.