You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey, and welcome to schwab-data-proxy 🤝. If you're here, you've probably already met the fun constraint that Schwab only lets you create one OAuth app per account — which sounds great until you realize it means your swing-trading bot and your market-scanner both need the same credential, and you're either passing tokens around like a game of hot potato 🥔 or you're managing multiple accounts just to avoid it.
This proxy exists to solve exactly that problem. It sits between your Schwab account's single OAuth credential and as many downstream apps as you want to run. The proxy handles the OAuth flow once, manages token refresh so you don't wake up at 3 AM to a 401 response 😅, and exposes a dead-simple REST API plus WebSocket streaming that your bots, dashboards, and analysis tools can hook into without ever touching Schwab's OAuth directly. Each consumer app gets an API key; the proxy validates it, multiplexes the request to Schwab, and streams the response back. One credential, N apps, zero credential-passing drama.
Under the hood, it's built on FastAPI and asyncio, so it's designed to handle the kind of concurrent requests your trading infrastructure will throw at it — market data updates, order submissions, account queries, all streaming and batching efficiently. WebSocket support means you can subscribe to real-time quotes and chain updates without hammering REST endpoints.
💬 What Discussions is for
This is the place to ask questions, share configs that worked for you, talk through API use cases, swap stories about weird Schwab edge cases, and brainstorm ideas for new features or integrations. If you've wired this up to work with a specific trading framework or market condition, or if you've found a clever way to handle streaming during market hours, we'd love to hear about it.
If you find a bug, file an issue in the Issues tab with details and reproduction steps. But if you want to bounce ideas around, ask how to tackle a specific problem, or talk through your trading infrastructure setup, this is the place.
Happy proxying — may your tokens refresh automatically ✅ and your WebSocket connections never drop mid-order 🎯.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hey, and welcome to schwab-data-proxy 🤝. If you're here, you've probably already met the fun constraint that Schwab only lets you create one OAuth app per account — which sounds great until you realize it means your swing-trading bot and your market-scanner both need the same credential, and you're either passing tokens around like a game of hot potato 🥔 or you're managing multiple accounts just to avoid it.
This proxy exists to solve exactly that problem. It sits between your Schwab account's single OAuth credential and as many downstream apps as you want to run. The proxy handles the OAuth flow once, manages token refresh so you don't wake up at 3 AM to a 401 response 😅, and exposes a dead-simple REST API plus WebSocket streaming that your bots, dashboards, and analysis tools can hook into without ever touching Schwab's OAuth directly. Each consumer app gets an API key; the proxy validates it, multiplexes the request to Schwab, and streams the response back. One credential, N apps, zero credential-passing drama.
Under the hood, it's built on FastAPI and asyncio, so it's designed to handle the kind of concurrent requests your trading infrastructure will throw at it — market data updates, order submissions, account queries, all streaming and batching efficiently. WebSocket support means you can subscribe to real-time quotes and chain updates without hammering REST endpoints.
💬 What Discussions is for
This is the place to ask questions, share configs that worked for you, talk through API use cases, swap stories about weird Schwab edge cases, and brainstorm ideas for new features or integrations. If you've wired this up to work with a specific trading framework or market condition, or if you've found a clever way to handle streaming during market hours, we'd love to hear about it.
If you find a bug, file an issue in the Issues tab with details and reproduction steps. But if you want to bounce ideas around, ask how to tackle a specific problem, or talk through your trading infrastructure setup, this is the place.
Happy proxying — may your tokens refresh automatically ✅ and your WebSocket connections never drop mid-order 🎯.
All reactions