端到端实时语音对话(WebSocket)
WebSocket 端点,非普通 HTTP:wss://api.xrtoken.net/v1/realtime?model=doubao-realtime。
一个长连接完成「录音 → 识别 → 大模型 → 语音回答」全链路,自带 VAD 断句、打断、上下文。
鉴权:服务端用 Authorization: Bearer <key> header;浏览器无法带 header,用 Sec-WebSocket-Protocol: ["xrtoken.bearer", "<key>"] 携带。
豆包:model=doubao-realtime 使用火山二进制协议(StartConnection → StartSession → TaskRequest → ASRResponse/ChatResponse/TTSResponse)。按 token 结算,3 分钟无交互自动断开。
Grok Voice 3.0(需渠道启用):model=xai/grok-voice-3.0 使用 xAI JSON 事件。先发 session.update 设置 voice、instructions、turn_detection: {"type":"server_vad"},再发 input_audio_buffer.append(base64 PCM16,默认 24kHz),接收 response.output_audio.delta 和 response.output_audio_transcript.delta。支持语音打断与客户端 function 工具;当前不支持手动断句、会话恢复及另行收费的服务端工具。
Grok 按会话时长加文字消息计费,停顿也计时;文字 conversation.item.create 另计,工具结果与音频项除外。开始预冻结额度,结束结算。max_duration_seconds 为 1–600(默认 600),max_text_messages 为 0–100(默认 20),网页使用 0。网关限制参数不会发送给 xAI。达到时长上限自动关闭;配置或价格未准备好时返回 503。
Authorization
BearerAuth API 密钥认证(OpenAI 格式)。在 Authorization 请求头中传入:
Authorization: Bearer tr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
In: header
Query Parameters
Grok 会话上限,影响预冻结金额
6001 <= value <= 600Grok 文字消息上限;纯语音可设为 0
200 <= value <= 100Response Body
application/json
application/json
curl -X get "https://api.xrtoken.net/v1/realtime?model=string"{
"error": "invalid or missing API key",
"type": "auth_error"
}{
"error": "insufficient balance -- please top up or upgrade your plan",
"type": "billing_error"
}