跳转到内容

新版统一 Web API

新版统一 Web API 是 IBKR 正在整理的新一代 Web API 文档体系。它不是 TWS API 的替代品,也不是单纯把旧文档换个名字,而是把多个 Web 方向的能力放到同一个入口下说明。

官方在 Web API 文档中说明,这个体系会把 Client Portal Web APIDigital Account ManagementFlex Web Service 放在一个更统一的接口与认证框架下,并逐步使用 OAuth 2.0 作为统一授权认证方向。

官方入口:Web API Documentation

TWS API 更像“连接一台已经登录的交易终端”,而 Web API 更像“通过标准 Web 接口访问 IBKR 后端能力”。

新版 Web API 主要解决这些问题:

问题Web API 的方向
文档分散把交易、账户管理、报表相关能力放进同一套 Web API 文档体系。
认证方式分散逐步向统一的 OAuth 2.0 方向整理。
Web 开发接入复杂用 HTTP endpoint、JSON body、WebSocket 等 Web 开发者熟悉的方式组织接口。
团队协作困难通过 Documentation 和 Reference 两类资料,把流程说明和 endpoint 定义分开。

这里的重点是“Web 集成”。如果你的第一步是用 Python 连接本机 TWS 模拟账户,仍然应该先看 TWS API。

新版 Web API 不是说旧入口马上不能用了。官方说明中也提到,既有 endpoint 和认证方案没有废弃,仍会继续获得功能和更新。

可以这样理解:

名称中文理解当前作用
Client Portal Web API旧版 Web API v1.0 入口仍然有大量可参考的 endpoint、Gateway、会话和 WebSocket 资料。
Web API新版统一 Web API 文档体系把交易、账户管理、报表等 Web 能力放到统一结构下。
Web API Referenceendpoint 参考以 Swagger 风格展示接口定义,但官方也说明并非所有 endpoint 都已经完整收录。
Flex Web Service报表接口在新版 Web API 体系下也会被一起整理,但用途仍然是报表和对账。

所以阅读时不要只看名字。看到 HTTPJSONOAuthendpointWebSocket 这些关键词,基本都属于 Web API 方向;看到 EClientEWrapperSocket Port 7497,就是 TWS API 方向。

新版 Web API 更适合这些项目:

场景说明
Web 后台系统后端服务通过 HTTP 请求账户、组合、行情、订单等数据。
组织级或机构级接入企业、机构、顾问、介绍经纪商等需要更正式的认证和权限流程。
第三方应用接入需要用户授权访问其 IBKR 账户时,通常要走官方审批和 OAuth 流程。
报表与交易能力统一管理同一个系统既要报表,又要部分交易、账户或行情能力。
团队熟悉 REST / WebSocket开发体验更接近常见 Web API,而不是 TWS Socket 回调模型。

不适合这些情况:

场景更适合
本机已经打开 TWS,只想马上跑 Python 示例TWS API
想先学合约对象、订单对象、历史 K 线和错误码TWS API
只要下载日终报表、流水和成交确认Flex Web Service
不想处理认证、会话、OAuth 或 GatewayTWS API 也需要登录,但入门路径通常更直接。

Web API 的认证方式会因为使用者身份不同而不同。

使用者常见方向
个人用户通常涉及 IBKR 用户名、密码和可用账户状态。
组织或机构可能使用 OAuth 2.0、OAuth 1.0a、SSO 等方式,具体取决于账户结构和接入类型。
第三方开发者通常需要官方审批、合规审核、协议和回调地址等配置。

对于普通个人开发者,最容易踩坑的是:Web API 不是一个“拿到公开 key 就随便调用”的普通行情接口。交易、账户、行情、订单这些能力都和 IBKR 用户、权限、订阅、会话状态有关。

新版 Web API 文档会围绕工作流组织内容,Reference 则会展示具体 endpoint。入门阶段先理解这些分类即可:

分类典型含义
/iserver/...和交易会话、行情、订单、执行记录等经纪业务功能相关。
/portfolio/...账户、组合、持仓、权益、保证金等数据。
/pa/...PortfolioAnalyst 相关数据,例如绩效、摘要、交易记录等。
/fyi/...FYI、通知、提示、订阅设置等消息类功能。
/tickle常用于保持或检查会话,并获取会话相关 token。
/logout结束会话。

这些路径不是让你现在背下来,而是帮助你读官方 Reference 时先判断“这个 endpoint 大概属于哪类业务”。

Web API 也可以处理行情和订单,但它的表达方式和 TWS API 不一样。

行情常见概念:

概念中文理解
conidIBKR 内部合约 ID,用来唯一识别股票、期权、期货等工具。
fields需要返回的行情字段编号,例如价格、买卖价、成交量等。
snapshot快照行情,一次请求返回当前可用字段。
pre-flight某些行情快照前需要先发一次请求,让服务端开始准备该合约的数据流。

订单常见字段:

字段中文理解
accountId下单账户 ID。
conid要交易的合约 ID。
side买卖方向,例如 BUYSELL
orderType订单类型,例如 LMT 限价单。
price限价或相关价格字段。
quantity数量。
tif订单有效期,例如 DAY
order_idWeb API 返回的订单 ID,用于查询或撤单。

Web API 的订单提交一般是 HTTP POST 请求,请求体是 JSON。需要特别注意大小写、字段类型和订单风险提示。有些订单不会一次请求就直接生效,而是返回需要确认的 reply 消息。

Web API 的请求由四部分组成:

部分中文理解例子
MethodHTTP 方法GET 查询数据,POST 提交数据,DELETE 撤销或删除资源。
Endpoint接口路径/portfolio/accounts/iserver/account/{accountId}/orders
Authentication认证信息OAuth、会话、Cookie、Token 或签名,取决于接入方式。
Body请求体下单、改单等请求通常使用 JSON。

例如账户查询属于“无订单请求体”的查询类请求:

项目内容
MethodGET
Endpoint/portfolio/accounts
Body
返回重点账户列表、账户 ID、账户类型等信息。

订单提交属于“带 JSON 请求体”的交易类请求:

项目内容
MethodPOST
Endpoint/iserver/account/{accountId}/orders
Body订单数组,包含 conidsideorderTypequantitytif 等字段。
返回重点order_id、订单状态,或需要二次确认的 reply 消息。

这类请求和 TWS API 的 EClient.placeOrder() 不同:Web API 通过 HTTP endpoint 和 JSON 表达请求,TWS API 通过本机 Socket 客户端对象发送消息。

注意点说明
会话限制一个用户名在不同 IBKR 平台上的交易会话可能互相影响。
限频官方 Web API 对认证用户和部分 endpoint 有请求频率限制,超限可能返回 429 Too Many Requests
维护窗口Web API 和 /iserver 相关经纪业务功能会有维护和重置时间。
行情权限是否能拿到实时行情仍取决于用户名的市场数据订阅和交易权限。
Reference 不完整官方 Swagger Reference 仍在补齐,遇到缺失时要结合长文档和旧入口阅读。
订单确认下单可能返回需要二次确认的 reply 消息,不要只按 HTTP 状态码判断订单已经工作。

如果你正在做的是中文开发者最常见的入门项目:

  • Windows 本机已经登录 TWS
  • 想用 Python 读取历史 K 线
  • 想验证合约对象和订单对象
  • 想在模拟账户里跑 WhatIf 或小规模调试

优先继续走 TWS API。

如果你要做的是正式 Web 系统、组织级接入、OAuth 授权、第三方平台或统一账户管理,再深入研究新版 Web API。它更适合系统集成,不一定适合作为第一天跑通交易脚本的入口。