HRouter

生图与生视频

这一篇说明 HRouter 各分组怎么生成图片和视频:用哪个分组、填哪个模型、调哪个接口。价格以 模型广场 为准,按张或按秒计费的模型在广场上会按分辨率列出单价。

操作前提:Key 属于支持生图的分组,模型在该分组的可用列表里,账户有可用余额。下文示例都从环境变量读取 Key:

export HROUTER_API_KEY="sk-xxxxx"

不想写代码,可以直接用顶部导航的 生图工作台 在网页里生图。

先选对分组

只有下表这些分组能生图、生视频。Key 属于其他分组时,生图请求会被拒绝,见文末 常见报错。

分组 生图模型 生视频模型 接口
GPT 生图 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst 不支持 OpenAI Images:/v1/images/generations、/v1/images/edits
grok grok-imagine-image、grok-imagine-image-quality、grok-imagine-image-2.0 grok-imagine-video、grok-imagine-video-1.5 生图同上;生视频:/v1/videos/generations
Gemini gemini-3.1-flash-image、gemini-3.1-flash-image-preview 不支持 Gemini 原生:/v1beta/models/{模型}:generateContent

创建 Key 时看不到的分组,说明当前账号不能使用。分组的选择方法见 选择 Key 分组。

GPT 生图分组

文生图

curl https://hrouter.net/v1/images/generations \
  -H "Authorization: Bearer $HROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-image-2", "prompt": "一只橘猫坐在窗台上,午后阳光", "size": "1024x1024", "n": 1}'

图片在返回的 data[].b64_json 里(Base64 编码,解码后保存为 PNG)。size 决定计费档位(1K / 2K / 4K),尺寸越大单价越高。

用 OpenAI SDK 只需改 base_url:

import base64, os
from openai import OpenAI

client = OpenAI(api_key=os.environ["HROUTER_API_KEY"], base_url="https://hrouter.net/v1")
result = client.images.generate(model="gpt-image-2", prompt="一只橘猫坐在窗台上,午后阳光", size="1024x1024")
with open("cat.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

改图

上传原图和修改要求(multipart 表单):

curl https://hrouter.net/v1/images/edits \
  -H "Authorization: Bearer $HROUTER_API_KEY" \
  -F model=gpt-image-2 \
  -F [email protected] \
  -F prompt="把背景换成海边"

grok 分组

生图

curl https://hrouter.net/v1/images/generations \
  -H "Authorization: Bearer $HROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "grok-imagine-image", "prompt": "雪山下的木屋,清晨", "n": 1}'
参数 说明
model grok-imagine-image(快速)、grok-imagine-image-quality(高质量)、grok-imagine-image-2.0
resolution 可选,1k 或 2k
aspect_ratio 可选,例如 16:9、1:1、9:16
n 一次生成的张数

返回的 data[].url 是临时链接,请尽快下载保存。改图用 /v1/images/edits,模型选 grok-imagine-image-quality 或 grok-imagine-image-2.0,在 image 里传原图链接,最多 3 张:

curl https://hrouter.net/v1/images/edits \
  -H "Authorization: Bearer $HROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "grok-imagine-image-quality", "prompt": "改成水彩画风格", "image": {"url": "https://example.com/photo.jpg"}}'

生视频

视频是异步生成的:先提交任务拿到 request_id,再查询状态,完成后下载。

第 1 步:提交任务

curl https://hrouter.net/v1/videos/generations \
  -H "Authorization: Bearer $HROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "grok-imagine-video-1.5", "prompt": "海浪拍打礁石,慢镜头", "duration": 8, "resolution": "720p"}'

返回 {"request_id": "..."}。

参数 说明
model grok-imagine-video-1.5(推荐)或 grok-imagine-video
duration 视频时长,1–15 秒,不填默认 8 秒
resolution 480p 或 720p,不填默认 480p;暂不提供 1080p
image 可选,传一张图片链接做图生视频

第 2 步:查询状态

curl https://hrouter.net/v1/videos/generations/<request_id> \
  -H "Authorization: Bearer $HROUTER_API_KEY"

status 为 pending 时隔 10 秒左右再查;变成 done 后,返回里会有 video.url。

第 3 步:下载视频

curl -L -o video.mp4 https://hrouter.net/v1/videos/generations/<request_id>/content \
  -H "Authorization: Bearer $HROUTER_API_KEY"

用 Python 一次跑完:

import os, time, requests

base = "https://hrouter.net/v1"
headers = {"Authorization": f"Bearer {os.environ['HROUTER_API_KEY']}"}
task = requests.post(f"{base}/videos/generations", headers=headers, json={
    "model": "grok-imagine-video-1.5", "prompt": "海浪拍打礁石,慢镜头", "duration": 8, "resolution": "720p",
}).json()
request_id = task["request_id"]
while True:
    status = requests.get(f"{base}/videos/generations/{request_id}", headers=headers).json()
    if status.get("status") == "done":
        break
    if status.get("status") in ("failed", "expired"):
        raise SystemExit(status)
    time.sleep(10)
video = requests.get(f"{base}/videos/generations/{request_id}/content", headers=headers)
open("video.mp4", "wb").write(video.content)

视频怎么计费:按秒计费,单价随分辨率不同,费用 = 每秒单价 × 时长。提交任务时不扣费,通过 HRouter 查询到 done 时才扣费;生成失败或过期不扣费。所以请用 HRouter 的地址查询状态,不要直接访问上游。

Gemini 分组

Gemini 分组同时提供对话模型 gemini-3.8-flash-low、-medium、-high、-tiered(对应不同思考强度)和生图模型 gemini-3.1-flash-image。生图按 token 计费:输入、文字输出和图片输出分别计价,一张 1K 图片的图片输出约 1,120 token。

Gemini 生图走 Gemini 原生协议,Key 放在 x-goog-api-key 请求头里:

curl "https://hrouter.net/v1beta/models/gemini-3.1-flash-image:generateContent" \
  -H "x-goog-api-key: $HROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contents": [{"parts": [{"text": "一只橘猫坐在窗台上,午后阳光"}]}], "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}}'

图片在 candidates[0].content.parts[].inlineData.data 里(Base64 编码)。

常见报错

报错 原因 处理
403 Image generation is not enabled for this group Key 所在分组不支持生图 换成上表里的分组新建 Key
404 Images API is not supported for this platform 分组的协议不支持 Images 接口(例如 Claude 分组) 同上
404 model_not_found / is not available for this group 模型不在该分组的可用列表里 核对模型名,见 model_not_found
400 Resolution 1080p is not available 该分辨率暂未开放 改用 480p 或 720p
INSUFFICIENT_BALANCE 余额不足 见 余额不足

扣费明细可以在 使用记录 里查看,生图显示张数和档位,生视频显示时长和分辨率。