Guide
Charles Schwab automated trading from alerts, no API keys
Automating a Charles Schwab account used to mean a developer account, an API key and a script to keep it alive. On Nyria the connection is Schwab's own sign-in: you log in at schwab.com, select Allow, and come back. From then on, an alert from TradingView, Discord, Telegram or a webhook places an order in the Schwab account you chose. Here is how the connection works, what trades there, a worked example, and the paper run to do first.
Connect through Schwab's sign-in
- 1
Find Schwab on Integrations
Sign in to Nyria, select Integrations in the left sidebar, and select the Charles Schwab card in the Brokers grid. Connecting is free; a bot on the account needs a Nyria Pro plan, or access to a Premium strategy you have bought.
- 2
Sign in at Schwab
Select Connect live account. Nyria sends you to Schwab's login page; check the address bar shows schwab.com before you type. Sign in with your Schwab username and password, complete 2FA if it is on, and on the Authorize App screen select Allow. Nyria asks to read your account data and positions and to place and cancel orders.
- 3
Choose the account a bot trades
Nyria imports every account on your Schwab login. When you deploy a bot, pick one on the Account step. To run the same strategy on a second account, deploy a second bot. A retirement account cannot hold short stock or short naked options, so keep a bot there long-only or on defined-risk spreads.
You need an active Schwab brokerage account in good standing, options approval at the level your trades need, and margin enabled for short stock or short option spreads: a cash account cannot hold a short position. New accounts can take 1 to 3 business days to become eligible after funding clears.
What trades at Schwab
Stocks and options, including spreads up to 4 legs. Nyria sends Schwab market and limit orders for entries and exits; it does not place stop or stop-limit orders, and exits come from exit alerts. A spread goes as one order for all its legs, priced as a net debit or credit at a limit. The strategy's Duration goes to Schwab as set: Day, Good till canceled or Fill or kill. Stocks trade in whole shares only, so Stock Slices are not used for entries; options in whole contracts only. Nyria does not trade futures or crypto on Schwab.
Schwab sets the margin and buying power rules. Leave room for exits as well as entries: closing a credit spread costs money, and Schwab reserves a credit spread's max loss as buying power. In a cash account Schwab can reject the sale of a position bought with unsettled funds; for that, or another reason that clears by itself, Nyria re-sends that close once after re-checking the position at Schwab.
A worked example, from a channel to Schwab
An options strategy with the contract provided in the alert, long only, Close on exit alerts on. Entries are limit orders at Ask, Day; exits are limit orders at Bid, Day.
Entry, posted in a channel you run
BTO SPY 780c 11/20 @ 2.10
Exit
STC SPY 780c 11/20
A bot on the strategy runs on the Schwab account with a $500 budget per entry. The entry names the SPY 780 call expiring Nov 20, 2026. One contract at the $2.10 ask costs $210, so the bot sends Schwab a Day limit order to buy 2 contracts at the ask and spends $420. When the exit posts, the bot sends a Day limit order at the bid to sell the 2 it holds. While an exit order sits unfilled, the position stays open. If Schwab answers "Invalid option symbol", the contract is not on its chain: check the strike exists for that expiration. If it answers "Account not approved for options", the account's options level is below what the order needs.
Paper first, on Nyria Paper
Schwab has no paper account to connect, so the test runs on Nyria Paper, the simulated broker built in and free on every plan. Deploy the same strategy there, let the real alerts fire for a week or two, and read the Logs tab: every alert and every order is stamped, so you can see that each message traded what you meant and that each exit closed its entry. Paper fills pay the quoted spread and never slip, and a Schwab rejection such as an options level or unsettled funds only shows up at Schwab. When the paper run reads right, deploy a bot on the Schwab account, or edit the paper bot to use it. The first live deploy asks you to accept the risk disclosure.
When Schwab shows Disconnected
Schwab ends Nyria's access every 7 days, and any other time it wants you to sign in again. Bots on the connection place no orders until you reconnect. Open Integrations, select the Charles Schwab card, select Reconnect live account, and sign in at Schwab again. Your bots trade again from the next alert. Keep Brokers notifications on in Nyria so you hear about a disconnect when it happens rather than at the next alert.
The full reference, with every Schwab error and its fix, is in the Connect Charles Schwab page of the docs. What Schwab trades and its limits are on the Schwab integration page.
Questions
- Do I need a Schwab developer account or an API key?
- No. You sign in to Schwab as usual and grant Nyria access on Schwab's own authorization screen. There is no key to generate or paste.
- Can I test on a Schwab paper account?
- Schwab is live only. Test the strategy on Nyria Paper, the free simulated broker, then deploy the same strategy on the Schwab account.
- What does it cost?
- Paper is free. Live trading from $15 a month.
Schwab orders, by alert source
Guides
Automate TradingView alerts
The alert, the webhook URL, the message, a paper test, then live.
Broker sandbox vs paper trading: which to test on
Nyria Paper, Tradier's sandbox and Alpaca's paper account: what each test proves and what none of them can.
Automate options alerts
Single legs and spreads up to 4 legs, from any alert source to your broker.
Test the strategy on a paper bot first
Paper is free. Live trading from $15 a month.