Gemini Omni:视频生成 API
用 Gemini Omni 一次同步请求生成短视频:型号、请求参数、返回结果、报错与计费。
Gemini Omni 用一次同步请求生成短视频:响应体里直接返回 base64 MP4 成片,没有任务 ID,也不需要轮询。
| 项目 | 取值 |
|---|---|
| Base URL | https://api.hop-base.com/v1beta |
| 生成视频 | POST /v1beta/interactions |
| 等价别名 | POST /v1/interactions、POST /interactions |
| 任务与轮询 | 无,同步返回 |
| 密钥分组 | 「Gemini 官方直连」 |
可用型号
| 模型 ID | 分辨率 | 时长 | 官方价 |
|---|---|---|---|
gemini-omni-flash-preview | 720p | 3-10 秒 | $1.50 / $9/ 百万 tokens |
gemini-omni-flash-preview 是唯一能出视频的 Gemini 模型,也是 HopBase 上唯一同步返回的视频模型。成片为 3-10 秒 720p MP4,按 Token 计费而不是按秒。完整规格见模型卡。
Omni 视频由Gemini 官方直连分组提供,与 Gemini 对话、Gemini 生图是同一个分组、同一把密钥,不需要另买视频套餐。可用性以 GET /v1/models 为准,实际单价见登录后的模型广场。
请求参数
| 参数 | 必填 | 类型与限制 | 默认值 | 说明 |
|---|---|---|---|---|
model | 必填 | 仅 gemini-omni-flash-preview | — | 其他模型返回 400 |
input | 必填 | 字符串,或原生步骤数组;素材用 data(base64)加 mime_type,或远端 uri;输入视频 ≤ 10 秒 | — | 支持文本、图片、视频输入。10 秒上限由模型校验,网关不查 |
stream | 可选 | 布尔值 | false | 传 true 也不会逐段流式输出,结果一次性返回 |
| 其他原生字段 | 可选 | 如 system_instruction、generation_config | — | 原样透传 |
没有 duration、resolution、fps 这类参数,想要多长直接在提示词里说。
返回结果
请求一直阻塞到成片生成完毕,没有「排队中」「处理中」这类中间状态。成功时 HTTP 200,成片在 type 为 model_output 那一步的 steps[].content[] 里。
| 字段 | 说明 |
|---|---|
status | 完成时为 completed |
steps[].type | 成片所在步骤为 model_output |
steps[].content[].type | 视频块为 video |
steps[].content[].mime_type | video/mp4 |
steps[].content[].data | base64 编码的 MP4 |
usage.total_input_tokens / usage.total_output_tokens | 输入与输出 Token |
usage.output_tokens_by_modality | 输出 Token 按模态拆分,仅供参考 |
成功
{
"status": "completed",
"model": "gemini-omni-flash-preview",
"steps": [{
"type": "model_output",
"content": [{ "type": "video", "mime_type": "video/mp4", "data": "<base64-mp4>" }]
}],
"usage": {
"total_input_tokens": 20,
"total_output_tokens": 17819,
"output_tokens_by_modality": [{ "modality": "video", "tokens": 17376 }]
}
}usage.output_tokens_by_modality 中的数字已经包含在 total_output_tokens 里,不要重复相加。
| 项目 | 取值 |
|---|---|
| 时长 | 3-10 秒 |
| 分辨率 | 720p |
| 帧率 | 24 FPS |
| 封装 | MP4,以 base64 返回 |
| 上下文窗口 | 1,048,576 Token |
成片直接放在 JSON 响应体里,没有下载链接,也就不存在链接过期。响应因此会很大,客户端缓冲区要留够。
失败
失败有三种形态:
- 网关校验失败返回 400,格式是
{"error": {"message": …}},原文见下方「常见报错」。 - 模型自身的报错以其原生错误体返回。
- 返回 200 但没有
type: "video"块(模型只回了文字或拒答)。这种情况仍按 Token 计费,判定成功前请先检查这个块。
最小示例
curl https://api.hop-base.com/v1beta/interactions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
--max-time 600 \
-d '{
"model": "gemini-omni-flash-preview",
"input": "生成一段 3 秒视频:白色背景上一颗红球缓慢滚动"
}'注意事项
把 gemini-omni-flash-preview 发给 /v1/chat/completions 是能调通的,但只会返回回答里的文本部分,视频块会被丢弃。要拿成片就用 Interactions 端点。
视频生成慢,而这个端点没有异步模式——Prefer: respond-async 对 Gemini 生图有效,对这里无效。
- 原生 Interactions 端点没有网关侧超时看门狗,客户端超时请设得足够长,建议不少于 5 分钟。
- 若改经
/v1/chat/completions调用gemini-omni-flash-preview,单次请求会受约 100 秒的限制,与客户端超时设置无关;可能跑得更久的请求请直接走 Interactions 端点。 - HopBase 在这条路径上刻意不重试 504:结果未知就重放,有可能把片子生成两次、也付两次钱。
- 模型 ID 带
preview,能力与可用性可能随时变更。
当前网关没有为 Omni 图片/视频输入设置统一的素材数量、单文件字节数校验;未验证的上限不等于无限制。不要套用 GPT Image 的 16 张或 Seedance 的素材规则。
uri 是远端素材地址,data 是 base64 内容;不要传 asset://、Seedance 素材 ID 或本地文件路径。即使结构被接受,媒体规格和内容审核仍以服务端结果为准。
常见报错 → 改法
网关对以下情况返回 400:
Interactions API only supports model gemini-omni-flash-preview
request body is missing input
missing model
request body must be JSON| 报错或现象 | 改法 |
|---|---|
Interactions API only supports model gemini-omni-flash-preview | model 改为 gemini-omni-flash-preview |
request body is missing input | 补上 input |
missing model | 补上 model |
request body must be JSON | 请求体改为 JSON |
| 402 | 余额不大于 0,充值后再调用 |
| 200 但没有视频块 | 模型只回了文字或拒答,仍计费;检查 steps[].content[] 后再判定成功 |
经 /v1/chat/completions 只拿到文字 | 改用 POST /v1beta/interactions |
| 504 | HopBase 不自动重试;重放可能生成两次、付两次钱 |
计费
按 Token 计费,不按秒。返回 200 但没有视频块时仍按 Token 计费;报错或超时的请求都不计费。
提交前不做余额预留,只有余额不大于 0 时才返回 402。官方牌价见价格页,你的实际单价以登录后的模型广场为准,每次请求的实际扣费见控制台「使用记录」。