Tradovate API

Tradovate API Rate Limits & 429 Errors

Automate Tradovate long enough and you'll meet the 429. Here's where the real request ceilings sit, what happens when you cross them, and how to throttle your bot to stay under them.

Revisado por el equipo de Sistemas de Trading de PickMyTrade Última actualización
· 6 min read
Tradovate API documentation showing the WebSocket real-time endpoint used instead of REST polling

Automate Tradovate long enough and you'll meet the 429. You fire off a burst of API calls and, instead of a fill, get back 429 Too Many Requests. It isn't a glitch, Tradovate caps how fast any single user can hit its API, and once you cross that line, new calls bounce until you slow down. Here's where the ceiling sits and how to stay under it.

What Are Tradovate's API Rate Limits?

Tradovate throttles API traffic on a per-second, per-minute, and hourly basis. The two ceilings you'll actually feel:

Time window Cap (rolling)
Per minuteAbout 80 requests over a rolling 60 seconds
Per hour5,000 requests over a rolling 60 minutes

These are rolling windows, not fixed clock resets. Hit the hourly cap at 2:15 and it clears around 3:15 as your oldest requests age out. Tradovate can also adjust these numbers, so treat them as a ceiling to stay under, not a quota to ride. You'll need working credentials first, here's how to get Tradovate API access and generate a key.

What Happens When You Hit a 429

Cross the cap and Tradovate returns a 429 and freezes new requests for roughly 20 to 30 seconds. That pause is the dangerous part: while it's active you can't place, modify, or cancel orders through the API, a bad spot with a live position open. Keep pushing and the response escalates into a time penalty carrying two fields, p-time (seconds to wait) and p-ticket (a token you send back). In stubborn cases you'll also see p-captcha, which locks automated access for about an hour, and repeated flooding can earn a longer block that only support clears. More on those tokens in the p-ticket / p-time time penalty guide.

How to Stay Under Tradovate's Rate Limits: Step-by-Step

1

Lean on WebSockets, Not Constant Polling

Every REST call (quotes, fills, position checks) spends a request. Poll those endpoints on a one-second timer and you'll burn the budget in minutes. Open a WebSocket instead: subscribe once, and Tradovate streams updates to you as they happen, so you stop re-asking for data you already have. That alone cuts a big share of a busy bot's request volume.

2

Throttle and Batch the Calls You Keep

For the REST calls you genuinely need, put a rate governor in front of them. Keep your outbound rate comfortably below 80 a minute, around 40 to 50 is a safe pace, and queue anything above that instead of firing it all at once. Batch related actions where the endpoint allows it.

3

Respect the p-ticket / p-time Response

When you push too hard, Tradovate tells you how to recover. The response returns a p-time value (seconds to wait) and a p-ticket token. Wait the p-time seconds, then resend the exact same request with p-ticket added to the body, keep every original field and just append the ticket.

4

Back Off on 429, and Kill Reconnect Storms

Treat a 429 as a brake pedal, not a reason to retry harder. Add exponential backoff: wait, and if it fails again, double the wait, and keep doubling until calls go through. Be just as disciplined about reconnects, slamming the auth or connection endpoints after a dropout is one of the quickest ways to earn a real penalty. Reconnect once, give it a beat, then try again.

5

Locked Out? Wait It Out or Ask for a Reset

If you're already blocked, patience is the clean fix, the rolling window usually lifts the block about an hour after your last offending call. Can't wait, say you're managing a live position? Contact Tradovate support with your username and ask them to reset your request limits. On a prop or evaluation account, some of this runs through your firm, and limits vary by firm and account size, so check your firm's current rules.

Request-pacing settings used to keep Tradovate API calls under 80 per minuteTradovate API time-penalty response showing p-time and p-ticket fields in JSON429 Too Many Requests response in a browser network console triggering an exponential backoff retryTradovate Support contact page for requesting an API request-limit reset

Automate this with PickMyTrade

Building your own throttling, backoff, and p-ticket handling is real work, and easy to get wrong while you're also trying to trade. PickMyTrade sits between your TradingView alerts and Tradovate, queuing and pacing orders so a burst of signals never becomes a 429 lockout, you send the alert, it manages the request budget. Prefer to skip raw API work? You can automate Tradovate straight from TradingView webhooks.

Automate Your Tradovate Execution

Skip the throttling and backoff code. Let PickMyTrade queue and pace your orders so a burst of signals never trips a 429.

Start Your Free 5-Day Trial

Frequently Asked Questions

Tradovate limits API requests on a per-second, per-minute, and hourly basis, in practice, about 80 a minute and 5,000 an hour on rolling windows. Confirm the current figures in Tradovate's official API documentation before building against them.

Slow down. Wait for the block to clear, usually 20 to 30 seconds on a first offense, up to an hour for a longer penalty, then resume at a lower request rate. If the response includes p-time and p-ticket, wait the p-time seconds and resend with the p-ticket attached. For a hard lockout, ask Tradovate support to reset your request limits.

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. "Tradovate" and 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.