兼容 OpenAI 的 API
实时翻译会话
语音翻译模型(OpenAIgpt-realtime-translate)运行在独立的会话接口上,因此网关也对其进行了镜像。
连接到 /v1/realtime/translations(或 /v1/realtime?intent=translation,二者为同一会话),并在 socket 打开后设置目标语言:
session.input_audio_buffer.append,
输出为 session.output_audio.delta 和 session.output_transcript.delta),
并接受 24 kHz PCM16 音频。帧会被原样转发,因此任何基于提供商翻译 API 编写的客户端都无需修改即可使用。
目前翻译仅支持 OpenAI 接口。如果将翻译会话路由到不支持翻译的提供商,请求会返回 400 错误,而不会悄悄地改为打开一个普通的对话会话。
这类会话不会上报用量事件,因此网关会根据其转发的输入音频,按模型每秒的输入单价计费。
WebRTC 翻译通话除外:其媒体流不经过网关,因此不会被计量。
实时转录会话
转录会话(/v1/realtime?intent=transcription)在 session.update 中选择模型,而不是在 URL 中指定;
model 查询参数用于路由请求,网关会将会话内的模型选择固定为该模型。
大多数转录模型会在其
conversation.item.input_audio_transcription.completed 事件中上报用量(Token 数,或对于 whisper 类模型为秒数),
并以此为会话计费。如果模型在该事件中未上报用量,网关会回退为根据其转发的输入音频,按每秒输入单价计费。
仅当会话自身未上报任何用量时才会使用这种回退方式,因此同一会话绝不会被重复计费。
与翻译相同,WebRTC 通话的媒体流不经过网关,因此不会被计量。
兼容 Anthropic 的 API
Decisions API
在配置了openai、jev 或 openrouter 提供商时可用;请参阅
Decisions API。
System One API
在配置了jev 或 openrouter 提供商时可用;请参阅
System One API。
网关扩展
密钥验证
GET /v1/auth/verify 让位于网关前方的服务无需持有密钥列表副本即可校验 API 密钥。
该端点默认禁用;可通过 AUTH_VERIFY_ENABLED=true(server.auth_verify_enabled)启用。
它不是 /admin 路由,因此在禁用 Admin API 时依然可用。
401 拒绝,因此返回 200 即表示该密钥认证通过。
method 表示接受该密钥的机制:api_key 是存储在数据库中的托管密钥,
master_key 是来自 GOMODEL_MASTER_KEY 的引导密钥。key_id
和 user_path 仅在托管密钥绑定了相应值时才会出现。
当网关允许未认证的调用方访问时(完全未配置认证,或某个路由被扩展排除在认证之外),
没有可供确认的密钥,此时该端点返回
200 和
{"valid": false, "method": "none"},而不会声称密钥有效。
基于状态码判断的使用方(例如 Caddy 的 forward_auth)会将其视为允许访问,
这与网关自身对这些请求的处理方式一致。提供商透传
MCP 网关
聚合已配置上游 MCP 服务器的 Streamable-HTTP MCP(Model Context Protocol)端点 (需启用MCP_ENABLED,默认开启)。请参阅
MCP 网关。
管理端点
管理 REST 和控制台路由(/admin/*)请参阅
管理端点。