跳转到主要内容
🎉 限时免费 — MiniMax: MiniMax M3 Free 现在体验 🔥

Realtime API 参考

本接口是一个 WebSocket 长连接。网关把百炼 Qwen-Omni-Realtime 协议原样双向转发,不做协议转换;事件字段的完整定义与工具调用(Function Calling / MCP)事件以百炼官方客户端事件与服务端事件为准。本页覆盖接入所需的握手、鉴权、事件清单与音频约定。

请求

项值
方法GET(WebSocket 升级)
路径/api-ws/v1/realtime
完整地址{{ ws_endpoint }}/api-ws/v1/realtime?model=<逻辑模型名>
Querymodel(必填)——平台逻辑模型名,不是上游模型名
HeaderAuthorization: Bearer <mgk_ API Key>(必填)
HeaderX-Request-ID(可选)——透传到调用日志,request_id 以 gw_rt_ 开头

只有 public_protocols 声明了 dashscope_realtime 的逻辑模型才能走本入口。

握手错误码

握手(升级为 WebSocket 之前)失败时,以 HTTP 状态码返回,body 为:

json
{"error":{"type":"invalid_request_error","code":"unauthorized","message":"unauthorized: api_key_not_found"}}
HTTPcode触发条件实测 message(cn 生产,2026-10-08)
401unauthenticated未携带 API Keymissing api key
401unauthorizedKey 无效 / 已禁用unauthorized: api_key_not_found
404model_not_found模型不在目录unknown model: <model>
403model_protocol_not_offered模型未声明 dashscope_realtimemodel <model> is not offered on the realtime protocol
404no_route策略(含回落链)中没有该模型的路由no route for model <model>
503no_provider有路由但无可用上游实例no provider available for <model>
402insufficient_funds / budget_exceeded预授权失败(余额/预算不足)billing: insufficient funds

握手通过(HTTP 101)后再出现的问题,会以带内 error 事件下发,然后关闭连接:

json
{"type":"error","error":{"type":"upstream_error","code":"provider_unavailable","message":"upstream connection failed"}}

会话配置 session.update

建连后服务端先发 session.created,客户端用 session.update 覆盖配置,配置合法则回 session.updated。常用字段:

字段可选值默认
modalities["text","audio"] / ["text"]["text","audio"]
voice / audio.output.voice见百炼音色列表Tina
turn_detection{"type":"server_vad"} / {"type":"semantic_vad"} / null服务端 VAD
audio.input.format{"type":"pcm","sample_rate":16000}pcm / 16000
audio.output.format{"type":"pcm","sample_rate":24000}pcm / 24000
instructions任意文本空
input_audio_transcription{"model":"qwen3-asr-flash-realtime"} / null开启

turn_detection: null 表示关闭服务端 VAD,改由客户端手动提交与触发响应。

客户端事件

事件作用
session.update更新会话配置(模态、音色、音频格式、VAD、instructions 等)
input_audio_buffer.append追加 Base64 音频到输入缓冲区
input_image_buffer.append追加 Base64 图片(JPG/JPEG,需先发过音频)
input_audio_buffer.commit手动模式下提交音频缓冲区(提交不触发响应)
input_audio_buffer.clear清空音频缓冲区
conversation.item.create创建对话项:纯文本输入、function_call_output、mcp_approval_response
response.create触发一次模型响应
response.cancel取消正在进行的响应(打断)

服务端事件

事件说明
session.created / session.updated会话建立 / 配置生效
input_audio_buffer.speech_started / speech_stoppedVAD 检测到用户开始 / 停止说话(打断依据)
input_audio_buffer.committed / cleared音频缓冲区提交 / 清空
conversation.item.created对话项已创建
conversation.item.input_audio_transcription.delta / .completed输入语音转写(流式预览 / 最终结果)
response.created一轮响应开始
response.output_item.added / response.content_part.added输出项 / 内容片段开始
response.text.delta / response.text.done仅文本模式的流式 / 完整文本
response.audio_transcript.delta / .done含音频模式下,音频对应的文本
response.audio.delta / response.audio.doneBase64 输出音频(24 kHz PCM)/ 音频结束
response.output_item.done / response.content_part.done输出项 / 内容片段完成
response.done一轮响应结束,response.usage 携带分模态 token 用量

工具调用(response.function_call_arguments.delta / .done)与 MCP 相关事件(mcp_*)字段见百炼服务端事件文档。

一次完整语音问答的实测事件序(cn 生产,2026-10-08):

text
session.created
session.updated
input_audio_buffer.speech_started
input_audio_buffer.speech_stopped
input_audio_buffer.committed
conversation.item.input_audio_transcription.completed
response.created
response.output_item.added
response.audio_transcript.delta …
response.audio.delta …
response.done

音频格式

方向格式事件 / 字段
上行(输入)16000 Hz、16-bit 小端、单声道 PCM,Base64input_audio_buffer.append 的 audio
下行(输出)24000 Hz、16-bit 小端、单声道 PCM,Base64response.audio.delta 的 delta

实测满 100 ms 一包推送输入音频(3200 字节 / 帧)最稳。input_audio_buffer.append 只入缓冲,不触发响应;是否提交由 VAD 或客户端 input_audio_buffer.commit 决定。

VAD 与打断

  • turn_detection 非 null 时,服务端自动检测语音起止并在静音 silence_duration_ms(默认 800ms)后自动提交、触发响应。
  • 用户再次说话:服务端下发 input_audio_buffer.speech_started → 客户端停止播放并发 response.cancel → 收到 response.done(cancelled)→ 新一轮。
  • turn_detection: null 为手动模式:客户端在录音结束后依次发送 input_audio_buffer.commit(等 input_audio_buffer.committed)与 response.create。

用量与计费

每轮响应的 response.done.response.usage 携带分模态 token:

json
{
  "type": "response.done",
  "response": {
    "status": "completed",
    "usage": {
      "total_tokens": 843,
      "input_tokens": 693,
      "output_tokens": 150,
      "input_tokens_details": { "text_tokens": 693 },
      "output_tokens_details": { "text_tokens": 28, "audio_tokens": 122 }
    }
  }
}

网关按整段连接的累计用量在关闭时结算:连接时按会话级预估预授权(当前约 ¥1.2,余额不足则握手 402),关闭连接后按实际用量多退少补,无用量则释放预授权。详见使用指南。

限制

项值
单连接最长时长30 分钟(网关强制)
全部输入 Token 上限196,608
最大输出 Token65,536
上游限流60 RPM

相关