generateContent 请求只需更换 base URL 和 Key 即可使用:
POST https://api.omnirelay.ai/v1beta/models/{model}:generateContent以 JSON 一次性返回完整回答。POST https://api.omnirelay.ai/v1beta/models/{model}:streamGenerateContent?alt=sse以服务器推送事件(SSE)流式返回。
x-goog-api-key 请求头中发送 OmniRelay API Key(Gemini SDK 的默认方式),也可以作为 Bearer token 发送。Key 的规则与其他模型相同:有效期、IP 白名单、模型限制、预算以及速率与并发限制。放在 ?key= 查询参数中的 Key 不会被读取。
模型
其他模型调用此接口会返回
unsupported_parameter,不产生费用。纯文本的 Gemini 调用也可以使用 Chat Completions。
解析视频
把视频放在fileData 部分,使用可公开访问的 https URL,后面跟上你的问题:
candidates[0].content.parts,usageMetadata 报告 tokens 用量,其中 promptTokensDetails 列出视频所占的部分。
视频输入
- URL 方式:
fileData.fileUri必须是模型可以下载的公开httpsURL。 - 内联方式:较小的片段可以以 base64 放入
inlineData。整个请求体上限为 4 MB,更大的视频请使用 URL。 - 不支持 Gemini Files API 的 URI(
generativelanguage.googleapis.com/.../files/...)和cachedContent。
generateContent 请求的其他字段会按原样传给模型:systemInstruction、generationConfig(包括 responseSchema 和 thinkingConfig)、safetySettings,以及带 functionDeclarations 的 tools 和 toolConfig.functionCallingConfig。字段名请使用 camelCase。candidateCount 必须为 1,thinkingBudget 不能超过 maxOutputTokens;此接口不提供内置的搜索、URL 上下文、代码执行和文件检索工具。请不要在请求体中放 model 或 stream,二者由路径决定。如果省略 generationConfig.maxOutputTokens,OmniRelay 会使用模型默认值 32,000。
流式输出
使用:streamGenerateContent?alt=sse。每个事件都是 Gemini 格式的 JSON 片段,且都带有截至当前的用量。模型报告结束原因后,按最后一个片段的用量计费。长视频更适合流式调用:非流式调用必须在 90 秒内返回结果,而流式调用只需在这段时间内返回第一个片段。
价格
视频理解按模型的文本价格以 tokens 计费。视频的画面帧和音频计为输入 tokens;与 Google 自身的计费方式一致,模型的思考过程计为输出 tokens。gemini-3.1-pro-preview 的价格:
一段短视频加一份详细的 JSON 解析,通常约 USD 0.01–0.02。你的折扣与文本模型一样适用。
调用开始时,OmniRelay 会冻结其最高费用:请求本身的文本、每个 URL 视频 131,072 个输入 tokens,以及完整的
maxOutputTokens 再加 1,024 个 tokens(模型可能略微超出上限才结束)。你只需为实际报告的 tokens 付费,其余冻结金额在调用结束时退回余额。请让 maxOutputTokens 接近实际需要,以减少冻结金额。用量远超冻结金额的调用(例如很长的视频)会转为人工核对,而不是自动扣费。
非流式调用的费用在响应头 X-OmniRelay-Cost-Microusd 中返回;两种调用的费用都可以在用量页面查看。
错误
错误以 Gemini 格式返回,Gemini SDK 会将其作为 API 错误抛出:code 是 HTTP 状态码,status 是 OmniRelay 的错误码。如果模型无法获取或读取视频,调用会以 invalid_parameter 失败,不产生费用。流式调用中的失败会作为最后一个事件返回,内容是同样的 error 对象。