Schwab Developer Portal: How Individual Access Works, and the Rules That Trip Up First Apps

The Schwab Developer Portal at developer.schwab.com is where Schwab hands out access to its Trader API. There are two doors. An individual developer registers, creates an app, waits for a manual review, and then signs in to their own account through that app. A commercial app, which is what a platform like JorgAI is, goes through a longer review and then lets its members sign in with Schwab without registering anything themselves. This page is about the first door: what the registration asks for, what the two status labels mean, how long people wait, and the rules that trip up most first apps. For what the API itself can do in an account once you are in, see the Schwab Trader API explained.
The individual path in six steps
| Step | What you do | What to know |
|---|---|---|
| 1. Register | Create a developer account at developer.schwab.com with your email, then sign in to the developer site itself | The developer login is separate from your brokerage login; the schwab-py guide warns to sign in to the developer site after creating the account |
| 2. Pick the product | Open Trader API - Individual and request access | Individual access is for trading your own Schwab brokerage account; it is not a reseller or multi-client licence |
| 3. Create an app | Name it, describe it, set a callback URL, choose the API products, set an order limit | Community guides add both Accounts and Trading Production and Market Data Production so one app covers orders and quotes |
| 4. Wait for review | The app shows Approved - Pending | Despite the word Approved, the app does not work yet; Schwab reviews each new app by hand |
| 5. Ready For Use | The status changes and the app key and secret start working | Published reports put the wait at a few days, with outliers in both directions (table below) |
| 6. Sign in | Your code opens Schwab's login page, you approve the app, Schwab redirects to your callback URL with a code | The code is exchanged for an access token that lasts 30 minutes and a refresh token that lasts 7 days |
Approved - Pending is not approved
Every new app, and every edited app, sits in a state called Approved - Pending while Schwab reviews it. The schwab-py maintainers put it plainly: do not be fooled by the word Approved, the app is not ready. Keys from a pending app fail, which is the single most common reason a first script against the Schwab API does not work. The app is usable only when the status reads Ready For Use. The same guide notes that approval appears to be a manual process and that most users report reaching Ready For Use within a few days (source, read November 8, 2026).
How long the wait is depends on who you ask. These are the published reports we could verify, with their dates, so you can set expectations rather than refresh the page:
| Source | Reported wait | When |
|---|---|---|
| schwab-py getting-started guide | Approval can take up to a few days; most users within a few days | Current page, read November 8, 2026 |
| schwab-py authentication guide | Edits put the app back to Approved - Pending; re-approval typically takes a few days | Current page, read November 8, 2026 |
| Community wrapper guides (schwabdev and others) | One to two business days in the fastest reports | 2024 to 2026 guides, read November 8, 2026 |
| Developer forum threads | Several hours to several days, with a few reports near a month | Threads from 2024 to mid-2026 |
| JorgAI, commercial path | A review that asked for a screen recording of the entire member workflow before full sign-off | Ongoing in November 2026 |
Two practical consequences follow. First, create the app before you write the code, so the review runs while you build. Second, treat every edit to the app record as a resubmission: change the callback URL or the products and you may be back in the queue for days.
The app rules that catch first-time registrations
Callback URL: exact, HTTPS, and probably local
The callback URL you type into the app must match the one your code sends, character for character. The schwab-py guide recommends https://127.0.0.1:8182 with no trailing slash and warns that any deviation, including adding or removing a trailing slash, causes hard-to-debug failures. Its authentication flow only allows 127.0.0.1 as the host, because the library starts a tiny local web server on that port to catch Schwab's redirect (source). The same guide carries a notice dated July 21, 2024 that some users were refused when creating apps with callback URLs containing 127.0.0.1, or saw errors claiming a non-HTTPS URL when the URL was HTTPS; the maintainers direct affected users to Schwab's traderapi mailbox. A hosted service uses a public HTTPS callback on its own domain instead, which is how a member of a platform signs in from any device without running anything locally.
Order limit: 0 to 120 a minute, chosen at registration
When you create the app you set how many order-related requests it may send per minute, from zero to 120. Exceeding it gets the app throttled and the extra orders rejected. The community guides recommend setting 120. For a rules-based system that places a handful of orders a day the limit is never close, but a system that re-sends protective exits during a fast market should budget for it; how the exits behave when a connection drops covers that case.
Tokens: 30 minutes and 7 days
An access token lives for 30 minutes and a refresh token for seven days. After seven days the account holder has to sign in to Schwab again in a browser; no software can renew it unattended. JorgAI's Schwab connection refreshes access tokens on a 20-minute schedule and sends a reconnect reminder before the seventh day. The Trader API post has the detail on why Schwab chose the 7-day rule and what it means for a bot that runs while you are away.
No paper environment
Schwab does not offer a sandbox or paper account through the Trader API. The same base URL serves live accounts, and the account hash in each call decides which account is touched. Anyone testing an individual app is testing on real money from the first order, which argues for the smallest possible order sizes on day one, or for practising on software that has a simulator of its own.
Market data is a separate product
Quotes and price history come from the Market Data Production product, added to the same app. An app registered only for Accounts and Trading can place orders but cannot ask Schwab what the price is. JorgAI's connection takes a different route: orders go to Schwab, while decisions, exits and position values use a single market-data feed for every member, so a Schwab account and an Alpaca account are watched the same way.
Individual app, commercial app, or no app
There are three ways to end up with software trading a Schwab account, and the portal is only the front door to two of them.
- Register your own individual app. You own the keys, you write or run the code, you handle the 30-minute refresh and the 7-day sign-in, and you sit in the approval queue after every edit. Libraries such as schwab-py do the OAuth dance for you on your own machine.
- Sign in through a commercial app. A platform registers once with Schwab as a commercial developer, passes a fuller review, and then each member signs in to Schwab through the platform's hosted callback. The member never visits the developer portal. The 7-day re-authorization still applies to each member, because it is a property of the token, not of the app.
- Use thinkorswim's own conditional orders. No API, no portal. Brackets, trailing stops and one-cancels-other orders live on Schwab's servers. There is no outside logic, but there is also nothing to approve. What thinkorswim can automate without an API covers the limits.
Where JorgAI fits
JorgAI is the second route. It is a registered Schwab Trader API application, so a member connects a Schwab brokerage account by signing in on Schwab's own page and approving the app; JorgAI never sees the password, holds no withdrawal permissions, and the member can revoke access from Schwab's side at any time. The member sets the rules (daily spend, size per trade, stop loss and profit target, whether every buy needs approval) and the software carries them out inside the account. The 7-day re-authorization applies and the portal shows a reconnect banner before it lapses. How fast Schwab API orders fill measures the round trip on 294 live orders, and the broker capability matrix lists what the Schwab connection supports next to the other brokers. If you want to see a rule run before you connect a live account, the free plan includes a simulator, and the Schwab page has the connection steps with screenshots.
Quick answers
Is the Schwab Developer Portal free for individuals?
The individual registration and the Trader API - Individual product carry no listed fee in the portal flow; the account you trade is a normal Schwab brokerage account with Schwab's usual commissions. Confirm on the portal when you register, because terms can change.
How long does Schwab take to approve an API app?
Published reports cluster at a few days, with fast cases of one to two business days and slow cases near a month. Schwab publishes no commitment. The status to wait for is Ready For Use, not Approved - Pending.
Why does my app say Approved - Pending?
That is the review state. Every new or edited app enters it, and keys do not work until the status changes to Ready For Use.
Does editing my app restart the review?
Yes. The schwab-py authentication guide notes that changes put the app back into Approved - Pending and that re-approval typically takes a few days. Get the callback URL and products right before you create the app.
Can I use my thinkorswim account through the API?
The Trader API works on Schwab brokerage accounts, which includes the accounts that thinkorswim displays; thinkorswim itself has no public API. The Trader API post has the history of what replaced the TD Ameritrade and thinkorswim developer programs.
Does the Schwab API have a sandbox?
No. There is no paper or test environment; the first order from a new app is a live order.
Do I need the developer portal to use JorgAI with Schwab?
No. JorgAI is the registered app; you sign in to Schwab from JorgAI and approve it. You never create an app or handle keys.
How we put this together. The step table and the approval reports come from the Schwab Developer Portal product pages (portal, Trader API - Individual) and the schwab-py getting started and authentication guides, all read on November 8, 2026; the portal itself blocks automated readers, so quoted phrasing is from the schwab-py pages. The token lifetimes, refresh schedule, missing paper environment and market-data routing are first-hand from JorgAI's Schwab adapter and refresh worker, read the same day. The commercial-review note is JorgAI's own experience in November 2026. Search volume for the title query is from Google Ads data through DataForSEO, November 8, 2026 (about 1,900 US searches a month).
To see a Schwab rule run in a simulator before you connect a live account, start on the free plan.
JorgAI is software that carries out the rules you set in your own brokerage account. It is not investment advice and does not predict or promise results. Trading involves risk of loss. Schwab, thinkorswim and TD Ameritrade are trademarks of The Charles Schwab Corporation; JorgAI is an independent application and is not affiliated with or endorsed by Schwab.
More in Getting Started
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
210 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 210. Keep scrolling.




















