Short answer: TradingView to Tradovate has three routes: chart trading through the broker link, which Tradovate's pricing page includes in every plan; your own bridge, where a webhook receiver calls the Tradovate API; and a third-party app. The API reference read on 5 November 2026 requires a live account with more than $1,000 in equity, a subscription to API Access and an API key, and shows no inbound webhook endpoint, so the receiver is yours to build. TradingView's terms restrict both automated routes.
Pages were read on 5 November 2026; forum posts are labeled and dated. Futures carry leverage and automated orders can lose money quickly. Rules depend on your country, account types and API access vary, and no broker is recommended, ranked or linked with a referral.
Section 3 of TradingView's Terms of Use (opens in a new tab), read on 5 November 2026, licenses charts, alerts and webhooks for display-only use, lists automated trading and automated order generation among prohibited uses, and bars third-party products built for that purpose. Its credentials page (opens in a new tab) also says alerts are not designed for automated trading. That is a contract question between you and TradingView, so read the terms and take legal advice before either automated route.
Alert setup and delivery faults are in TradingView webhook bot, TradingView alert message JSON and TradingView alerts not working.
How to connect TradingView to Tradovate: three routes
Choose by who sends the order: you from the chart, your own code, or a vendor's software.
| Item | Chart trading | Your own bridge | Third-party app |
|---|---|---|---|
| Tradovate side | The pricing page ($0, $99 a month or $1,499 once) lists third-party tools such as TradingView in every plan | Live account above $1,000 equity, API Access, API key | Your login through the vendor's OAuth app |
| TradingView side | A TradingView account; NinjaTrader's prop guide (opens in a new tab) of 12 August 2026 says retail accounts use a separate paid subscription | Webhook alerts: a plan with webhooks, two-factor authentication, ports 80 and 443, a 3-second reply | The same webhook rules |
TradingView's Help Center (opens in a new tab) says automated strategy trading with a brokerage account is not available yet.
Who owns the Tradovate API documentation now?
NinjaTrader does: NinjaTrader Group announced on 12 January 2022 that it had acquired Tradovate Holdings, and the API license dated September 2026 is a NinjaTrader document, yet the API hosts still carry the Tradovate name.
| Site | What it is | Read it for |
|---|---|---|
api.tradovate.com | Original reference, a JavaScript app | Endpoints, access requirements, license |
api-d.tradovate.com | A near-identical build, with 707 operations against 701; developer.ninjatrader.com/docs/api redirects here | The same |
docs.ninjatrader.com/api | NinjaTrader's Trade API pages | Token lifetime, sessions, dynamic hosts |
partner.ninjatrader.com | NT Connect and NT Prop partner docs; partner.tradovate.com redirects here | Rate limit tables, penalty tickets |
Tradovate API access: requirements and cost
The older reference states three requirements, the newer page states fewer, and the only official price seen is a 2021 screenshot showing $25 a month.
| Source | Date | What it says |
|---|---|---|
| API reference, Getting Started | Read 5 November 2026 | Live account with more than $1,000 in equity, a subscription to API Access, a generated API key |
| Trade API Getting Started | Read 5 November 2026 | A NinjaTrader account plus a client ID and secret issued by NinjaTrader; no equity or fee mentioned |
| Forum how-to linked from the reference | Post of 26 May 2021 | Buy API Access under Application Settings, Add-Ons; generate the key under API Access; self-attestations; a digital agreement; permissions; the key is shown once; screenshots show $25.00 a month |
| Forum users (not official) | January to September 2026 | $25 a month |
Users describe three walls; staff replied only on the third:
- Add-on not visible. A user wrote on 24 February 2026 (opens in a new tab) that API Access did not appear despite a balance above $1,000; no reply followed.
- Two brands. A user wrote on 4 September 2026 (opens in a new tab) that a NinjaTrader account showed no API option and support suggested a second, funded Tradovate account.
- Market data. The Market Data API page says there is no separate signup, which speaks to credentials. A Tradovate forum moderator (opens in a new tab), answering a post that put the cost at $290 a month, wrote on 16 December 2022 that since a CME ruling of 30 September 2022, users who want market data through the API must register as CME sub-vendors, and on 31 December 2022 that access stays blocked until vendor fees are paid and the user is whitelisted. A user wrote (opens in a new tab) $390 a month on 29 June 2023, and users repeat the rule in 2026, so ask CME for a current price. A user wrote on 18 October 2023 that orders work without that license.
Tradovate OAuth for third-party apps and the API license
OAuth is documented, but users report that credentials for an app serving other people are not self-service, and the license limits what any integration may do.
The OAuth page (opens in a new tab) asks for a client ID and secret issued by NinjaTrader and a registered redirect URI. A moderator's how-to (opens in a new tab) of 27 May 2021 and the partner docs describe generating an OAuth key under API Access in your own settings, but a user quoted a Tradovate email (opens in a new tab) on 2 July 2026 saying such credentials go only to approved NinjaTrader Ecosystem members after review, and users reported unanswered emails in March and October 2026. No staff member confirmed this in the threads read, so ask.
| Section | Effect on a bridge |
|---|---|
| 2(i) | You may not access or control customer accounts or act for a customer, yet section 1 licenses software for trading by your customers and partner docs describe OAuth apps placing orders for end users; the documents do not reconcile these, so ask |
| 2(viii) | NinjaTrader, its affiliates and exchanges may audit your systems and records on notice |
| 3 | No redistribution of API content or market data without written consent; cached content deleted or refreshed within 24 hours |
| 4 | No use with copyleft software such as GPL, LGPL or AGPL code, so check your dependencies |
Tradovate API rate limit: which number is right?
No single number is confirmed for a personal key: official sources give no figure or a partner table, and 1,500 per hour comes only from user reports.
| Source | Figure | Scope |
|---|---|---|
| API reference, Access | No numbers; limits per hour, minute and second; HTTP 429 | All users |
| API FAQ (opens in a new tab), repository last changed 22 March 2022 | No hard cap; values vary on purpose | All users |
| Partner docs (opens in a new tab), user level | Authenticated 5,000 per hour, minute and second; anonymous 1,000, 1,000 and 100 | Per user ID; top limit set per partner |
| Partner docs, per endpoint, rolling hour | accesstokenrequest 5 failed calls; renewaccesstoken 15; syncrequest 300; dryrun 500 | Per IPv4 /24 subnet or full IPv6 address |
| User report (opens in a new tab), 31 March and 16 April 2026 | Rate limit exceeded: more than 1500 requests per hour | Prop demo accounts fanned out through one app; no staff reply |
That message has the form of the p-message example in the partner docs, which suggests an endpoint penalty rather than the user-level 429; that is an inference. Handle each response:
- HTTP 200 with
p-ticket. The request was not handled. Waitp-timeseconds and resend the same body plusp-ticket. Ifp-captchais true, stop for about an hour. - HTTP 429. The partner page (opens in a new tab) says to wait one hour from your most recent call. The older reference also lists 423 as too many requests, so the sample blocks on both.
- HTTP 408, 429 or 5xx on an old token. It may not be a rate limit: you get two concurrent sessions per user, and a third closes the oldest, including a browser login with the same user. Tokens last about 90 minutes, so renew about 15 minutes before expiry instead of requesting new ones.
- Dropped sockets. The reference also allows one client connection per customer, more by subscription, without reconciling this with the two-session rule.
Hypothetical example. A bridge gets HTTP 429 at 14:00 and an engineer sends one test call at 14:40. Under the partner page's rule the wait now runs to 15:40, so keep the block in shared state.
Tradovate webhook bridge: a tested order layer
Your receiver should queue the alert and reply within TradingView's 3 seconds, and a worker then calls the API with five details in mind.
isAutomated: trueis mandatory for anything a human did not click; it defaults to false, and the docs say omitting it can violate exchange policy.accountIdis the integer fromaccount/list, not a string like LIVE12345.symboltakes a contract such as the docs' MESM1; no page read shows a continuous chart ticker being accepted, so keep a table or callcontract/rollcontract.- Hosts come from
apiHostsin the login reply; the dynamic hosts page (opens in a new tab) warns of HTTP 307 or WebSocket 421 for clients that ignore them. clOrdIdexists, but no page read promises that duplicates are rejected, so drop repeated alerts first; see client order ID.
Python 3.11 with requests, run on 5 November 2026 against a local mock built from the documented responses; the token comes from auth/accesstokenrequest:
import time, requests
class Stop(Exception):
"""Do not retry."""
class Tradovate:
def __init__(self, base, token):
self.base, self.token, self.http = base, token, requests.Session()
self.blocked_until = 0.0
def _post(self, path, body, retried=False):
if time.time() < self.blocked_until:
raise Stop("inside the 429 wait: nothing sent")
head = {"Authorization": f"Bearer {self.token}"}
try:
r = self.http.post(self.base + path, json=body, headers=head, timeout=10)
except (requests.Timeout, requests.ConnectionError):
raise Stop("no reply: order state unknown") # check order/list first
if r.status_code in (429, 423): # empty body
self.blocked_until = time.time() + 3600
raise Stop(f"HTTP {r.status_code}: all calls stopped for one hour")
r.raise_for_status()
data = r.json()
if "p-ticket" in data:
if data.get("p-captcha") or retried:
raise Stop(f"penalty: {data.get('p-message')}")
time.sleep(data["p-time"])
return self._post(path, {**body, "p-ticket": data["p-ticket"]}, True)
return data
def market(self, account_id, account_spec, symbol, action, qty, client_id):
data = self._post("/order/placeorder", {
"accountId": account_id, "accountSpec": account_spec,
"symbol": symbol, "action": action, "orderQty": qty,
"orderType": "Market", "isAutomated": True, "clOrdId": client_id})
if data.get("failureReason") not in (None, "Success") or "orderId" not in data:
raise Stop(f"{data.get('failureReason')}: {data.get('failureText') or data.get('errorText')}")
return data["orderId"]Output for seven synthetic alerts:
ok-1 -> orderId 1003
reject-2 -> Stop: MaxPosLimitReached: synthetic limit
penalty-3 -> orderId 1006
captcha-4 -> Stop: penalty: Rate limit exceeded: more than 20 requests per hour
slow-5 -> Stop: no reply: order state unknown
over-6 -> Stop: HTTP 429: all calls stopped for one hour
ok-7 -> Stop: inside the 429 wait: nothing sentNot run: the real API, demo or live, because a key needs a funded account. Keep the name, password, cid and sec on the server, never in the alert message; see API key security.
Whose alerts, whose accounts and which country
Use alerts from rules you wrote, on your own account, and check your broker's, your firm's and your country's rules first.
- Your own alerts. No third-party signal feeds: ESMA's briefing of 30 March 2023 (opens in a new tab) (paragraph 12) treats a firm's automatic execution of third-party signals as portfolio management under MiFID.
- No fan-out across other people's accounts. Section 2(i) of the license bars it, and copying or managing accounts can be licensed activity.
- Prop firm rules bind you. Ask your firm before automating.
- Your country. For readers in Turkey: the Capital Markets Board (SPK) said on 23 February 2023 (opens in a new tab) that residents may carry out leveraged FX trades only through firms it has authorized, and offering them without authorization is a crime under Article 109(2) of Law No. 6362 (opens in a new tab). Article 99(4) lets SPK block such sites, and Communiqué III-37.1 (opens in a new tab) Articles 9 and 27 define activity aimed at residents and cap leverage at authorized firms. Article 9 reaches any investment service from a firm abroad, but no text read settles exchange-traded futures through a foreign broker, so take advice.
Fincode quotes custom work through its TradingView automation page, so it has an interest here. No prior Tradovate project is claimed; ask whether your case fits.
Frequently asked questions
How much does Tradovate API access cost?
Tradovate's how-to post of 26 May 2021 shows $25.00 a month, and forum users still quoted $25 in September 2026, plus a live account above $1,000 and, for market data, a CME fee. No current official page read states a price.
Does Tradovate have a webhook for TradingView?
The API reference read on 5 November 2026 shows no inbound webhook endpoint, so a TradingView webhook has to reach a receiver you run.
Can I test the Tradovate API on demo before paying?
A Tradovate forum moderator wrote on 13 August 2021 that you need a funded live account and the API Access add-on first, and then have unlimited simulation access on the demo host. No official page read describes a free demo-only path.
Is the Tradovate API limit 1,500 requests per hour?
That figure comes from user reports of March and April 2026, with no staff reply. Partner docs read on 5 November 2026 list 5,000 per hour for authenticated partner users, so handle 429 and penalty responses.
Sources
- Tradovate API reference: Getting Started, Access, Conventions, License (JavaScript app, read 5 November 2026) (opens in a new tab)
- Tradovate API reference, Org Admin spec; target of developer.ninjatrader.com/docs/api (opens in a new tab)
- NinjaTrader Trade API: Getting Started (opens in a new tab)
- NinjaTrader Trade API: Authentication and Access (token lifetime, sessions, limits) (opens in a new tab)
- NinjaTrader Market Data API: Authentication and Access (opens in a new tab)
- NinjaTrader Partner API: OAuth setup for NT Connect (opens in a new tab)
- Tradovate Forum: How Do I Access the API? (26 May 2021) (opens in a new tab)
- TradingView: Terms of Use, section 3 (read 5 November 2026) (opens in a new tab)
- SPK (Capital Markets Board): Press notice on unauthorized leveraged transactions, 23 February 2023 (Turkish) (opens in a new tab)
- Tradovate Forum, user reports: Third-Party OAuth Integration (January to July 2026) (opens in a new tab)
- NinjaTrader Community Forum, user reports: Enterprise API access for a SaaS app (March to October 2026) (opens in a new tab)
- Tradovate: Pricing (plans and third-party tools, read 5 November 2026) (opens in a new tab)
- Tradovate: NinjaTrader Acquires Tradovate (12 January 2022) (opens in a new tab)
- TradingView: How to configure webhook alerts (opens in a new tab)
- Tradovate Forum: Starting strategies through API (moderator replies of 9 July and 13 August 2021) (opens in a new tab)
This guide is general information about software and markets, not investment, legal or tax advice. Automated trading can lose money, past or backtested performance does not guarantee future results, and the rules that apply depend on your jurisdiction and your exchange's terms. Sources, checks and corrections: see the editorial policy.