# TradingView to Tradovate: webhooks, API access and limits

URL: https://fincodelabs.com/en/blog/tradingview-to-tradovate · Publisher: Fincode (Fincode Yazılım ve Teknoloji A.Ş.), Istanbul, Turkey · Category: TradingView automation · Published: 2026-11-06 · Updated: 2026-11-06

TradingView to Tradovate: chart trading, a webhook bridge or third-party apps, with API access rules, conflicting rate limits, license terms and tested code.

**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](https://www.tradingview.com/policies/), 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](https://www.tradingview.com/support/solutions/43000722015-using-credentials-for-webhooks/) 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](https://fincodelabs.com/en/blog/tradingview-webhook-bot), [TradingView alert message JSON](https://fincodelabs.com/en/blog/tradingview-alert-message-json) and [TradingView alerts not working](https://fincodelabs.com/en/blog/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.

**Routes from TradingView to Tradovate, official pages read 5 November 2026**

| 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](https://prop.ninjatrader.com/blogs/connect-prop-account-to-tradingview/) 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](https://www.tradingview.com/support/solutions/43000481026-how-to-autotrade-using-pine-script-strategies/) 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.

**One API, four documentation sites, seen 5 November 2026**

| 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.

**What each source says about API access**

| 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](https://community.tradovate.com/t/why-cant-i-get-api-access/12534) that API Access did not appear despite a balance above $1,000; no reply followed.
- **Two brands.** [A user wrote on 4 September 2026](https://community.tradovate.com/t/api-access/12819) 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](https://community.tradovate.com/t/is-cme-sub-vendor-requirement-for-api-access-is-290-per-month/6215), 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](https://community.tradovate.com/t/does-this-api-work-anymore-how-much-does-it-cost/7458) $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](https://docs.ninjatrader.com/api/oauth) asks for a client ID and secret issued by NinjaTrader and a registered redirect URI. A [moderator's how-to](https://community.tradovate.com/t/how-do-i-register-an-oauth-app/2393) 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](https://community.tradovate.com/t/api-access-for-3rd-party-app-development/11941) 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.

**[NinjaTrader API License Agreement](https://api.tradovate.com/nt-connect-api-license-agreement.pdf), September 2026, in summary**

| 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.

**Rate limit statements, read 5 November 2026**

| Source | Figure | Scope |
| --- | --- | --- |
| API reference, Access | No numbers; limits per hour, minute and second; HTTP 429 | All users |
| [API FAQ](https://github.com/tradovate/example-api-faq/blob/main/docs/HowDoesTradovateLimitRequestsAndData.md), repository last changed 22 March 2022 | No hard cap; values vary on purpose | All users |
| [Partner docs](https://partner.ninjatrader.com/connect/overview/core-concepts/rate-limits), 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](https://community.tradovate.com/t/large-apex-demo-account-cluser-sharing-one-tradovate-userid-and-hitting-1500-hour-rate-limit/12582), 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. Wait `p-time` seconds and resend the same body plus `p-ticket`. If `p-captcha` is true, stop for about an hour.
- **HTTP 429.** The [partner page](https://partner.ninjatrader.com/connect/overview/core-concepts/penalty-tickets) 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: true`** is mandatory for anything a human did not click; it defaults to false, and the docs say omitting it can violate exchange policy.
- **`accountId`** is the integer from `account/list`, not a string like LIVE12345.
- **`symbol`** takes a contract such as the docs' MESM1; no page read shows a continuous chart ticker being accepted, so keep a table or call `contract/rollcontract`.
- **Hosts** come from `apiHosts` in the login reply; the [dynamic hosts page](https://docs.ninjatrader.com/api/dynamic-api-hosts) warns of HTTP 307 or WebSocket 421 for clients that ignore them.
- **`clOrdId`** exists, but no page read promises that duplicates are rejected, so drop repeated alerts first; see [client order ID](https://fincodelabs.com/en/blog/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`:

```python
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 sent
```

**Not 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](https://fincodelabs.com/en/blog/api-key-security-trading-bots).

## 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](https://www.esma.europa.eu/sites/default/files/2023-03/ESMA35-42-1428_Supervisory_Briefing_on_Copy_Trading.pdf) (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](https://spk.gov.tr/duyurular/basin-duyurulari/2023/izinsiz-kaldiracli-islemlere-iliskin-basin-duyurusu) 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](https://www.mevzuat.gov.tr/mevzuatmetin/1.5.6362.pdf). Article 99(4) lets SPK block such sites, and [Communiqué III-37.1](https://mevzuat.spk.gov.tr/api/Mevzuat/File/130) 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](https://fincodelabs.com/en/services/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)](https://api.tradovate.com/)
- [Tradovate API reference, Org Admin spec; target of developer.ninjatrader.com/docs/api](https://api-d.tradovate.com/)
- [NinjaTrader Trade API: Getting Started](https://docs.ninjatrader.com/api/getting-started)
- [NinjaTrader Trade API: Authentication and Access (token lifetime, sessions, limits)](https://docs.ninjatrader.com/api/authentication)
- [NinjaTrader Market Data API: Authentication and Access](https://docs.ninjatrader.com/market-data/authentication)
- [NinjaTrader Partner API: OAuth setup for NT Connect](https://partner.ninjatrader.com/connect/overview/partner-integration/setting-up-o-auth)
- [Tradovate Forum: How Do I Access the API? (26 May 2021)](https://community.tradovate.com/t/how-do-i-access-the-api/2380)
- [TradingView: Terms of Use, section 3 (read 5 November 2026)](https://www.tradingview.com/policies/)
- [SPK (Capital Markets Board): Press notice on unauthorized leveraged transactions, 23 February 2023 (Turkish)](https://spk.gov.tr/duyurular/basin-duyurulari/2023/izinsiz-kaldiracli-islemlere-iliskin-basin-duyurusu)
- [Tradovate Forum, user reports: Third-Party OAuth Integration (January to July 2026)](https://community.tradovate.com/t/third-party-oauth-integration/12456)
- [NinjaTrader Community Forum, user reports: Enterprise API access for a SaaS app (March to October 2026)](https://discourse.ninjatrader.com/t/questions-about-enterprise-api-access-for-saas-app/6073)
- [Tradovate: Pricing (plans and third-party tools, read 5 November 2026)](https://www.tradovate.com/pricing/)
- [Tradovate: NinjaTrader Acquires Tradovate (12 January 2022)](https://www.tradovate.com/press-releases/ninjatrader-acquires-tradovate/)
- [TradingView: How to configure webhook alerts](https://www.tradingview.com/support/solutions/43000529348-how-to-configure-webhook-alerts/)
- [Tradovate Forum: Starting strategies through API (moderator replies of 9 July and 13 August 2021)](https://community.tradovate.com/t/starting-strategies-through-api/2625)

> 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](https://fincodelabs.com/en/editorial-policy).

---

Published by Fincode (Fincode Yazılım ve Teknoloji A.Ş.), a software company in Istanbul, Turkey: https://fincodelabs.com/en/blog/tradingview-to-tradovate

Cite as: Fincode, "TradingView to Tradovate: webhooks, API access and limits", updated November 6, 2026, https://fincodelabs.com/en/blog/tradingview-to-tradovate
