端点
GET,并带有 Connection: Upgrade 和 Upgrade: websocket)。其他任何请求都会以 426 拒绝。
认证
在升级请求的请求头中发送你的 Comfy API 密钥,可以使用X-API-Key: comfyui-... 或 Authorization: Bearer comfyui-...。Router 不会从查询字符串或 WebSocket 子协议中读取密钥。
连接
升级成功后,即可发送和接收 xAI 为 Grok Voice 所记录的实时事件。下面这个示例会配置会话、发送一轮文本对话,并打印接收到的每个事件类型。事件
Router 不定义自己的事件协议。服务器事件会完全按照 fal 发送它们的方式送达你手上,而 Router 接受的客户端事件也会原样转发。有关事件列表、会话字段、音色和音频格式,请参阅:- xAI 语音到语音以及 xAI 的 realtime 事件 schema
- fal 的 Grok Voice realtime 模型页面及其 API 页面
session.created 开始的 msgpack 二进制消息。fal 还会发送自己的、类型为 x-fal-message 的 JSON 文本消息(计时信息),你可以跳过它们。Router 的检查也接受把客户端事件作为一条 JSON 文本消息发送,但除非你已经用你的客户端测试过 JSON,否则请使用 msgpack。
Router 在转发每个客户端事件之前都会对其进行检查:
- 事件类型:
session.update、input_audio_buffer.append、input_audio_buffer.commit、input_audio_buffer.clear、conversation.item.create、conversation.item.delete、conversation.item.truncate、response.create、response.cancel,以及 fal 的x-fal-session.configure。 - 模型:
session.update中的model必须是grok-voice-latest、grok-voice-3.0或grok-voice-2.0。 - 工具: 允许使用由你的客户端执行的函数工具。服务器端工具(网络搜索、X 搜索、文件搜索和 MCP)会被拒绝。
- 媒体: 图像和视频输入会被拒绝。会话仅支持语音和文本。
- 大小: 单条客户端消息最大为 1 MiB。
1008 关闭会话。
定价
一次会话的费用为**每秒 $0.0011869**(约每分钟 $0.0712,或每秒 0.2504 积分、约每分钟 15.0 积分,按 211 积分 = 1 美元计算)。会话开启期间以 15 秒为一个增量计费,最后不足一个增量的部分按秒计费并向上取整。计费从升级开始,一直到 socket 关闭为止,无论期间是否有音频传输。限制
当会话达到时间限制或积分已用完时,连接可能会在没有关闭帧的情况下关闭(通常表现为关闭代码
1006)。请仅在充值之后重新连接;如果需要更多时间,请启动新会话。
错误
升级之前
如果 Router 拒绝连接,它不会切换协议,而是返回 HTTP 状态码和 JSON 响应体:code 进行判断;detail 供人阅读。
升级之后
任何其他关闭代码都来自 fal 或 xAI。请参阅 事件 下链接的文档。