Standard WebSocket标准 WebSocket
该接口文档梳理官方原生 WebSocket 实时行情通道的握手流程与登录认证帧格式规范。鉴于本站网关当前对客主供高可用 HTTP REST 接口,实盘多标的并发刷新推荐使用批量报价 REST 接口实现低延迟轮询。
wss://socket.financialmodelingprep.com(官方协议参考 · 本站网关主供 REST /stable/*)数据更新周期
该接口暂无固定更新周期(多为按需更新的参考或静态数据)。
接口说明
- 长连接握手与登录鉴权帧:连接
wss://socket.financialmodelingprep.com后,首帧须发送{"event":"login","data":{"apiKey":"YOUR_KEY"}}完成身份鉴权;收到服务端确认帧后方可下发标的订阅指令。 - 服务端推送事件结构:下行报文以 JSON 帧格式持续推送,包含
event(事件类型,如login、heartbeat、quote)与data(行情载荷)两层核心结构,客户端应按event字段分发至对应解析器。 - 无状态 REST 批量轮询替代方案:在本站网关(
quote-fmp.com)生产环境中,无需维护长连接状态机与断线重连逻辑,可直接调用/stable/batch-quote等 HTTP REST 批量接口实现秒级多标的并发轮询。 - 协议边界与 REST 替代:本站网关(
quote-fmp.com)当前主供/stable/*HTTP REST 接口,WebSocket 流暂未开放;实盘多股高频刷屏请直接调用 Stock Batch Quote(股票批量报价)或 Exchange Stock Quotes(交易所股票批量报价)。 - 上下游关联接口:Socket.io WebSocket(Socket.IO 实时连接) · Global Exchange Market Hours(全球交易所交易时段) · Stock Batch Quote(股票批量报价) · Stock Batch Quote Short(股票批量精简报价)
调用代码示例
Python 关键代码本站网关(quote-fmp.com)仅提供 /stable/* HTTP REST 接口,未开放原生 wss:// 握手;上方展示使用 /stable/batch-quote 并发拉取多只美股实时盘口的可运行代码与官方 login 帧结构。
session = requests.Session()
# 本站网关(quote-fmp.com)当前对客主供全量 REST 接口(/stable/*),WebSocket 流暂未开放
resp = session.get(
"https://quote-fmp.com/stable/batch-quote",
params={"symbols": "AAPL,MSFT,NVDA", "apikey": FMP_KEY},
timeout=15,
)
resp.raise_for_status()
df = pd.DataFrame(resp.json())
# 官方 RFC 6455 原生 WebSocket 握手后首帧 login 报文参考:
# login_payload = {"event": "login", "data": {"apiKey": FMP_KEY}}参数使用和避坑
2 组参数组合 · 2 条避坑以下列出本接口在高频投研与回测场景下的常用 Query 参数组合写法:
| 投研场景 | Query 参数组合示例 | 返回数据特征与用途 |
|---|---|---|
| 网关 REST 替代方案:单次请求并发获取多股实时报价 | GET /stable/batch-quote?symbols=AAPL,MSFT,NVDA | 无需维护长连接状态机,单次 HTTPS GET 即可取回 AAPL、MSFT、NVDA 的最新价(price)、涨跌幅与当日成交量。 |
| 官方原生 WebSocket 协议参考:连接建立后发送 login 认证帧 | {"event": "login", "data": {"apiKey": "YOUR_KEY"}} | 对接官方 wss://socket.financialmodelingprep.com 时,必须在 on_open 阶段先发 login 帧并通过鉴权后再发 subscribe 指令。 |
向 quote-fmp.com 发起 wss:// 连接不会建立流式通道。生产环境构建实时看盘或策略监控时,请直接调用 /stable/batch-quote(多股完整报价)或 /stable/batch-quote-short(多股极简快照)按秒级间隔轮询。
在官方原生 WebSocket 协议中,TCP/TLS 握手完成并不代表会话已授权。客户端必须等待服务端返回 event=login 的成功状态码后,再下发标的订阅列表。
返回数据
4 个字段本接口示例响应共包含 4 个字段(数值型 1 个,文本/日期/布尔型 3 个)。下表列出全部字段名、类型、首条记录真实样本值与中文释义,实际返回会因接口与数据状态有所不同。
| 字段 | 类型 | 示例值 | 说明 |
|---|---|---|---|
event | string | "login" | 事件名称 |
data | object | {…} | 实时流事件载荷对象(随 event 类型携带鉴权状态或实时报价字段,下方已展开本示例内全部 2 个子字段) |
data.status | number | 200 | 连接或鉴权响应状态码(如 200 代表鉴权成功) |
data.message | string | "Authenticated" | 服务端返回的状态说明或提示信息 |
查看响应数据示例(原始 JSON)
{
"event": "login",
"data": {
"status": 200,
"message": "Authenticated"
}
}常见问题解答(FAQ)
2 个问题为什么用 websocket-client 连接 quote-fmp.com 会报协议或状态码错误?
因为本站网关(quote-fmp.com)专注提供高吞吐 /stable/* REST 接口服务,未开放 WebSocket 流转发。用 /stable/batch-quote?symbols=AAPL,MSFT,NVDA 即可在单次 HTTP 请求内拿到多只标的的实时价格快照。
Standard WebSocket(原生协议)与 Socket.IO WebSocket 在客户端选型上有何差异?
standard-websocket 采用标准 RFC 6455 JSON 文本帧,适合 Python websockets、Go gorilla/websocket 等原生库;socket-io-websocket 则基于 Engine.IO 封装了命名空间与重连帧,必须搭配对应版本的 Socket.IO 客户端。
同模块相关接口对比
Websocket本接口路径 standard-websocket,无必填参数。 同一模块「Websocket」下共 6 个接口,下表列出其余 5 个, 按粒度与查询维度对比,避免选错接口。
| 接口 | 路径 | 核心差异与适用场景 |
|---|---|---|
| 报价订阅Quote Subscription | quote-subscription | 官方实时流协议中发起单票或多票实时报价订阅的指令载荷与逐笔成交、盘口帧结构 |
| 市场行情流订阅Market Stream Subscription | market-stream-subscription | FMP 官方实时流协议中全市场聚合流订阅指令的帧格式与高吞吐消费注意事项 |
| 取消单只标的订阅Unsubscribe Ticker | unsubscribe-ticker | 官方实时流协议中取消指定标的报价订阅的退订指令结构与客户端订阅列表维护方式 |
| 取消市场行情流订阅Unsubscribe Market Stream | unsubscribe-market-stream | 官方实时流协议中关闭全市场行情聚合推送通道的退订指令格式与连接释放规范 |
| 心跳事件Heartbeat Event | heartbeat-event | 官方实时流协议中服务端周期性下发的 heartbeat 保活事件帧格式与半开死连接超时重连机制 |