Test on the Tradovate Demo API Environment
Before a single order from your bot touches real money, run it through Tradovate's demo environment first. Same API, same endpoints, same auth flow, just a different hostname. Here's how to point every call, and your WebSockets, at demo.
Before a single order from your bot touches real money, run it through Tradovate's demo environment first. It's the same API, same endpoints, same JSON, same auth flow, just pointed at a simulation host that fills against paper money instead of your funded balance. Get every request working there, then swap one hostname to go live.
What Is the Tradovate Demo API Environment?
Tradovate runs two parallel API environments. The demo (or simulation) environment mirrors the live one almost exactly, but every fill, position, and P&L is simulated, nothing reaches the exchange and nothing touches your wallet. You authenticate the same way and call the same paths; only the host you send requests to changes. That makes demo the natural place to shake out bugs in your order logic, token handling, and WebSocket reconnects while the stakes are zero.
Point Your API Calls at Demo: Step-by-Step
Confirm API Access and a Simulation Account
You need two things: the API Access add-on enabled, that's where your API Key (cid) and Secret (sec) come from, and a simulated account to trade against. New Tradovate signups get a simulation account by default, and prop-firm evaluations run on them too. If you haven't switched on API access yet, do that first, then note your cid and sec.
Swap in the Demo Base URL
Everything routes through the demo host instead of the live one. The paths after /v1 are identical across both environments, /auth/accessTokenRequest, /order/placeOrder, and the rest don't change; only the hostname does. Market data streams over its own md host, so if quotes won't connect on a simulation account, confirm the current demo market-data host in Tradovate's docs, it has shipped both a shared endpoint and a separate demo one.
Request an Access Token From the Demo Host
POST your credentials, name, password, appId, appVersion, cid, sec, and a stable deviceId, to /v1/auth/accessTokenRequest on the demo host. A token minted on demo only works on demo; it won't authorize the live host, and vice versa. Reuse the same deviceId (a fixed UUID) every time so Tradovate's device checks stay happy.
Point Your WebSockets at Demo Too
REST isn't the whole story. If your app streams orders, fills, or quotes, open the trading socket at wss://demo.tradovateapi.com/v1/websocket and send your demo access token through the authorize frame right after connecting. Market data rides its own socket on the md host, authorized with the mdAccessToken from the same login response. Mixing a demo token with a live socket is a common source of 401s.
Verify You're Simulated, Then Flip to Live
Place a small test order and confirm it shows up in your simulation account, with the fill, position, and P&L updating the way you expect. Once your bot behaves, tokens renewing, sockets reconnecting, orders and brackets filling, going live is close to a one-line change: swap demo.tradovateapi.com for live.tradovateapi.com and re-authenticate. One heads-up: live enforces device approval that demo waves through, so your first live login may ask you to confirm the device from the email Tradovate sends.
| Purpose | Demo (simulation) | Live (funded) |
|---|---|---|
| REST base | https://demo.tradovateapi.com/v1 | https://live.tradovateapi.com/v1 |
| Trading WebSocket | wss://demo.tradovateapi.com/v1/websocket | wss://live.tradovateapi.com/v1/websocket |
| Market-data WebSocket | wss://md.tradovateapi.com/v1/websocket | wss://md.tradovateapi.com/v1/websocket |




No-code shortcut for quick checks: Open Application Settings › API Access and click the API Doc link for your key. It's a pre-authorized, interactive version of the API docs, authenticate once with the token button up top, hit Interact on any operation, and try the request and response before you wire it into code.
Why Test on Demo First
- Debug order, bracket, and OCO logic without risking a funded balance.
- Confirm token requests, renewals, and expiry handling behave under real timing.
- Test WebSocket reconnects and message parsing against live-shaped data.
- Dry-run a new strategy before it trades real size.
- Reproduce a production bug safely on a simulation account.
Automate This With PickMyTrade
If you'd rather not build and babysit all this plumbing, token renewals, environment switching, socket reconnects, PickMyTrade wires your TradingView alerts straight to Tradovate and manages the connection for you. Test on a simulated account, then point it at your funded account, no API code required.
Skip the API Plumbing Entirely
Let PickMyTrade wire your TradingView alerts straight to Tradovate and manage the connection for you, demo or live.
Start Your Free 5-Day TrialFrequently Asked Questions
No. Your simulation account is enough. Point your requests at the demo host and sign in with your normal Tradovate credentials, the demo environment fills everything with paper money.
No. A token is only valid on the environment that issued it. Request one from the demo host for simulation and a fresh one from the live host for a funded account.
Mostly the hostname, demo.tradovateapi.com becomes live.tradovateapi.com, plus a re-authentication against live. Live also enforces device approval and, of course, real fills and margin, so test thoroughly before you switch.
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.