连接 Realtime 会话
WS
/v1/realtime?model={model}Token360 提供兼容 OpenAI Realtime 协议的 WebSocket 接口,可用于低延迟文本及音频会话。
请仅从可信的服务端环境连接该接口,不要在浏览器或移动端代码中暴露 API Key。
建立连接
| URL | wss://api.token360.ai/v1/realtime?model=gpt-realtime-2.1 |
| 鉴权 | 在 WebSocket 握手中发送 Authorization: Bearer <TOKEN360_API_KEY> |
| 模型 | gpt-realtime-2.1 |
| 协议 | 基于 WebSocket 的 OpenAI 兼容 GA Realtime 事件协议 |
不要发送旧版 OpenAI-Beta: realtime=v1 请求头。
文本会话流程
- 建立 WebSocket 连接并等待
session.created。 - 发送
session.update,将output_modalities设置为["text"]。 - 等待
session.updated后再发送第一条内容。 - 发送包含
input_text的conversation.item.create。 - 发送
response.create。 - 持续读取
response.output_text.delta,直到收到response.done。
必须等待 session.updated。默认会话配置可能使用音频输出,因此纯文本客户端应在创建第一个响应前明确切换为文本输出。
音频会话
语音到语音场景应通过 session.update 配置音频输入与输出,使用 input_audio_buffer.append 连续发送 Base64 音频分片,然后提交音频输入并创建响应。同一会话内应保持音频格式一致。
音频会话不要使用纯文本的 output_modalities: ["text"] 配置。
常用客户端事件
session.update | 配置输出模态、指令、工具、音频等会话选项 |
conversation.item.create | 添加文本或其他会话内容 |
input_audio_buffer.append | 追加 Base64 编码的音频分片 |
input_audio_buffer.commit | 将已缓存音频提交为用户输入 |
response.create | 请求模型生成响应 |
常用服务端事件
session.created | 连接已就绪,可以配置会话 |
session.updated | 会话配置已被接受 |
response.output_text.delta | 增量文本输出 |
response.output_audio.delta | 增量 Base64 音频输出 |
response.done | 包含最终状态和 usage 的终止事件 |
error | 请求或会话错误 |
错误处理与重连
- WebSocket 握手未升级成功时,检查返回的状态和消息,以判断鉴权、权限、模型可用性或请求校验问题。
- 收到
error事件时,检查其中的error.code、error.type、error.param和error.message。 - 对临时断线使用带抖动且有上限的指数退避重连。
- 新建 WebSocket 会生成新会话,需要重新发送必要的会话配置,并由应用恢复需要保留的状态。
- Realtime 会话不是永久连接。请在 60 分钟前主动重连,不要依赖无限期保持连接。
查询用量
终止事件 response.done 会返回本次响应的 usage。也可以使用响应 ID 查询已完成请求的用量:
Shell
1curl "https://api.token360.ai/v1/billing/requests/RESPONSE_ID" \
2 -H "Authorization: Bearer $TOKEN360_API_KEY"此页面对您有帮助吗?