Charles Schwab Developer 开发者API 全流程说明

invmy invmy #Schwab#API

如果你想申请API使用,那看对了。最新2026年9月截止,最新的疑难杂症解惑

条件

  • +1 美国手机号码 需接收短信,而且是强关联。很大概率每次登录都需要输入验证码(可以虚拟号码包括Google voice也就是GV)
  • 需证券账户,注册邮箱需与证券账户关联的邮箱一致。否则后续申请的审核大概率不通过(如果填了+1号码。但是接收验证码还是证券账户绑定的非+1号码。可以把证券账户的邮箱修改一下。并改日重试)

流程

开发者门户 中填入信息并接收过验证码后进入注册流程。按照说明填入对应的信息即可(短信验证码通过后,需重新输入邮箱和密码)

申请 API Products

个人非公司只能创建 Trader API - Individual,提交申请后。大概两天会通过,如果未通过请再次提交。同时在美东早上9点后在thinkorswim中联系在线客服,并说明原因。防止再次申请被拒绝。

API 使用

Trader API - Individual 提供的都是REST API并且没有CORS限制,也就是你可以在任何地方调用。除了浏览器会自己添加CORS限制,可以使用扩展插件来绕过。

端点分为两种和WS实时推送,创建app时需要填写回调,并且必须使用https。也可以填入相关的域名。

CF_schwab-API 我创建了一个项目,使用cloudflare serverless云函数。代码很容易理解。可以自己拆解逻辑到自己的项目实现。

Oauth 登录与授权

使用 /oauth/login 登录后回调到/oauth后端会自动处理并保存到KV。 使用/oauth/refresh 进行刷新,这并不能刷新和解除7天后需要重新登录的魔咒。只能刷新30分钟过期一次的access token,如果你使用CF_schwab-API就不用担心,DO实例会自动处理

端点 /trader/ 和 /marketdata/

API有限制和阉割,不支持overnight只支持盘前盘后并且时段也是阉割掉的(0700-0930)-(1600-2000)

ws stream实时流信息需要使用/trader/v1/userPreference获取链接地址和频道才能进行链接,如果你使用项目支持使用ws链接到/trader/ws即可,会自动维护并进行登录。

stream docs和看这里 https://tylerebowers.github.io/Schwabdev/?source=pages%2Fstream.html

还有这个 https://tylerebowers.github.io/Schwabdev/?source=pages%2Fpdfs%2FSchwab_Trader_API_Streamer_Guide.pdf

使用感受

不愧是财大气粗的Schwab没有复杂和强制的每分钟都需要保活的变态要求,后端应该是一个巨大的集群管理分发和验证。难度不在用户边上。全在后端和压力上。oauth很快就搞定了,并且没有CORS对开发友好。