Schwab Trader API Explained (2026): What Replaced the TD Ameritrade and thinkorswim APIs, What an App Can Do in Your Account, and the 7-Day Rule

There is no thinkorswim API. There never was one. thinkorswim is a trading front end that logs into a Schwab brokerage account, and the account is the thing an API reaches. For years the API behind it was TD Ameritrade's; Schwab switched that off after the close on May 10, 2024 and replaced it with the Schwab Trader API. If you are searching for a thinkorswim API in 2026, this is the page that answers the question you actually have: what the Schwab Trader API lets an outside program do in your account, what it will not do, what thinkorswim can automate without any API at all, and what we learned running 294 live automated orders through it.
The short history, with dates
- Before 2024: the TD Ameritrade API served thinkorswim users and a generation of hobby bots. Schwab bought TD Ameritrade in 2020 and moved accounts across in 2023 and 2024; accounts got Schwab account numbers, and watchlists and thinkorswim alerts did not come with them.
- May 10, 2024: Schwab's notice to developers said the TD Ameritrade endpoints "will be disabled after market close on May 10, 2024." Every bot built on them stopped that evening.
- 2024: the Schwab Trader API opened on developer.schwab.com in two tiers. Individual is for "your own application for your own self-directed Brokerage account." Commercial is for a company whose software acts for other people's accounts, with its own registration; that is the tier JorgAI connects through. Schwab told developers in August 2024 the individual program was about 90% complete, and third-party tools shipped their first Schwab integrations that month.
- Today: thinkorswim remains Schwab's active-trader platform, with no minimum deposit, and a Schwab account is required to log in. Schwab reported 40.3 million active brokerage accounts for the quarter ended September 30, 2026, in its Q3 release. It does not publish how many use the API.
What the Schwab Trader API covers
Two products sit behind one developer login: Accounts and Trading, and Market Data. Here is what a program can do with each, and the limits that shape how you build on it.
- Accounts and trading: list the accounts under the login, read positions and balances, place, replace and cancel orders, read order status and read transactions. The API we use has no endpoint for moving money; transfers and withdrawals stay in Schwab's own apps.
- Market data: quotes, price history, option chains and movers, for the symbols the account can trade.
- Instruments: stocks, ETFs and options. Futures and forex order entry are not part of it.
- Order types: market, limit, stop, stop-limit, trailing stop, trailing stop-limit, market-on-close and limit-on-close, plus one-cancels-other and one-triggers-other groupings through the order strategy field. That is how a bracket works: a buy with the stop-loss and take-profit nested beneath it as an OCO pair that Schwab holds on its side.
- Whole shares only. Schwab does not support fractional orders through the API. A fractional order is accepted and never fills, which strands a position you cannot sell by API; a fractional lot you already own has to be sold in the Schwab app.
- No paper trading. The API has no sandbox. paperMoney, the $100,000 practice account, exists only inside thinkorswim. Every API order is a live order in a live account.
- Rate limit: 120 non-order requests a minute per app. Order throttling is set per account when the app is registered.
- Tokens: the access token lasts 30 minutes and the refresh token 7 days. After 7 days the account holder has to log in again in a browser; no program can do that for them. The token-refresh post covers the lifecycle and what a bot should do when the token dies.
- Approval: a new app shows "Approved - Pending" and then "Ready For Use." Published experiences range from a couple of business days to about a month.
What thinkorswim can automate without an API
More than people assume, and less than they hope. Conditional orders can be triggered by a study: Schwab's own manual says orders "can be automatically placed or canceled when a study-based condition is fulfilled," using a built-in or custom study, as long as the study has exactly one plot. OCO and bracket orders are native. That covers "buy when the 20-day crosses the 50-day" and "sell at either the target or the stop."
What it does not cover is the thing the word strategy suggests. thinkScript strategies, the backtest objects with BUY_AUTO and SELL_AUTO signals, are hypothetical by design. Schwab's thinkScript tutorial states it directly: "you cannot send real orders using strategies." And a conditional order, once it fills, is done; it does not re-arm for the next signal, so a repeating rule means re-entering the order each time. The thinkorswim automation post walks through setting these up and where they run out.
What an outside app can and cannot do with your account
Under the Individual tier, your app reads your account, places and cancels your orders and pulls data, and that is the whole surface. It cannot move money, because the API has no call for it. It cannot run while your refresh token is dead, which happens 7 days after your last browser login. It cannot trade a fractional share. It cannot see thinkorswim's paperMoney account. And it cannot reach into thinkorswim's own objects: your saved studies, your conditional orders and your alerts live in the platform, not in the API.
Schwab's position on third parties shifted in public this autumn. On the Q3 2026 earnings call its CEO said the firm has "clients that are trading through LLMs and APIs," that it is "blocking unauthorized agents that try to log in on behalf of clients," and that it will let clients connect their AI models to Schwab's own MCP servers while it controls or limits "the riskiest actions like moving money," starting with a pilot on Claude. There is no official Schwab MCP server for the public yet; the community ones carry Schwab's "not approved, endorsed, or certified" notice. The MCP post covers what that route costs and leaves out at the brokers that do publish one. One more data point for anyone choosing a platform: as of September 2026 at least one well-known automation service lists its Schwab integration as currently unavailable with a wait list, which is a reminder that the Commercial tier is a registration, not a download.
What 294 live orders taught us about building on it
JorgAI places automated orders at Schwab for members, and the fill-speed post measured 294 of them; the numbers below are the engineering lessons behind those numbers, the kind that cost a weekend if you learn them on your own account.
- It is fast when it works. Signal to Schwab accepting the order: median 0.8 seconds. Submit to fill on a market order: the same second, 90th percentile one second. Signal to fill: median 1.0 seconds. Exits median 3.5 seconds because a cancel of the resting bracket legs comes first.
- Order listing needs a date range. A request for open orders without both a from-time and a to-time is rejected outright. Until that was found, our exit path could not see resting orders at all, and one trailing-stop exit was rejected three times as a result on September 30. Every DIY builder hits this.
- Bracket legs are not top-level orders. The stop and target legs come back nested under the filled parent. If your code looks only at the top level it will think there is nothing to cancel, then try to sell shares that already have a sell resting against them.
- A bracket can be refused while the entry is accepted. When Schwab rejects the combined order our adapter falls back to a plain entry and monitors the exit from the server; your code needs the same branch or it will stand there with a filled buy and no stop.
- Symbol rejections come in clusters. Eighteen orders in a week in late September were refused with "Could not resolve instrument," all on a handful of newly listed or renamed symbols, and none since. Log the broker's message verbatim; it is the only clue you get.
- The 7-day rule is a product feature, not a bug to code around. Our worker refreshes the 30-minute access token every 20 minutes, and when the 7-day refresh token dies it pauses trading and emails the member to reconnect. There is no quiet way through it, by design.
Three ways to automate a Schwab or thinkorswim account in 2026
- Inside thinkorswim: study-based conditional orders and OCO brackets. Free, no API, one-shot per order, limited to what a one-plot study can express.
- Your own app on the Individual tier: full control, Python wrappers exist, and you own the scheduler, the token refresh, the order reconciliation and the uptime. No sandbox, so you test with real shares.
- A platform registered on the Commercial tier: you authorize it once through Schwab's login, re-authorize weekly, and it runs the rules on its servers. How to automate a Schwab account is the step-by-step, and the Schwab bots short list names the options that actually connect.
Where JorgAI fits
JorgAI connects to a Schwab account through the Trader API on the Commercial tier. You log in at Schwab, pick the account, and set the rules: daily spend, position size, auto-trades per day, stop and trailing stop. The system scans during the session on its own servers and places whole-share orders with the stop and target attached as a bracket where Schwab accepts it, monitoring the exit itself where it does not. Tokens are refreshed every 20 minutes without you; every 7 days the Schwab screen comes back and you tap through it. Positions you opened in thinkorswim show up because it is the same account. There is nothing to install and no API key to copy, since Schwab's login is the authorization.
Quick answers
Does thinkorswim have an API?
No. thinkorswim is a front end on a Schwab brokerage account. The API for that account is the Schwab Trader API, which replaced the TD Ameritrade API when it was disabled after the close on May 10, 2024.
Is there a thinkorswim API for Python?
Not for thinkorswim itself. Community Python wrappers for the Schwab Trader API exist and reach the same account thinkorswim trades; they cannot reach thinkorswim's studies, alerts or paperMoney account.
Does the Schwab API support paper trading?
No. There is no sandbox. The paperMoney practice account exists only inside thinkorswim. Every order sent through the API is a live order.
What are the Schwab API rate limits?
120 non-order requests a minute per app, with order throttling set per account at registration. Access tokens last 30 minutes and refresh tokens 7 days.
Why does Schwab make me re-authorize every 7 days?
The refresh token has a 7-day life and only a browser login can issue a new one. Schwab has not offered a way around it; any platform that connects to Schwab, including JorgAI, asks you to reconnect weekly.
Can thinkScript strategies place real trades?
No. Schwab's own tutorial says strategy signals are hypothetical and cannot send real orders. Study-based conditional orders can place one order when a study condition is met; they do not re-arm after filling.
Dates, limits and quotes are from Schwab's developer pages, the thinkorswim Learning Center, Schwab's Q3 2026 earnings release and call, and published developer documentation, as of November 4, 2026; Schwab can change any of them. The order measurements are JorgAI's own, from the window described in the fill-speed post, and describe how the connection behaves, not trading results. Education, not financial advice.
If you would rather authorize once than build the refresh, the reconciliation and the exit path yourself, start a free trial, log in at Schwab, and set the rules.
More in AI & Technology
Keep reading
Let the AI do the trading.
Set it up in minutes. 7 day free trial on Starter, Plus and Pro.
Get started freeGet the weekly market read and new tools by email
One email a week: what moved, what the data says, and the next free tool when it ships. No spam, unsubscribe in one click.
More from the blog
Every other post, newest first
193 more posts
Keep reading
Stops, targets and a daily loss limit, enforced for you.
JorgAI runs the rules you set inside your own brokerage account. Zero withdrawal permissions, disconnect anytime.
Showing 18 of 193. Keep scrolling.




















