跳到正文

Gemini Omni:视频生成 API

用 Gemini Omni 一次同步请求生成短视频:型号、请求参数、返回结果、报错与计费。

Gemini Omni 用一次同步请求生成短视频:响应体里直接返回 base64 MP4 成片,没有任务 ID,也不需要轮询。

项目取值
Base URLhttps://api.hop-base.com/v1beta
生成视频POST /v1beta/interactions
等价别名POST /v1/interactions、POST /interactions
任务与轮询无,同步返回
密钥分组「Gemini 官方直连」

可用型号

模型 ID分辨率时长官方价
gemini-omni-flash-preview720p3-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_typevideo/mp4
steps[].content[].database64 编码的 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 秒视频:白色背景上一颗红球缓慢滚动"
  }'

注意事项

Chat Completions 拿不到视频:

把 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-previewmodel 改为 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
504HopBase 不自动重试;重放可能生成两次、付两次钱

计费

按 Token 计费,不按秒。返回 200 但没有视频块时仍按 Token 计费;报错或超时的请求都不计费。

提交前不做余额预留,只有余额不大于 0 时才返回 402。官方牌价见价格页,你的实际单价以登录后的模型广场为准,每次请求的实际扣费见控制台「使用记录」。

下一步