AIHUB Docs
文档中心 / 欢迎使用

从一个模型名开始,完成稳定的媒体生成接入。

先选择模型原厂与能力,再按详情页确认令牌分组、请求参数和异步任务结果。所有既有模型文档都保留在本次改版中。

步骤 01

创建令牌

在控制台创建 API Key,并确认目标模型对应分组已开通。

查看分组说明 →
步骤 02

提交任务

视频统一走 POST /v1/videos,参数以对应模型章节为准。

复制视频示例 →

视频生成,按原厂与自定义线路发现

模型原厂决定能力;令牌分组和路由则在每个模型详情页中确认。自定义线路单独标注,不与官方原厂链路混排。

首次接入建议先用 Omni 或 Flow 完成一笔最小视频任务;随后再按厂商、模型和输入模式扩展。
AI 编程工具 / 推荐接入方式

把一个 SKILL.md 交给 AI,让它按真实接口完成接入。

适用于 Codex、Claude Code、Cursor、Windsurf、Cline 等工具。技能文件会先读取项目环境变量,再发现此令牌实际可见的模型,按本站模型页选择正确的调用方式。

一个文件,覆盖接入时最常见的错误点

不让 AI 猜模型名、分组、视频轮询或素材字段;模型列表由令牌实时读取,模型参数与价格仍回到本站对应章节核对。

令牌可见模型实时发现OpenAI 兼容调用入口视频任务与轮询规则不自动试跑付费生成
SKILL.md · API Gateway
name: aihubcc-api-gateway
description: Integrate the gateway

1. Read .env
2. GET /v1/models
3. Pick visible model ID
4. Follow model documentation
5. Poll existing video task

Never expose API keys.

开始使用

下载技能文件后,与下方提示词一起交给 AI。它会将文件放到项目技能目录,并保留原始内容。

01

把 SKILL.md 放进项目

先下载文件,再和这段提示一并发送给你的 AI 编程工具。它会按所用工具的项目目录创建技能文件夹。

这是 aihubcc 的 API 接入技能文件 SKILL.md。请把它放到本项目的技能目录:
Claude Code 放 .claude/skills/aihubcc-api-gateway/;Cursor 放 .cursor/skills/aihubcc-api-gateway/;
Windsurf 放 .windsurf/skills/aihubcc-api-gateway/;Cline 放 .cline/skills/aihubcc-api-gateway/;
其它工具放项目根目录 ai-gateway-skill/。目录不存在就新建,文件内容原样写入,完成后告诉我实际路径。
02

把令牌存入 .env

令牌只保存在项目本地环境变量,AI 后续从 `.env` 读取,不应再次要求你在对话中粘贴密钥。

我的 aihubcc API Key 是:【粘贴 Key】。请把它写进项目根目录 .env:
aihubcc_API_BASE_URL=https://aihubcc.cc
aihubcc_API_KEY=【粘贴 Key】
如果已有 .env,只追加缺失变量,不要覆盖其它内容;确认 .env 已在 .gitignore 中。以后从 .env 读取,不要在代码、日志或浏览器端暴露 Key。
03

先发现模型,再写接入代码

AI 会先用令牌调用 `/v1/models`,只使用实际可见的模型 ID;视频、图像与多参考素材均回到对应模型页核对参数。

请读取 aihubcc 的 SKILL.md,先从 .env 取配置并 GET $aihubcc_API_BASE_URL/v1/models。
按视频、图像、音频、文本分类列出我当前令牌可用的模型;不要猜模型名或价格。之后根据我的需求选择模型并给出接入方案,生成类请求先等我明确确认。

可以直接交给 AI 的需求

以下提示都先要求 AI 读取技能文件和令牌可见模型,避免项目被写入无法调用的模型名。

读一下 aihubcc 的 SKILL.md,从 .env 拉一遍 /v1/models。按对话、图片、视频、音频分类列出当前令牌可用的模型,并各给一个适用场景。
我的项目已经使用 OpenAI SDK。读取 aihubcc 的 SKILL.md,把 base_url 和 API Key 改为从 .env 读取,其它业务代码尽量不动;先只用 GET /v1/models 验证配置,不要发起付费生成。
读取 aihubcc 的 SKILL.md 和目标视频模型页。帮我做一个图生视频工具:提交任务后按 4 秒间隔轮询同一个 task_id,完成时保存响应中的 video_url;失败时保留 task_id 和错误信息。
从 .env 查询 aihubcc 令牌使用情况,读取 /api/usage/token/。告诉我可用额度、是否有限制模型、是否设置过期时间;不要把 Key 输出到终端或日志。
技能文件会实时读取令牌可见模型,但当前没有公开的机器可读价格、通用文件上传或通用参数 Schema 接口。AI 必须将价格和素材参数回到本站目标模型章节核对,不得猜测。

调用入口

按 SDK 与任务类型选择协议。文本、Responses、Anthropic、图像、视频和音频使用不同的公开入口,模型名必须来自当前令牌可见列表。

对话补全

所有可用的 Chat 模型共用 OpenAI Chat Completions 请求体。换 model 即切换模型;长响应或推理场景建议开启 stream: true。

Chat Completions

OpenAI 兼容文本、多模态和工具调用入口。

POST/v1/chat/completions

核心参数

参数位置必填说明
modelbody是来自 GET /v1/models 的可见模型 ID。
messagesbody是OpenAI 消息数组;多模态字段以目标模型章节为准。
streambody否true 时按 SSE 输出。
temperature / max_tokens / toolsbody否按 OpenAI 规范传递,模型支持度不同。

请求示例

curl "$BASE_URL/v1/chat/completions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID","messages":[{"role":"user","content":"用一句话介绍你自己"}],"stream":true}'
推理类模型的推理内容会以 reasoning_content 或流式 delta.reasoning_content 返回;正文仍从 content 读取。

原生协议

OpenAI Responses

面向新版 OpenAI SDK、Codex 与 Agent 工具链的原生输入格式。

POST/v1/responses
参数必填说明
model是当前令牌可见的 Chat 模型。
input是字符串或 Responses 输入项数组。
instructions / tools / stream否按 Responses 规范传递。
curl "$BASE_URL/v1/responses" \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID","input":"列出三个使用本 API 的理由"}'

Anthropic Messages

面向 Claude SDK 的原生 Messages 协议。

POST/v1/messages
参数必填说明
model是可见模型 ID;优先使用 Claude 系列模型。
max_tokens是Anthropic Messages 规范必填。
messages是Anthropic 消息数组。
curl "$BASE_URL/v1/messages" \
  -H "x-api-key: $API_KEY" -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'

图像生成与编辑

Images

同步返回图片 URL 或 Base64。模型专属尺寸、质量与参考素材字段必须查看模型详情页。

POST/v1/images/generations
参数必填说明
model / prompt是模型 ID 与生成描述。
n / size / quality / response_format否仅在目标模型支持时传递。
curl -X POST "$BASE_URL/v1/images/generations" \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID","prompt":"一只戴帽子的柴犬","n":1,"size":"1024x1024"}'
图片调用是同步入口。客户端、CDN 与反向代理必须允许目标模型实际所需的等待时间。

视频生成

Async Video

当前规范视频入口。模型可能接受 JSON、Base64、URL 或 multipart,不能跨模型复制素材字段。

POST/v1/videos
参数必填说明
model是来自可见模型列表。
prompt通常是视频描述;不同模型的规则不同。
seconds / size / images / input_reference模型相关按目标模型页选择,不能假设通用支持。
curl -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID","prompt":"雨夜霓虹街道,镜头缓慢推进","aspect_ratio":"16:9"}'
提交成功后保存 task_id,再进入“任务与轮询”页面查询结果。

音频入口

Speech / Transcription / Translation

标准 OpenAI 音频入口;音乐模型的调用方式以对应模型详情页为准。

POST/v1/audio/speech
当前

已开放路由

语音合成、音频转写与翻译均有 OpenAI 风格入口。

/v1/audio/speech
/v1/audio/transcriptions
/v1/audio/translations
待更新

音乐异步统一入口

通用 /v1/audio/generations / /v1/media/generate 统一入口待更新;当前请使用上方已开放的音频路由。

任务与轮询

当前视频与异步媒体任务使用视频任务 ID 查询。任务已受理后只轮询同一个 ID,不因客户端等待超时重复提交。

状态速查

当前规范返回四个客户可处理状态。不同来源的原始状态在网关内部映射,客户不需要识别底层状态名。

queued

任务已受理,等待执行。保留任务 ID。

in_progress

任务正在处理。进度字段仅作参考。

completed

读取结果 URL,停止轮询。

failed

读取错误并保留任务 ID 供排查。

查询任务

查询当前令牌的任务

任务归属当前用户。不能查询其他令牌用户的任务。

GET/v1/videos/{task_id}
参数位置必填说明
task_idpath是提交时返回的公开任务 ID。
curl "$BASE_URL/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $API_KEY"

完成响应的兼容读取顺序

status = response["status"]
if status == "completed":
    url = response.get("video_url") \
        or response.get("data", [{}])[0].get("url") \
        or response.get("metadata", {}).get("url")
elif status == "failed":
    error = response.get("error") or response.get("fail_reason")

轮询与下载规则

当前

轮询已有任务

建议每 3–5 秒查询一次。queued 与 in_progress 时继续轮询,不要重复 POST。

GET /v1/videos/{task_id}
结果

结果 URL

完成后优先使用响应结果地址;已就绪的媒体也可通过内容路径下载。

GET /v1/videos/{task_id}/content
待更新

统一任务契约

统一 /v1/tasks/{task_id}(is_final、output_url、进度与统一错误对象)待更新。

待更新

任务类型统一

音乐、语音、图像异步任务的统一查询待更新;当前以各模型实际文档为准。

客户端超时只代表当前 HTTP 等待结束,不代表任务失败。先查询原任务 ID;失败时保留 ID 与客户安全的错误对象。

模型接口与发现

先查询当前令牌能使用的模型,再从模型详情页确认参数、素材规则和价格。模型名、可见性和价格都不应由 AI 或客户端猜测。

当前模型列表

令牌可见模型

OpenAI 兼容列表。返回值已经按令牌、用户分组、模型限制和可用配置过滤。

GET/v1/models
curl "$BASE_URL/v1/models" \
  -H "Authorization: Bearer $API_KEY"

# {"object":"list","data":[{"id":"model-id","object":"model"}]}
只使用响应中的 data[].id。未出现在列表中的模型,对当前令牌不可用或无权使用。

当前参数与价格来源

当前

模型详情页

视频时长、分辨率、参考图、参考视频、Base64 与 multipart 字段,以对应模型章节为准。

本站模型文档
当前

控制台价格

实际模型价格与分组倍率以控制台为准;程序化获取见「账户信息 API」章节:GET /api/pricing(带账号令牌得专属价)。

控制台模型列表

机器可读接口(待更新)

以下机器可读接口用于让 Skill 与客户程序自助发现模型、参数与价格,待更新;当前请以已开放的 /v1/models 为准。

待更新

模型目录

按令牌返回显示名、类型、标签、能力和调用入口。

GET /v1/skills/models
待更新

参数 Schema

单模型参数、可选值、默认值与素材限制。

GET /v1/skills/models/{model}
待更新

客户可见价格

只按当前令牌返回有效计费单位与公开价格,不泄露内部渠道。

GET /v1/skills/models/{model}/pricing
待更新

按参数估价

时长、清晰度与素材组合影响价格时,复用真实账单逻辑估价。

POST /v1/pricing-estimate

账户与素材

当前可查询令牌用量与限制;参考素材仍以模型协议为准。统一钱包余额与文件上传能力待更新。

当前令牌用量

Token Usage

读取当前令牌的额度、已用额度、模型限制和过期时间。

GET/api/usage/token/
curl "$BASE_URL/api/usage/token/" \
  -H "Authorization: Bearer $API_KEY"

# data.total_available / data.total_used / data.model_limits / data.expires_at
这是令牌配额接口(单把 sk- 令牌)。账号总余额现已可用,见「账户信息 API」章节:GET /api/user/self(data.quota / 500000 = 元)。

当前参考素材方式

URL

公网 URL

仅在目标模型参数页明确支持时使用;链接必须可被目标模型访问。

模型字段为准
Base64

Data URI

部分模型支持 data:image/...;base64,...,其它模型可能忽略或拒绝。

模型字段为准
Multipart

本地文件表单

仅使用目标模型公开的 multipart 字段,例如某些模型的 input_reference。

模型字段为准
结果

结果链接

把响应里的 video_url 或图片 URL 当作不透明地址使用,及时保存需要长期保留的产物。

响应字段为准

账户与文件能力(待更新)

以下账户与文件能力待更新,敬请关注。

待更新

钱包余额

返回总额、预冻结、可用余额和实际币种;字段来自同一账本快照。

GET /v1/skills/balance
待更新

文件上传

multipart 上传后返回客户安全、可被模型访问、具备过期策略的 URL。

POST /v1/files
待更新

文件生命周期

文件元数据、删除、所有权检查、存储清理和可见 URL 过期时间。

GET / DELETE /v1/files/{id}
待更新

模型素材声明

由模型参数接口声明 URL、Base64、multipart 和限制,AI 不再猜测输入格式。

GET /v1/skills/models/{model}

账户信息 API Account

🔑 通过 API 查询模型与余额两类信息,支持两种鉴权粒度:令牌级(用调用令牌 sk-,看这把令牌的可见模型与额度)与账号级(用账号凭据,看整个账号已开启的模型、总余额与专属价格)。均为只读、可安全轮询。Base URL https://aihubcc.cc。

两种鉴权粒度

粒度鉴权头能查到
令牌级Authorization: Bearer sk-你的令牌这把令牌的可见模型 + 这把令牌的额度
账号级Authorization: Bearer 账号访问令牌账号已开启的全部模型 + 账号总余额 + 账号专属价格
⚠️ 调用令牌 sk- 与 账号访问令牌 是两种不同凭据:sk- 只能打 /v1/* 生成接口与 /api/usage/token/;账号访问令牌 / 登录 JWT 才能打 /api/user/* 账号接口(用 sk- 打账号接口会返回 401)。

账号凭据怎么拿(两选一)

方式怎么获取适用
① 账号访问令牌(推荐)登录后台 →「个人设置 / 个人中心」→ 生成系统访问令牌,复制保存(也可 GET /api/user/token 在登录态下签发;重新签发会替换并使旧令牌失效)服务端脚本 / 长期自动化:长期有效、可随时重置、不受验证码 / 两步验证影响
② 账号密码换令牌POST /api/user/login,body {"username":"...","password":"..."} → 取 data.access_token交互式 / 一次性:得到的是会话 JWT;账号开启两步验证时需再走 2FA。⚠️ 每次调用都会创建登录会话,勿用于反复自动化(见下)
BASE_URL="https://aihubcc.cc"

# 方式②:账号密码换令牌(返回 data.access_token)
curl -sS -X POST "$BASE_URL/api/user/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"你的账号","password":"你的密码"}'
# => {"success":true,"data":{"access_token":"eyJhbGci...","user":{...}}}
拿到的账号访问令牌 / access_token 都作为 Authorization: Bearer <它> 打下面的账号级接口。账号访问令牌等于账号钥匙,请妥善保管、勿写进前端、勿泄露;泄露可在后台重置。
⚠️ 方式②会创建登录会话:每次 POST /api/user/login 都会新建一个 30 天有效的登录会话。反复程序化登录会堆满账号活跃会话上限(默认 50),导致账号被临时锁定。自动化请一律用 ①账号访问令牌(PAT)——无状态查询、不产生会话。被锁解法:任一已登录设备点「退出其他登录会话」,或重置密码。

① 令牌级:模型 + 额度(用 sk-)

能力接口返回
令牌可见模型GET /v1/modelsdata[].id = 这把令牌可调用的模型(已按令牌 / 分组 / 模型限制过滤)
令牌额度GET /api/usage/token/total_available / total_used / total_granted / unlimited_quota / model_limits / expires_at
# 令牌可见模型
curl -sS "$BASE_URL/v1/models" -H "Authorization: Bearer sk-你的令牌"

# 令牌额度(人民币余额 = 数值 / 500000;unlimited_quota=true 表示不限额)
curl -sS "$BASE_URL/api/usage/token/" -H "Authorization: Bearer sk-你的令牌"
# => {"data":{"total_available":..., "total_used":..., "unlimited_quota":false, "model_limits":[...], "expires_at":...}}

② 账号级:已开启模型 + 总余额(用账号令牌)

能力接口返回
账号已开启模型GET /api/user/modelsdata = 账号所有可用分组里已启用的模型名数组(去重)。可选 ?group=组名 筛某组、?group=auto 看智能分组
账号总余额GET /api/user/selfdata.quota(剩余额度)、data.used_quota(已用)、data.group(账号分组)
账号分组与倍率GET /api/user/self/groups账号可用分组及各组倍率
PAT="账号访问令牌或登录返回的 access_token"

# 账号已开启的全部模型(跨该账号所有可用分组、去重)
curl -sS "$BASE_URL/api/user/models" -H "Authorization: Bearer $PAT"
# => {"success":true,"data":["gemini-3-flash","claude-sonnet-4-6","flow-omni-1.1-flash", ...]}

# 账号总余额(人民币余额 = data.quota / 500000)
curl -sS "$BASE_URL/api/user/self" -H "Authorization: Bearer $PAT"
# => {"success":true,"data":{"username":"...","group":"...","quota":...,"used_quota":..., ...}}
#    quota=... → 人民币余额 = quota / 500000

模型价格

GET /api/pricing 返回全部模型的价格目录。匿名即可调用(返回基准价);带账号令牌调用则反映该账号的分组倍率与专属折扣——要拿"这个账号真实到手价"请带账号令牌打。

字段含义
data[].model_name模型名
data[].quota_type计费方式:1=按次固定价 / 0=按量(token)
data[].model_price按次(quota_type=1)时的每次单价(元,未乘分组倍率)
data[].model_ratio按量(quota_type=0)时的倍率
data[].enable_groups该模型所属分组
group_ratio(顶层)各分组倍率
usable_group(顶层)可用分组(账号鉴权时按账号过滤)
# 未鉴权 = 公开价格目录;带账号令牌 = 账号有效价格
curl -sS "$BASE_URL/api/pricing" -H "Authorization: Bearer $PAT"
价格算法:按次(quota_type=1)每次价格(人民币) = model_price × group_ratio[该模型分组];按量(quota_type=0)按 token 计费、倍率 = model_ratio × group_ratio,有 published_price 时直接用它更直观。用 sk- 打此接口不触发账号鉴权(按匿名基准价返回),要专属价请用账号令牌。若账号有专属折扣(用户级倍率覆盖分组倍率),以 published_price / 控制台为准。

Python 完整示例(账号级:余额 + 模型 + 价格)

import requests

BASE = "https://aihubcc.cc"
PAT  = "账号访问令牌"          # 或用账号密码登录换 access_token(见上)
H = {"Authorization": f"Bearer {PAT}"}

# 账号总余额
me = requests.get(f"{BASE}/api/user/self", headers=H, timeout=30).json()["data"]
print("账号:", me["username"], "| 分组:", me["group"], "| 余额(人民币): %.2f" % (me["quota"] / 500000))

# 账号已开启的全部模型
models = requests.get(f"{BASE}/api/user/models", headers=H, timeout=30).json()["data"]
print("已开启模型数:", len(models))

# 模型价格目录(账号专属价)
pr = requests.get(f"{BASE}/api/pricing", headers=H, timeout=30).json()
prices, group_ratio = pr["data"], pr.get("group_ratio", {})
for m in prices[:5]:
    if m["quota_type"] == 1:                       # 按次
        g = (m.get("enable_groups") or [""])[0]
        print(m["model_name"], "≈ %.4f 人民币/次" % (m["model_price"] * group_ratio.get(g, 1)))

单位与注意事项

  • 额度换算:人民币余额 = quota / 500000。
  • 只读、不计费:以上都是查询接口,不产生任何生成费用,可轮询(建议间隔 ≥ 数秒)。
  • 两类凭据不互通:sk- 打不了 /api/user/*(401);账号令牌也不用来打 /v1/* 生成。
  • 令牌级 vs 账号级:sk- 可被设 model_limits 只放行部分模型、可单独限额;账号级看的是整个账号(跨所有分组)已启用模型与共享钱包。
  • 价格以本站 / 控制台为准,接口数值供程序对账。

通用说明 & FAQ

接入地址(两条独立线路,同一账号)

线路Base URL入口位置适用场景
主线路https://aihubcc.cc/v1欧洲默认使用;本文档所有示例均用此地址
备用线路https://aihubcc.cc/v1美东主线路连不上 / 延迟偏高时改用,只改域名,其他一行不动
两条线路是同一个平台、同一个账号、同一个令牌、同一份余额——只是网络入口不同,不需要重新注册、不需要换令牌、不需要重新充值,模型列表与价格完全一致。
哪条更快因地区 / 运营商而异,我方不做承诺;若主线路不通或延迟偏高,把域名换成备用线路再试一次即可。
历史地址 https://aihubcc.cc/v1 仍然可用(与主线路同一入口),老代码无需改动。

鉴权

所有请求需携带 Authorization: Bearer sk-你的令牌 请求头。令牌在后台「令牌」页创建,分组必须与模型匹配(错误分组会返回"无可用渠道")。

错误码

HTTP含义处理计费
200成功正常取用成功才扣
400参数/素材问题按 message 改正不计费
401鉴权失败检查令牌不计费
404路径错误检查 URL(勿重复 /v1)不计费
429限速/额度不足降并发或充值不计费
502/5xx服务端临时故障直接重试不计费

FAQ

Q: 视频生成需要多久?

Omni 视频约 1-5 分钟,Grok 视频约 30s-3 分钟(时长越长越慢)。建议客户端超时 ≥300 秒。

Q: 失败会扣费吗?

不会。所有模型失败一律不扣费,仅成功出片/出图才计费。

Q: 参考图被内容策略拒绝怎么办?

包含可识别真人面孔的参考图可能触发 Gemini 内容策略。系统会自动尝试处理并重试。如仍失败,建议:使用非写实风格、虚构人物、侧面/背影/远景,或使用已授权的素材。

Q: 有多个接入地址,该用哪个?它们是不同账号吗?

不是不同账号——所有地址指向同一个平台,账号、令牌、余额、模型完全通用,随时可以互换,不需要重新注册、也不需要重新充值。默认用主线路 aihubcc.cc;若你所在网络连不上或延迟偏高,改用备用线路 aihubcc.cc(美东入口)再试一次。两条线路对不同地区 / 运营商各有优劣,我方不承诺哪条更快。

视频生成 · 内容审查避坑指南

适用于 omni-fast / veo 系列视频模型 · 帮你避开 Google 内容审查,提高一次出片成功率

📊 近期实际拒绝统计(系统自动更新 · 2026-08-24 03:07)
按本平台真实拒绝自动统计(已脱敏,不含任何原始提示词):真人/版权/不安全内容 7701 次、参考图被拦截 5472 次、内容审核拒绝 698 次、违禁/侵权 589 次。
绝大多数为真人写实 / 版权·IP / 参考图含敏感元素——请重点对照下方雷区①⑤与「安全改写对照表」。

一、先看这条报错

如果你收到:

This request didn't pass content review (e.g. an identifiable real person, unsafe content, or protected IP). Retrying or switching accounts won't help. Try a non-photorealistic style, a non-identifiable or fictional subject (back/side/distant view), or rights-cleared content, then resubmit.

中文意思:请求没通过内容审查(可能涉及:可识别真人 / 不安全内容 / 受保护版权)。

⚠️ 这是 Google 的「确定性拒绝」
❌ 重试没用 ❌ 换账号没用 ✅ 只能改提示词或换参考图
别反复提交同一个请求,立刻按下面的方法改。

二、六大高危雷区(命中必拒)

① 可识别的真人 / 名人 最常踩
"appears to show specific people" / "展示特定人物"
  • 写实真人正脸、特写人像
  • 任何名人、明星、政治人物、网红的名字或长相
  • 上传真人照片当参考图(尤其正脸特写)
  • 🔑 photorealistic(超写实)+ 真人 = 高危组合
② 未成年人 零容忍
"minors in dangerous or compromising situations"
  • 画面出现儿童 / 婴儿 / 青少年 / 学生
  • 哪怕本意无害,未成年人 + 任何危险或暧昧情境都会被拒
③ 性 / 裸露 / 暧昧 高危
"sexual situations"
  • 裸露、性感、情色、内衣、暧昧亲密、床戏、诱惑等
④ 暴力 / 危险 / 血腥 高危
"dangerous situations" / "可能涉及危险情况"
  • 暴力、血腥、武器、打斗、战争、爆炸
  • 自杀、自残、事故、伤口、尸体、虐待
  • 危险动作 / 危险情境
⑤ 受保护版权(IP / 品牌) 版权
"protected intellectual property" / "受保护知识产权"
  • 动漫游戏角色:皮卡丘、马里奥、奥特曼、米老鼠、艾莎、蜘蛛侠、哆啦A梦、火影等
  • 品牌商标:Nike、苹果、迪士尼、可口可乐、LV 等任何 logo
  • 影视形象:具名电影/电视剧角色、海报、截图
⑥ 其他敏感主题 易忽略
  • 医疗病症:皮肤病、痤疮、湿疹、体味、伤口、疾病 ← 真实案例踩过
  • 政治 / 宗教:领导人、宗教冲突、种族议题
  • 毒品 / 违法:毒品、吸毒等
  • 仇恨 / 歧视言论

三、安全改写对照表

❌ 高危写法✅ 安全改写
超写实真人 + 正脸特写改 3D动画 / 插画 / 卡通 风格;或侧面、背面、远景
上传真人照片生成不要正脸;用远景/侧背面;或转动漫/卡通风格
奥特曼大战怪兽「一个通用的巨人英雄」(不点名具体 IP)
情侣处理痤疮/皮肤病去掉病名,改成中性的「情侣约会」
小孩在火边玩耍改成「成年人」,或移除危险元素
含名人姓名改成「一位虚构的人物」

四、万能保险公式

不确定会不会被拒时,套这个组合最稳:

非写实风格 (non-photorealistic / 3D cartoon / illustration / anime)
+ 虚构、不具名的主体 (fictional, non-identifiable subject)
+ 脸部不可识别 (背面 / 侧面 / 远景)
+ 内容健康、无版权

五、提交前自检清单

✅ 提交前过一遍,一次成功率最高
  • ☐ 有没有真人/名人?→ 转非写实风格或脸部不可识别
  • ☐ 有没有儿童/青少年?→ 移除或改成年人
  • ☐ 有没有性/暴力/危险/血腥?→ 删除相关描述
  • ☐ 有没有动漫角色/品牌/影视 IP?→ 换原创通用描述
  • ☐ 有没有病症/政治/毒品等敏感词?→ 中性化
  • ☐ 参考图是不是真人照片?→ 换非写实图或远景
💡 两类报错要分清
「temporarily unavailable / 暂时不可用」 → 后端临时波动,可稍后重试
「didn't pass content review / 没通过内容审查」 → 确定性拒绝,必须改内容,重试无用

Flow · Veo 3.1 视频

当前对外提供两个视频别名:flow-veo-3-1(标准)与 flow-veo-3-1-fast(Fast)。两者均为异步任务,固定按次计费;失败任务不计费。

⚠️ 图生视频(要用参考图)必看 —— 上传图片只有一种正确姿势:

✅ 用 application/json 请求体,图片放进 image(单图)或 images(多图数组)字段,值必须是 base64(data URI,形如 data:image/jpeg;base64,....)。 经我方实测,只有这两个字段+base64 会真正被系统采用。

❌ 以下方式图片会被静默忽略,成片直接退化成"文生视频"(这就是"生成的视频没用到参考图"的原因):
  • 用 multipart/form-data 表单上传(含 Sora 风格的 input_reference / input_reference[0]);
  • 用 image_url / first_image_url / first_image / last_image_url 字段(无论传 URL 还是 base64,均实测不生效);
  • 传图片 URL(系统要自行抓取,外部图床/带鉴权的链接大多抓不到 → 当没传处理)。所以一律转 base64。

模型

模型能力计费
flow-veo-3-1Veo 3.1 标准视频生成;文生、单图首帧、首尾帧字段可用按次
flow-veo-3-1-fastVeo 3.1 Fast;请求结构与标准版相同,优先低延迟按次
价格是固定任务价,不是按秒价。即使传入 seconds,本组仍只扣一次对应模型的价格。失败任务不计费。

接口信息

项说明
提交任务POST /v1/videos(当前公开契约:JSON)
轮询进度GET /v1/videos/{task_id} → status=completed 后取顶层 video_url(兼容 data[0].url)
下载成片优先下载完成任务返回的 video_url;媒体已就绪后也可使用 /v1/videos/{task_id}/content
鉴权Authorization: Bearer sk-你的令牌
令牌分组gemini-flow-1(Gemini flow)
耗时通常数十秒至数分钟;客户端应轮询,不要重复提交同一任务

核心参数

字段类型必填默认
modelstring是只使用 flow-veo-3-1 或 flow-veo-3-1-fast
promptstring是画面、主体、动作、镜头和音频意图;建议写清主体数量与运动方向。无我方硬性长度上限(走 Veo 官方)
secondsstring / number否推荐字符串如 "4"。当前最低已验证 4 秒;实际成片可能被服务归一化为默认时长,以完成任务媒体信息为准
durationnumber / string否seconds 的兼容写法,例如 4;不要同时传两个不同值
resolutionstring否兼容字段,建议改用官网式 video_resolution;当前仅 720p(⚠️ 官方已取消 1080p,当前仅 720p)
sizestring否像素尺寸 1280x720/720x1280,或官网式纵横比 16:9/9:16(须同时传 video_resolution)
video_resolutionstring否官网式清晰度 仅 720p(官方已取消 1080p)。仅当 size 传纵横比时使用;网关转换为等价像素后发送
aspect_ratiostring否可传 16:9/9:16 作画幅意图;实测可提交,但服务可能归一化输出画幅
✅ imagestring(base64)否单图生视频主图 —— 经实测唯一生效的单图字段。必须传 data:image/...;base64,....(勿传图片 URL,系统抓不到会被忽略)
✅ imagesstring[](base64)否多图参考数组,最多 3 张,每个元素为 data:image/...;base64,....;经实测生效
❌ image_urlstring否实测不生效:图片被静默忽略、退化为文生视频。请改用 image
❌ first_image_url/first_image/last_image_urlstring否实测不生效;首尾帧当前无可用字段。单图用 image、多图用 images
❌ input_reference / multipart 文件否不支持(Sora 格式);用 multipart 上传或该字段,图片会被忽略、退化为文生视频
画幅与清晰度映射(已实测):官网式 size=16:9 + video_resolution=720p 等价于 1280x720;竖屏对应 720x1280。⚠️ 官方已取消 1080p,当前仅支持 720p;不能传 1080p / 4k 或其他未支持比例。
图片数量边界(已实测):单图用 image(1 张);多图参考用 images,最多 3 张,第 4 张会在执行阶段返回 INVALID_ARGUMENT。首尾帧(first/last)当前无可用字段。

提交方式

当前唯一生效的图片传法:Content-Type: application/json + image/images 字段 + base64(data URI)。不要用 multipart 文件上传,也不要传图片 URL(系统抓不到 → 图被忽略、退化为文生视频)。先把本地图片转成 data URI 再放进 image:

IMAGE_B64=$(base64 < ./start.jpg | tr -d '\n')
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"flow-veo-3-1-fast\",
    \"prompt\": \"让图片中的主体自然运动\",
    \"seconds\": \"4\",
    \"resolution\": \"720p\",
    \"image\": \"data:image/jpeg;base64,$IMAGE_B64\"
  }"

示例请求

文生视频(最低已验证参数)

BASE_URL="https://aihubcc.cc"
TOKEN="sk-你的Flow令牌"

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "flow-veo-3-1",
    "prompt": "一只橘猫在窗边抬头,阳光缓慢移动,固定机位,电影感",
    "seconds": "4",
    "size": "16:9",
    "video_resolution": "720p"
  }'

Fast 版把 model 改为 flow-veo-3-1-fast。竖屏把 size 改为 9:16。

单图生视频(I2V)—— 用 image + base64(唯一生效)

IMG=$(base64 < ./start.jpg | tr -d '\n')
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{
    \"model\": \"flow-veo-3-1-fast\",
    \"prompt\": \"保持人物外观和服装一致,让人物自然回头并向镜头走来\",
    \"seconds\": \"4\", \"resolution\": \"720p\",
    \"image\": \"data:image/jpeg;base64,$IMG\"
  }"

多图参考(最多 3 张)—— 用 images + base64

A=$(base64 < ./character.jpg | tr -d '\n'); B=$(base64 < ./scene.jpg | tr -d '\n')
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{
    \"model\": \"flow-veo-3-1-fast\",
    \"prompt\": \"把图 1 的人物置于图 2 的场景,镜头缓慢推进\",
    \"seconds\": \"4\", \"resolution\": \"720p\",
    \"images\": [\"data:image/jpeg;base64,$A\", \"data:image/jpeg;base64,$B\"]
  }"
❌ 首尾帧过渡(first / last frame)当前不可用:first_image_url / first_image / last_image_url 实测均不生效,请改用单图 image 或多图 images。

轮询取片

TASK_ID="task_xxx"
# shell 轮询示例(每 5 秒一次)
while :; do
  BODY=$(curl -fsS "$BASE_URL/v1/videos/$TASK_ID" -H "Authorization: Bearer $TOKEN") || exit 1
  STATUS=$(printf '%s' "$BODY" | jq -r '.status // "unknown"')
  echo "status=$STATUS"
  case "$STATUS" in
    completed|success|succeeded) break ;;
    failed|error) printf '%s\n' "$BODY" | jq .; exit 1 ;;
  esac
  sleep 5
done
VIDEO_URL=$(printf '%s' "$BODY" | jq -r '.video_url // .data[0].url // empty')
curl -fL "$VIDEO_URL" -o flow-veo-result.mp4

完成任务通常返回顶层 video_url;客户端应同时兼容 data[0].url。下载地址是临时地址,请及时转存。

Python 完整请求

import time, requests
BASE = "https://aihubcc.cc"
H = {"Authorization": "Bearer sk-你的Flow令牌", "Content-Type": "application/json"}
# 提交
task = requests.post(f"{BASE}/v1/videos", headers=H, json={
    "model": "flow-veo-3-1-fast",
    "prompt": "一只橘猫在窗边抬头,阳光缓慢移动,固定机位,电影感",
    "seconds": "4", "size": "16:9", "video_resolution": "720p",
}).json()
tid = task["task_id"]
# 轮询
while True:
    r = requests.get(f"{BASE}/v1/videos/{tid}", headers=H).json()
    if r["status"] in ("completed", "success", "succeeded", "failed"):
        break
    time.sleep(5)
# 取 URL 下载(兼容顶层 video_url 与 data[0].url)
url = r.get("video_url") or (r.get("data") or [{}])[0].get("url")
open("flow-veo.mp4", "wb").write(requests.get(url).content)

注意事项

// 提交
{ "task_id": "task_xxx", "status": "queued", "progress": 0 }
// 轮询完成
{ "task_id": "task_xxx", "status": "completed", "progress": 100,
  "video_url": "https://sd.oaibox.xyz/d/dl/video/xxxx.mp4" }
// 失败
{ "task_id": "task_xxx", "status": "failed", "error": { "code": "...", "message": "..." } }
  • queued/in_progress:继续轮询,不要重复 POST。
  • completed:优先下载 video_url。若立刻请求 /content 得 409 video_not_ready,再查询一次任务后下载返回的 URL。
  • failed:本次任务不计费;修改提示词 / 图片 / 参数后再提交。
  • 成片实际时长、宽高可能与请求的 seconds/resolution/aspect_ratio 不完全相同,以完成任务和媒体探测为准。

建议

  • 当前最低已验收组合:seconds="4" + 720p。成片可能被归一化(如 4 秒→8 秒),不是可依赖的固定规格。
  • 图生视频只认 image(单图)/ images(多图,≤3 张)+ base64;image_url/first_image_url/input_reference/multipart 均实测不生效(图被忽略→变文生视频)。首尾帧当前不可用。
  • 图片用 JPEG/PNG/WebP,务必转成 base64 data URI(不要传 URL,系统要自行抓取,外链/带鉴权的大多抓不到)。
  • 提示词写清"图 1 是谁 / 做什么""首帧到尾帧如何过渡",比堆素材更稳定。
  • 示例中的令牌 / URL / 任务 ID 均为占位符,勿把真实令牌提交到前端或公开仓库。

Flow · Omni 1.1 Flash Video

🎬 Flow · Omni 1.1 Flash:一个模型名 flow-omni-1.1-flash,支持文生视频、多图参考图生视频、视频编辑(v2v)三种模式,按请求里的素材自动切换。无水印、时长 4 / 6 / 8 / 10 秒可选(默认 8 秒)、720p出片,OpenAI 兼容异步接口,按次计费、失败不计费。画幅朝向用 aspect_ratio(16:9 横屏默认 / 9:16 竖屏),也可用 size 指定。

模型

模型模式分辨率计费
flow-omni-1.1-flash文生视频 / 多图参考图生视频720p按次
flow-omni-1.1-flash(v2v)视频编辑(传参考视频 input_reference,含图 + 视频同时参考)720p按次
按次计费:文生视频、多图参考图生视频 ;视频编辑(v2v,请求里带参考视频 input_reference)。时长可选 4 / 6 / 8 / 10 秒(不传默认 8 秒),四档同价,720p,失败不计费。

三种模式(按素材自动切换)

模式怎么触发说明
文生视频(T2V)只传 prompt,不带图 / 视频纯文字生成视频
图生视频(I2V)prompt + images(或单张 image)多图参考图生视频
视频编辑(V2V)prompt + input_reference(参考视频)在原视频基础上按 prompt 编辑(如加特效 / 改天气 / 换风格);参考视频 ≤15 秒,可传 base64(本站自动托管)或公网 URL(须中国可访问)
选档优先级:带参考视频(input_reference)→ 视频编辑;否则带参考图(images)→ 图生视频;都不带 → 文生视频。三种模式同一模型名 flow-omni-1.1-flash;文生 / 图生 ,视频编辑(v2v)。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos(JSON)
轮询进度GET /v1/videos/{task_id},status=completed 表示完成
下载成片用轮询返回的顶层 video_url 直接下载 mp4(地址已脱敏、我方域名)
鉴权Authorization: Bearer sk-你的令牌
令牌分组Gemini flow
耗时通常 1–2 分钟;客户端应轮询,不要重复提交同一任务

核心参数

参数类型必填默认说明
modelstring是固定 flow-omni-1.1-flash(文生 / 图生 / 视频编辑都用这一个名字)
promptstring是画面 / 运动描述
resolutionstring否720p固定 720p(本模型仅提供 720p)
aspect_ratiostring否16:9决定画幅 / 朝向:16:9(横屏,默认)/ 9:16(竖屏)。不传即横屏,要竖屏传 9:16
sizestring否也可用 WxH 指定朝向(如 1280x720 横 / 720x1280 竖);传了 size 时以它为准。清晰度恒 720p
secondsstring(必须字符串)否"8"成片时长(秒):可选 "4" / "6" / "8" / "10",四档同价。必须传字符串——写成数字 10 会报 invalid_json;请用 seconds,duration 不生效;传档位以外的值(如 "7")按 8 秒出片、不报错
images数组(URL / base64)否图生视频:多图参考(建议 ≤6 张,多传模型可能只取前几张、不提升效果);公网可直取 URL 或 data:image/...;base64,。单张也可用 image
input_referencestring(URL 或 base64)否(v2v 必填)仅视频编辑(v2v)用:文生 / 图生视频无需此字段;做 v2v 时必填——参考视频,可传公网 URL(≤15 秒、须中国可访问)或 base64(data:video/mp4;base64, 或裸 base64;本站自动托管为中国可达链接,无需自己找公网地址;mp4/mov、解码后 ≤64MB);传了即进入编辑模式,按 prompt 在原视频上编辑
⚠️ 时长用 seconds 传「字符串」:可选 "4" / "6" / "8" / "10",不传默认 8 秒,四档同价、不加钱。写成数字(10)会直接报 invalid_json;duration 字段不生效;档位以外的值(如 "7")按 8 秒出片、不报错。朝向用 aspect_ratio(或 size),清晰度恒 720p。

时长档位(实测对照 · 务必只传这四个值)

传 seconds实际成片时长帧数(24fps)说明
"4"4.0 秒96正常
"6"6.0 秒144正常
"8" 或 不传8.0 秒192默认档
"10"10.0 秒240正常
四档以外的值(如 "7"、"15")8.0 秒192⚠️ 不报错、静默按 8 秒出片——你以为拿到 7 秒,实际是 8 秒
数字 10(没加引号)请求直接被拒:400 invalid_json
duration 字段8.0 秒该字段不生效,等同没传时长
⚠️ 这是本接口最容易踩的坑:传错档位不会报错。平台对 seconds 不做档位校验,四档以外的值会直接按默认 8 秒出片,且不返回任何警告或提示。所以:
① 只传 "4" / "6" / "8" / "10" 四个字符串之一,别传 "5" / "7" / "12" 这类值;
② 若时长对你的流程重要(剪辑对轨、投放平台时长限制、按秒二次计费等),请在拿到成片后自行核验实际时长(播放器属性,或 ffprobe -v error -show_entries format=duration -of csv=p=0 out.mp4),不要以请求参数为准。
上表时长为实测值,各档位误差在 ±0.02 秒内。

画幅与朝向(横屏 / 竖屏怎么定)

想要用 aspect_ratio或用 size输出(恒 720p)
横屏(默认)不传 或 "16:9""1280x720"1280 × 720
竖屏"9:16""720x1280"(或 "1080x1920")720 × 1280
比例不是必填:不传默认出横屏 16:9(1280×720);要竖屏传 aspect_ratio:"9:16",或用 size 传竖版 WxH(如 720x1280、1080x1920——超过 720p 会自动缩放到 720p)。同时传 size 和 aspect_ratio 时以 size 为准。清晰度恒 720p;图生视频同样用 aspect_ratio / size 指定朝向。

示例请求(curl)

BASE_URL="https://aihubcc.cc"
TOKEN="sk-你的令牌"

# 1) 文生视频(720p 横屏,默认)
# seconds 可选 "4"/"6"/"8"/"10"(字符串),不传默认 8 秒,四档同价
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"flow-omni-1.1-flash","prompt":"日出时分平静的湖面雾气升腾,电影感镜头","seconds":"10"}'

# 2) 文生视频(竖屏 9:16)
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"flow-omni-1.1-flash","prompt":"竖屏短视频:城市夜景延时,霓虹流光","aspect_ratio":"9:16"}'

# 3) 图生视频(参考图,URL 或 base64)
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"flow-omni-1.1-flash","prompt":"参考这些图片生成连贯运镜","images":["https://img1.jpg","https://img2.jpg"]}'

# 4) 视频编辑 v2v(传参考视频 input_reference:公网 URL 或 base64 data-uri,≤15 秒)
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"flow-omni-1.1-flash","prompt":"给这段视频加上飘雪,保持原画面","input_reference":"https://your-public-video.mp4"}'
# 或把参考视频转 base64(本站自动托管为中国可达链接,无需公网地址):把 input_reference 换成 "data:video/mp4;base64,<BASE64>"
# => {"task_id":"task_xxx","status":"queued",...}

Python 完整示例(提交 → 轮询 → 下载)

import time, requests

BASE = "https://aihubcc.cc"
TOKEN = "sk-你的令牌"
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

# 提交:文生 720p 横屏。
#   竖屏 -> 加 "aspect_ratio": "9:16"
#   图生 -> 加 "images": ["https://.../a.jpg", "https://.../b.jpg"](也支持 base64)
#   视频编辑 -> 加 "input_reference": "https://.../clip.mp4"(也支持 base64: data:video/mp4;base64,)  # 参考视频 ≤15s
payload = {
    "model": "flow-omni-1.1-flash",
    "prompt": "日出时分平静的湖面雾气升腾,电影感镜头",
    "aspect_ratio": "16:9",     # 16:9 横屏 / 9:16 竖屏
}
r = requests.post(f"{BASE}/v1/videos", headers=H, json=payload, timeout=60)
r.raise_for_status()
task = r.json()
task_id = task.get("task_id") or task.get("id")
print("task_id:", task_id)

# 轮询直到完成(通常 1-2 分钟,与时长档位无关)
while True:
    time.sleep(5)
    d = requests.get(f"{BASE}/v1/videos/{task_id}", headers=H, timeout=30).json()
    status = str(d.get("status", "")).lower()
    print("status:", status, d.get("progress"))
    if status == "completed":
        video_url = d.get("video_url") or (d.get("data") or [{}])[0].get("url")
        print("成片:", video_url)
        break
    if status == "failed":
        raise RuntimeError(d.get("error") or d)

# 下载成片:用轮询返回的 video_url(地址已脱敏、我方域名)
mp4 = requests.get(video_url, timeout=180)
open("out.mp4", "wb").write(mp4.content)
print("已保存 out.mp4")

Python 示例:图 + 视频同时参考(全能模式)

flow-omni-1.1-flash 支持同时传参考视频(input_reference,1 段)+ 参考图(images,可多张)。⚠️ images 必须是数组 ["u1","u2"],不要写成 images0 / images1(部分客户端会把数组拆成索引键,导致参考图不生效)。参考视频只支持 1 段;参考图建议 ≤6 张。带参考视频即按视频编辑(v2v)计费。

import time, base64, requests

BASE = "https://aihubcc.cc"
TOKEN = "sk-你的令牌"
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

def data_url(path, mime):            # 本地文件转 base64 data-uri(可选)
    b64 = base64.b64encode(open(path, "rb").read()).decode()
    return f"data:{mime};base64,{b64}"

# 全能模式:参考视频(input_reference,1 段) + 参考图(images,可多张)同时用。
# ⚠ images 必须是【数组】["u1","u2"],不要写成 images0 / images1(会导致参考图不生效)。
payload = {
    "model": "flow-omni-1.1-flash",
    "prompt": "参考这段视频的运动,把主体换成参考图里的形象,平滑运镜,电影感",
    "aspect_ratio": "16:9",
    "seconds": "10",            # "4"/"6"/"8"/"10",字符串;不传默认 8 秒,四档同价
    # 参考视频:1 段,公网 URL(≤15 秒、中国可访问)或 base64(本站自动托管)
    "input_reference": "https://你的公网视频.mp4",   # 或 data_url("clip.mp4", "video/mp4")
    # 参考图:数组,建议 ≤6 张;URL 或 base64
    "images": [
        "https://你的图1.jpg",
        data_url("图2.png", "image/png"),
    ],
}

r = requests.post(f"{BASE}/v1/videos", headers=H, json=payload, timeout=60)
r.raise_for_status()
task_id = r.json().get("task_id") or r.json().get("id")
print("task_id:", task_id)

while True:                          # 轮询直到完成(通常 1-2 分钟,与时长档位无关)
    time.sleep(5)
    d = requests.get(f"{BASE}/v1/videos/{task_id}", headers=H, timeout=30).json()
    print("status:", d.get("status"), d.get("progress"))
    if str(d.get("status", "")).lower() == "completed":
        video_url = d.get("video_url") or (d.get("data") or [{}])[0].get("url")
        break
    if str(d.get("status", "")).lower() == "failed":
        raise RuntimeError(d.get("error") or d)

open("out.mp4", "wb").write(requests.get(video_url, timeout=180).content)
print("成片:", video_url)
⚠️ 当参考视频是内容很强的真实视频(v2v 编辑)时,模型会偏向保留原视频、参考图影响被弱化;想让参考图更明显,把 prompt 写清楚(例如“把画面主体换成参考图里的形象”)。参考视频须公网可访问、中国可下载、≤15 秒,或用 base64(本站自动托管为中国可达链接)。

轮询取片

# 轮询直到 status=completed
curl -sS "$BASE_URL/v1/videos/task_xxx" -H "Authorization: Bearer $TOKEN"
# => {"status":"completed","video_url":"https://sd.oaibox.xyz/d/dl/xxx.mp4",...}

# 下载成片:用上面返回的 video_url(mp4,地址已脱敏、我方域名)
curl -sSL "<上面返回的 video_url>" -o out.mp4

轮询间隔建议 3–5 秒、客户端超时 ≥ 300 秒;勿重复提交同一任务。

注意事项

  • 一个模型名 flow-omni-1.1-flash、自动切换:带参考视频(input_reference)= 视频编辑;带参考图(images)= 图生视频;不带 = 文生视频。文生 / 图生 ,视频编辑(v2v)。
  • 朝向用 aspect_ratio(16:9 横屏默认 / 9:16 竖屏),也可用 size 的 WxH;清晰度恒 720p。
  • 比例非必填:不传默认横屏 16:9;要竖屏传 aspect_ratio:"9:16"。
  • 无水印、时长 4 / 6 / 8 / 10 秒可选(默认 8 秒、四档同价);文生 / 图生 、视频编辑(v2v);按次计费、失败不计费。
  • ⚠️ 时长只传 "4" / "6" / "8" / "10"(字符串):传四档以外的值不会报错,会静默按 8 秒出片;写成数字(没加引号)会报 invalid_json。时长要紧的场景请核验成片实际时长,见上方「时长档位」一节。
  • 多图参考 images:参考图须公网可直接下载或用 base64(需登录 / 内网 / 拦爬虫的链接会失败)。
  • 视频编辑 input_reference:参考视频 ≤15 秒。可传 base64(data:video/mp4;base64, 或裸 base64;本站自动托管为中国可达链接,mp4/mov、解码后 ≤64MB)或公网 URL(须中国可直接下载;国外 / 需登录的 URL 会取不到→退化为文生)。
  • 生成约 1–2 分钟;轮询取片、勿重复提交同一任务。
  • 提示词与参考图 / 视频避免暴露 / 未成年 / 血腥暴力等敏感内容,否则被内容安全拦截(不计费)。

Omni 视频生成

基于 Gemini Veo 的视频生成服务,支持文生视频、图生视频(最多 5 张参考图)、视频转视频(V2V,最多 2 个参考视频)。

模型

模型能力计费
omni-fast文生视频 / 图生视频按次
omni-fast-v2v视频转视频(V2V)按次
omni-fast-no-water文生/图生视频(无水印)按次
omni-fast-v2v-no-waterV2V(无水印)按次
omni-extend-20s视频续写(原片 + 约 8~10 秒)按次
omni-extend-20s-no-water视频续写(无水印)按次
无水印模型输出经过自动清洗处理,完成前可能多一个 processing 阶段,稍慢。失败不计费。

接口信息

项说明
提交任务POST /v1/videos(JSON 或 multipart)
轮询进度GET /v1/videos/{task_id}
下载成片GET /v1/videos/{task_id}/content 或返回的 data[0].url
鉴权Authorization: Bearer sk-你的令牌
令牌分组gemini-fast

核心参数

参数类型必填默认说明
modelstring是模型名,见上表
promptstring是视频描述提示词(无我方硬性长度上限,走 Gemini 官方)
aspect_ratiostring否16:9画幅比例:16:9(横)、9:16(竖)
seconds / durationstring/int否10时长秒数(接收但当前 Gemini 固定输出约 10 秒)
image_urlstring否单张参考图(公网 URL 或 data:image Base64)
first_image_urlstring否首帧参考图 URL
last_image_urlstring否末帧参考图 URL
video / video_urlstring否V2V 源视频 URL(≤8MB、≤1920x1080)。传 2 个视频时可用这两个字段各放一个
videosstring[]否V2V 多源视频数组(最多 2 个,每个 ≤8MB)
imagesstring[]否多参考图数组(最多 5 张,每张 ≤8MB)

Multipart 提交(支持文件上传)

字段说明
input_reference / input_reference[]参考图文件上传(最多 5 张,每张 ≤8MB)。input_reference[] 为浏览器画布 / Sora 兼容客户端的数组写法:单张=图生视频(首帧动画),多张=多参考图;两种写法均可
input_video / input_video2 / videos[]V2V 源视频文件上传(每个 ≤12MB,最多 2 个)。传 2 个视频用 input_video+input_video2;浏览器画布 / Sora 兼容客户端用数组写法 videos[](同名重复),网关均可解析

示例:文生视频

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "prompt": "雨夜霓虹街道,镜头缓慢推进,电影感光影",
    "aspect_ratio": "16:9"
  }'

让它照着念台词(只有文生视频做得到)

omni-fast 文生 / 图生视频会把你写的英文台词一字不差地念出来——把台词用引号写进提示词即可。8 个不同场景实测逐字 8/8,按序命中率 1.00。

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "prompt": "A woman in a bright studio holds up a wireless earbud case to the camera. She speaks clearly to camera and says, \"This one lasts nine hours on a single charge.\" Bright commercial product-ad look.",
    "aspect_ratio": "16:9"
  }'
要照着念台词,选哪个模型逐字命中说明
omni-fast 文生 / 图生视频 + 引号台词8/8✅ 想要精确台词就用它
omni-extend-20s 续写 + 引号台词0/6❌ 会说话、会切题,但措辞自己编
omni-extend-20s 续写 + 旁白句式0/7❌ 更糟,7 条里 3 条整段无声
三组用的是同样 8 个场景、同一句台词,只换模型 / 写法这一个变量。
所以:要精确台词 → 文生视频;要保住真人和商品细节 → 续写 + 后期配音。两者不可兼得,请按需求选一边。

示例:图生视频

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "prompt": "保持人物一致,缓慢走动",
    "image_url": "https://your-cdn.com/photo.jpg",
    "aspect_ratio": "16:9"
  }'

示例:视频转视频(V2V)

# Multipart 文件上传
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -F "model=omni-fast-v2v" \
  -F "prompt=将画面风格转换为赛博朋克风" \
  -F "input_video=@source.mp4"

示例:双视频 V2V(2 个参考视频)

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast-v2v",
    "prompt": "融合两段素材,保持连续运动",
    "videos": ["https://your-cdn.com/a.mp4", "https://your-cdn.com/b.mp4"],
    "aspect_ratio": "16:9"
  }'

也可用 multipart/form-data 上传两个视频文件(字段 input_video + input_video2):

# 双视频 · multipart 文件上传
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -F "model=omni-fast-v2v" \
  -F "prompt=第一个视频的人和第二个视频的人一起跳舞" \
  -F "input_video=@person1.mp4" \
  -F "input_video2=@person2.mp4"

视频续写(omni-extend-20s)

把你自己的一段短视频接长:上传 12 秒以内的视频,返回「原片 + 约 8~10 秒新画面」。10 秒素材约得 18~20 秒成片,原片内容原样保留,只在后面自然接上。

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-extend-20s",
    "videos": ["https://your-cdn.com/clip.mp4"],
    "prompt": "continue naturally"
  }'

也可用 multipart/form-data 上传本地文件:-F "model=omni-extend-20s" -F "input_video=@clip.mp4"

要点说明
续写提示词越简单越好,推荐直接写 continue naturally。在续写阶段详细描述画面元素(例如「把卡片转向镜头」)明显更容易触发内容审核而失败;创意请写在原片里。
画幅不传 aspect_ratio 时自动跟随原片,竖屏素材不会被裁切;传了则以你指定的为准。
素材时长必须 ≤ 12 秒,超出会直接拒绝并提示,不消耗额度。
音频加 "audio": "mute" 可得到无声画面,便于后期配音。模型自带的声音不会延续原片台词,口播类建议后期配音。
必须带视频纯文字请求会被拒绝——该模型只负责续写,不负责从零生成。
耗时与超时中位约 3.5 分钟,90 分位约 7 分钟,最慢见过 12 分钟。客户端轮询超时请设 ≥ 15 分钟,不要因为客户端超时就重新提交——先用原 task_id 继续轮询。
参考图字段别写错JSON 请求体里请用 images(数组,最多 5 张)。
input_reference 在 JSON 里只能是单个字符串,写成数组会被网关直接挡下:invalid_json: cannot unmarshal array ... input_reference of type string。要传多张就用 images。
video_action可选。用 omni-extend-20s 时网关默认就是续写;显式写 "video_action": "extend" 也可以,行为一致。
提示词能控什么能控「做什么」,不能控「说什么」。写动作、道具、运镜都有效(例如「旁边画一个红色圆圈」会真的画出来)。
写台词不会被拒(20 次实测通过 12 次,与不写台词无差别;另一组 16 次续写只有 1 次被拒),但不会照着念——逐字命中 0/18。它会说话、会切题、语种也对,只是措辞由模型自己编。需要精确话术就出无声画面后期配音。
想让它讲某个话题,用画面暗示:提示词里放「电池图标」,旁白就会讲续航。
加参考图的代价参考图内容确实会进画面(提示词没提到它也会进),指定道具会被加进原场景而不是替换场景,实测有效 10/11。
早期小样本曾观察到「带图更容易退化成等长重拍」,但扩到各 20 次后没有复现(带图 11/20、不带图 10/20)。带图不额外计费,可以按需使用。
无论带不带图都要校验:输出时长 < 原片时长 + 2 秒 即为重拍——没加长但已扣额度,整体约 11%。
原片保真度续写对原片是逐帧原样保留(首帧相关度实测 1.000),人物、商品、机位、光线全部锁死。这是唯一能保住真人和商品细节的路径。
不要用照片代替视频用「一张照片 + 文生视频」做真人带货,人物不会是照片里的那个人——实测首帧相关度只有 0.29~0.39,商品五金件也会被重画。真人主播 / 商品细节必须严格一致时,请提供真实拍摄的短视频走续写,不要走图生视频。
口播台词语种可以指定,内容不可以。提示词里写明英语 / 中文 / 粤语都能生效,实测粤语链式 8 轮全程保持粤语。
但续写不会逐字念你写的台词——它会说话、会切题、语种也对,措辞却是自己编的。单变量实测逐字 0/6(并入更早的 12 条共 0/18),按序命中率仅 0.25。
⚠️ 千万不要写成旁白句式(a voice over says: "..."):实测逐字 0/7,且 7 条里有 3 条整段完全无声,比直接写引号台词更糟。
需要精确话术:出无声画面后期配音。要「照着念」请改用 omni-fast 文生视频,见下方对照。
收到 content_policy 怎么办不要重试,换素材(换题材)。
先说清楚一件事:这个错误码的名字有误导性。我们抓了 168 次失败逐条看过,真正被内容审核判掉的只有 1 次;绝大多数是服务没把这次请求派给视频模型——请求在更前面一层就被挡下了,跟你这条文件"干不干净"基本无关。所以画面完全正常的素材照样可能收到它。
后果是:任何针对文件本身的补救都没用。专项对照实测——换编码重传 1/10,什么都不做 2/15,重试比不重试还差(多烧 10~15 分钟)。改提示词、改码率、改分辨率同理。
它占全部失败的 88%。拒绝不生成视频、不扣额度。
唯一有效的做法是换题材——见下面的「题材成功率」表,幼儿类 0/14、产品广告 14/14,差距就在这里。
参考图控制可同时传 images(最多 5 张,data URI 或公网 URL)来控制续写段出现的商品或元素。人设、画风、场景由原片锁定,商品由参考图决定——带货场景常用。参考图建议用商品图 / 白底图,尽量不要带人。加图不额外计费。

示例:续写时用一张商品图控制画面中出现的商品——

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-extend-20s",
    "videos": ["https://your-cdn.com/host.mp4"],
    "images": ["https://your-cdn.com/product.jpg"],
    "prompt": "continue naturally"
  }'

用 URL 传参考视频和参考图

不想传 base64、也不想走 multipart,可以直接给公网 URL,视频和图片都支持。服务端会替你下载(经代理,不暴露你我的 IP),你只要保证链接能被匿名 GET 到。

# 参考视频 + 参考图,全部用 URL
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-extend-20s",
    "prompt": "continue naturally",
    "videos": ["https://your-cdn.com/clip.mp4"],
    "images": ["https://your-cdn.com/product.jpg"]
  }'

字段对照

要传的东西推荐字段也接受上限
参考视频videos(数组)video_url / video / input_video(各放一个)最多 2 个,每个 ≤12MB、≤12 秒、≤1920×1080
参考图images(数组)image_url / first_image_url / last_image_url最多 5 张,每张 ≤12MB

同一个字段里 URL 和 data:...;base64, 可以混着写,服务端按前缀自己分辨。multipart 也能混用:视频用 -F "input_video=@clip.mp4" 上传文件,图片同时用 -F "image_url=https://..." 给链接。

URL 必须满足

要求说明
匿名可下载服务端下载时不会带你的任何鉴权头。需要签名/登录才能访问的私有链接一律取不到,请用预签名直链(presigned URL)或公开对象。
直链,返回 200要指向文件本身,不是网盘的分享页 / 播放页。302 跳转可以,会自动跟随。
时效要够预签名 URL 的有效期建议留 30 分钟以上:任务排队 + 生成的中位耗时约 3.5 分钟,最慢见过 12 分钟。
Content-Type不强制。服务端识别不了时按 video/mp4 / image/jpeg 兜底。
一个容易踩的坑:把视频 URL 放进 input_reference / reference 这类混合字段时,是靠扩展名判断它是不是视频的(.mp4 .mov .webm .m4v .avi .mkv .mpeg .ogv,查询串会先被剥掉)。
所以形如 https://cdn.example.com/asset/9f3a1c 这种没有扩展名的直链会被当成图片,请求就退化成了「图生视频」。
解决办法:视频一律用 videos / video_url 明确指定,这两个字段不看扩展名。

题材决定成败(实测 140 次)

我们用 7 组不同的提示词写法 × 20 条不同题材的源片各跑了一遍。结论很干脆:提示词怎么写几乎不影响成功率,源片是什么题材才是决定性因素。

七组提示词的成功率全部落在 10~13 / 20,差异在噪声范围内:

提示词写法成功提示词写法成功
4 词极短(continue naturally)13/20中文提示词11/20
25 词中等10/20指定台词12/20
110 词长提示12/20带参考图 / 带分镜图11/20 / 13/20

所以直接用最短的 continue naturally 就行,把精力花在选素材上。

✅ 高成功率题材实测❌ 高风险题材实测
产品广告14/14幼儿 / 亲子0/14
产品演示 / 教程13/14纯动作、无对白1/14
口播带货15/21情绪冲突剧情9/28
动物 / 自然12/14
风景 / 空镜11/14
「纯动作无对白」要特别小心:它不报错、状态是 completed,但实测 5 次全部是等长重拍,而且画幅被翻转。一定要按时长校验,别直接交付。

不同失败的处理方式是相反的

现象怎么办
重拍(输出时长 < 原片 + 2 秒)原地重试,最多 3 次,多数第 2 次就过
video_route_misroute原地重试,偶发
content_policy不要重试,换素材(素材级判定,重试无效)

做 20 秒以上:尾部窗口链式

失败率是跟着你喂进去的参考视频长度走的,不是跟着输出长度走的:

参考视频长度10 秒20 秒28 秒
成功2/22/40/2

所以想接到 30 秒、60 秒,千万不要把整条成片喂回去,而是每轮只截最后 10 秒:

第 1 轮:一段 10 秒素材                              → 成片 10 秒
第 2 轮:截成片最后 10 秒 → 续写 → 返回 20 秒
        只保留新增的后 10 秒,接到片尾                → 成片 20 秒
第 3 轮:再截最后 10 秒 → 续写 → 只留新增的后半段     → 成片 30 秒
...依此类推

这样喂进去的参考永远停在 10 秒,一直待在高成功率区间。实测这样连做 8 轮做到 79 秒,全程画幅、人物、旁白语种都保持一致。

三条硬规则:
① 每轮都必须能原地重试——链式的风险是累乘的,链式重拍率约 27%,高于用原始素材的 11%。
② 每轮都要按时长校验重拍,重拍的那一轮不能接进成片。
③ 建议控制在 6~8 轮以内;轮次越多,画面漂移越明显。

多角色内容:身份要在每一段里重申

续写对原片是逐帧保真的,但如果你是用「参考图 + 图生视频」起头再链式接长,要注意:参考图锁得住「长什么样」(构图、服装、场景、光线),锁不住「是谁」。实测同一套参考图,第二段里的白人角色会被重新生成成亚洲面孔。

做法:把人种、发色、年龄、体型、服装写进每一段的提示词,逐字重复,不要用「她」「那个女人」这类指代。

轮询取片

curl https://aihubcc.cc/v1/videos/{task_id} \
  -H "Authorization: Bearer sk-xxx"

# 完成后(优先读顶层 video_url,兼容 data[0].url;均为完整下载直链):
# {"status":"completed",
#  "video_url":"https://download.oaibox.xyz/v1/videos/vid-xxxx/content",
#  "data":[{"url":"https://download.oaibox.xyz/v1/videos/vid-xxxx/content"}]}

Veo-Clean 去水印

上传带水印的视频,系统自动去除水印后返回去水印成片。异步任务,流程与视频生成一致。

模型

模型能力计费
veo-clean视频去水印按秒
按视频实际时长计费,例如 10 秒视频 = 。失败不计费,不消耗 Gemini 生成配额。

接口信息

项说明
提交任务POST /v1/videos(仅 multipart,需上传文件)
轮询进度GET /v1/videos/{task_id}
下载成片GET /v1/videos/{task_id}/content 或返回的 data[0].url
鉴权Authorization: Bearer sk-你的令牌
令牌分组gemini-fast

核心参数

参数类型必填默认
modelstring是固定 veo-clean
input_videofile是带水印视频文件,≤20MB,必须 multipart 上传
promptstring是去水印指令,通常填 remove watermark;网关要求必填,缺省会返回 400 prompt is required

提交方式

仅支持 multipart/form-data(必须上传视频文件,不支持 JSON / URL 传视频)。字段 input_video 放本地文件。

示例请求

# Multipart 上传去水印
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -F "model=veo-clean" \
  -F "prompt=remove watermark" \
  -F "input_video=@watermarked.mp4"

轮询取片

curl https://aihubcc.cc/v1/videos/{task_id} \
  -H "Authorization: Bearer sk-xxx"
# 完成后:
# {"status":"completed","data":[{"url":"/v1/videos/{task_id}/content"}]}

Python 完整请求

import time, requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx"}
# 提交(multipart)
with open("watermarked.mp4", "rb") as f:
    task = requests.post(f"{BASE}/videos", headers=H,
        data={"model": "veo-clean", "prompt": "remove watermark"}, files={"input_video": f}).json()
tid = task["task_id"]
# 轮询
while True:
    r = requests.get(f"{BASE}/videos/{tid}", headers=H).json()
    if r["status"] in ("completed", "failed"):
        break
    time.sleep(3)
# 下载
url = r["data"][0]["url"]
if url.startswith("/"):
    url = "https://aihubcc.cc" + url
open("clean.mp4", "wb").write(requests.get(url, headers=H).content)

注意事项

  • 仅支持 multipart/form-data 提交(需上传视频文件)。
  • 视频文件大小限制 20MB。
  • 处理时间通常 20–60 秒(取决于视频长度),清洗前可能多一个 processing 阶段。
  • 不涉及 Gemini 视频生成,不消耗生成配额;失败不计费。

建议

  • 源视频尽量 ≤20MB、时长越短处理越快。
  • 清晰源视频去水印效果更好;严重压缩 / 低清源可能残留痕迹。

Gemini 高速文本模型

高速分组的文本 / 多模态对话模型,支持 OpenAI Chat 兼容接口。

模型

AIHUB Gemini 高速分组(gemini-fast)

模型能力多模态附件计费
gemini-4-argon旗舰档,1M 上下文 / 复杂推理最强✅ 图 / 视频 / 音频按 token
gemini-3.8-flash-app当前主力高速文本,最省✅ 图 / 视频 / 音频按 token
gemini-3.5-flash高速文本,综合能力更强✅ 图 / 视频 / 音频按 token
gemini-3.1-proPro 档,长文 / 复杂推理✅ 图 / 视频 / 音频按 token
gemini-3.1-flash-lite轻量高速✅ 图 / 视频 / 音频按 token
gemini-3.5-flash-lite轻量高速(新版)✅ 图 / 视频 / 音频按 token
gemini-2.0-flash-thinking思维链档,最省✅ 图 / 视频 / 音频按 token
以上 7 个模型走同一条服务链路,多模态附件行为一致。同分组还有 gemini-image / gemini-image-pro(图像生成)与 gemini-music(音乐),见各自章节。不同客户分组倍率可能不同,实际单价以账号「模型广场」为准。

接口信息

项说明
请求POST /v1/chat/completions(OpenAI 兼容,同步;stream:true 可流式)
POST /v1beta/models/{model}:generateContent(Gemini 原生格式;流式用 :streamGenerateContent?alt=sse)
鉴权OpenAI 格式用 Authorization: Bearer sk-你的令牌;Gemini 原生格式用 x-goog-api-key: sk-你的令牌
令牌分组gemini-fast

核心参数

参数类型必填默认说明
modelstring是见上表模型名。
messagesarray是OpenAI 消息数组;content 可含图片实现多模态
streambool否false是否流式返回
temperaturenumber否采样温度
max_tokensint否最大输出 token
提示词长度上限 = 模型上下文窗口(走 Gemini 官方,可容纳很长文本),无我方硬性字符限制。

提交方式

标准 OpenAI Chat JSON。可直接用 OpenAI SDK:把 base_url 指向网关、api_key 用你的令牌即可。

示例请求

# 基础对话(非流式)
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [
      {"role": "user", "content": "用一句话介绍你自己"}
    ]
  }'

# 流式输出(stream: true,SSE 实时打字效果)
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [
      {"role": "user", "content": "用三点总结人工智能的发展趋势"}
    ],
    "stream": true
  }'

# 多模态图文对话(图片传公网 URL 或 base64 Data URI)
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "描述这张图片中的主体内容"},
          {"type": "image_url", "image_url": {"url": "https://your-public-image.jpg"}}
        ]
      }
    ]
  }'

# Gemini 原生格式(非流式)
curl "https://aihubcc.cc/v1beta/models/gemini-4-argon:generateContent" \
  -H "x-goog-api-key: sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {"parts": [{"text": "用一句话介绍你自己"}]}
    ]
  }'

多模态附件(图片 / 视频反推 / 音频)

在 messages[].content 里挂附件即可。附件由平台自动下载并转交给模型,你只要给一个公网可访问的 URL(或 base64),不需要自己转存。典型用途是视频反推:丢一段片子进去,让模型描述画面、还原分镜或倒推提示词。

支持的写法

类型写法取值
图片{"type":"image_url","image_url":{"url":"…"}}
也接受 "image_url":"…" 直接给字符串
公网 URL / data:image/…;base64, / 裸 base64
视频{"type":"video_url","video_url":"…"}
也接受 "video_url":{"url":"…"} 对象形式
公网 URL / data:video/mp4;base64, / 裸 base64
音频{"type":"input_audio","input_audio":{"data":"<base64>","format":"mp3"}}
也接受 {"type":"audio_url","audio_url":"…"}
base64 或公网 URL
类型以文件内容为准,不以你写的字段名为准:把 mp4 塞进 image_url 也会被正确识别成视频并按视频计费。

限制

项限制超限表现
单个附件大小12MB返回 400,附带实际大小
视频 / 音频时长180 秒返回 400,附带实际时长
附件数量不限,但合计仍受上面两条约束
历史轮次只有 role: "user" 的轮次会上传附件助手轮里的 URL 会被忽略,不重复计费
上传失败、格式不支持、超限都会直接返回错误,不会「忽略附件照常回答」——否则你会拿到一个看起来正常、实际上没看过文件的回答。

计费:附件按实际体量计入 prompt_tokens

与 Google 官方多模态计量口径一致,图片按实际像素分块、视频与音频按实际时长,不是固定一口价。返回的 usage 就是实际扣费依据(流式模式下随 [DONE] 前最后一个 chunk 返回)。

类型计量规则示例
图片两边都 ≤384px 记 258 token;更大则按分块计,块边长 = 短边 ÷ 1.5(限制在 256–768),每块 258 token1024×1024 → 4 块 = 1032
4000×3000 → 24 块 = 6192
视频263 token / 秒(含音轨)30s → 7890
60s → 15780
180s → 47340
音频32 token / 秒60s → 1920
文本部分照常计入,附件 token 是叠加上去的。无法读出时长或尺寸的文件(例如编码异常)按保守固定值计,不会按 0 计。

示例:视频反推

# 传公网 URL,平台会自动下载并转交给模型
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "逐镜头描述这段视频:画面内容、镜头运动、节奏,并倒推出一段可以复现它的提示词"},
          {"type": "video_url", "video_url": "https://your-cdn.com/clip.mp4"}
        ]
      }
    ]
  }'

# 传 base64(无公网 URL 时)
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "这个视频里出现了什么文字?"},
          {"type": "video_url", "video_url": "data:video/mp4;base64,AAAAGGZ0eXBpc29t..."}
        ]
      }
    ]
  }'

示例:图片理解 / 音频

# 图片
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [{"role":"user","content":[
      {"type":"text","text":"这张图里的文字是什么?"},
      {"type":"image_url","image_url":{"url":"https://your-public-image.jpg"}}
    ]}]
  }'

# 音频
curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-app",
    "messages": [{"role":"user","content":[
      {"type":"text","text":"把这段音频转写成文字"},
      {"type":"input_audio","input_audio":{"data":"<BASE64>","format":"mp3"}}
    ]}]
  }'

Python(OpenAI SDK)

from openai import OpenAI
client = OpenAI(base_url="https://aihubcc.cc/v1", api_key="sk-xxx")

resp = client.chat.completions.create(
    model="gemini-3.8-flash-app",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "逐镜头描述这段视频,并倒推出提示词"},
        {"type": "video_url", "video_url": "https://your-cdn.com/clip.mp4"},
    ]}],
)
print(resp.choices[0].message.content)
print(resp.usage)   # prompt_tokens 已包含视频 token(时长 x 263)

说明

  • 图片与视频已在生产链路实测稳定(同一素材连续 5 次全部正确识别附件内容)。
  • 音频模型对压缩容器(mp3/m4a)的识别不稳定,平台会在转交前统一转成 16kHz 单声道 WAV,并在检测到「模型没收到附件」时自动重试一次;实测转换 + 重试后 8/8 命中。纯合成音(正弦音等)模型的描述会比较发散,语音 / 环境音场景更可靠。
  • 附件只在 role: "user" 轮上传;多轮对话里重复贴同一个 URL 不会重复上传,也不会重复计费。

响应说明(同步即返,无需轮询)

本接口为同步对话接口,无需轮询。一次 POST 即可在 choices[0].message.content 取得完整回复;设置 stream: true 时按 SSE 标准流式增量推送。

Python 完整请求

from openai import OpenAI
client = OpenAI(base_url="https://aihubcc.cc/v1", api_key="sk-xxx")
resp = client.chat.completions.create(
    model="gemini-3.8-flash-app",
    messages=[{"role": "user", "content": "用一句话介绍杭州"}],
)
print(resp.choices[0].message.content)

联网来源引用(annotations)

当回答触发了联网搜索,我们会把 Gemini 实际引用的网页按 OpenAI 官方 annotations / url_citation 规范一并返回,同时正文里的 markdown 链接原样保留(不会被压成裸域名)。GEO / AEO 监测、引用溯源、竞品可见度分析可直接消费该字段。

平台令牌分组支持的模型
统一网关 aihubcc.ccgemini-fastgemini-3.1-pro · gemini-3.5-flash · gemini-3.1-flash-lite · gemini-3.5-flash-lite · gemini-3.8-flash-app · gemini-2.0-flash-thinking
上表模型走同一套服务体系,行为一致。反重力 gemini-anti 分组(gemini-3.1-pro-low / gemini-3.8-flash 等)是另一条独立源站线路,不返回 annotations。需要引用来源请务必用上表中的模型。

非流式:在 choices[].message 下

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "…**来源网址**:[semrush.com](https://www.semrush.com/) …",
      "annotations": [
        {
          "type": "url_citation",
          "url_citation": {
            "url": "https://www.da-vinci.com.tw/cn/seo-tools",
            "title": "2026年SEO人必看!最新、最齐全的32个SEO软体介绍!"
          }
        }
      ]
    },
    "finish_reason": "stop"
  }]
}

流式:在最后一个带 finish_reason 的 chunk 上

stream:true 时正文照常增量下发,完整的 annotations 随收尾 chunk 一次性给出(该 chunk finish_reason 非空、delta.content 为空)。中间 chunk 不会携带引用。

data: {"choices":[{"delta":{"content":"…正文…"},"finish_reason":null}]}

data: {"choices":[{"delta":{"annotations":[{"type":"url_citation","url_citation":{"url":"https://…","title":"…"}}]},"finish_reason":"stop"}]}

data: [DONE]

字段说明

字段说明
type固定 "url_citation"
url必有。已还原为可直接访问的真实地址,非跳转包装链接;末尾的 #:~:text= 高亮片段已去除,并按 URL 去重
title平台给出时返回;取不到则该键省略
start_index / end_index不返回。官方未提供引用与正文字符区间的对应关系,凭空构造会得到错误的定位,故按规范允许的方式省略
未触发联网搜索的普通问答不会带 annotations 键(是省略,不是空数组),请按「键存在与否」判断,不要假设它一定存在。

取引用示例(Python)

from openai import OpenAI
client = OpenAI(base_url="https://aihubcc.cc/v1", api_key="sk-xxx")
resp = client.chat.completions.create(
    model="gemini-3.1-pro",
    messages=[{"role": "user", "content": "2026年最好用的SEO工具有哪些?请给出来源网址"}],
)
msg = resp.choices[0].message
print(msg.content)
for a in (getattr(msg, "annotations", None) or []):
    c = a["url_citation"] if isinstance(a, dict) else a.url_citation
    print(c.get("title", ""), c["url"])
想稳定拿到引用,提示词里明确要求「请给出来源网址」之类的联网意图,命中率更高。

注意事项

  • 模型名不带 -fast 后缀(如 gemini-3.8-flash-app)。早期带 -fast 后缀的旧名称已下线,继续使用会直接报模型不存在。
  • 按 token 计费,分组倍率不同单价不同,以模型广场为准。
  • 支持多模态附件:图片、视频(视频反推)、音频,见上方「多模态附件」一节;附件按实际体量计入 prompt_tokens。
  • 需要联网引用来源时,见上方「联网来源引用(annotations)」——注意反重力分组不支持。

建议

  • 直接用 OpenAI SDK(改 base_url + api_key)接入最省事。
  • 大输出 / 长响应建议开 stream 改善体验。

Gemini 图像生成

基于 Gemini 的图像生成服务。

模型

模型
gemini-image
gemini-image-pro

接口信息

通过 POST /v1/images/generations 调用,参数与 GPT-Image-2 类似。

示例请求

curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-image",
    "prompt": "赛博朋克风格的东京夜景",
    "size": "1024x1024"
  }'

核心参数

参数类型必填说明
modelstring是gemini-image / gemini-image-pro
promptstring是图片描述
sizestring否控制横 / 竖 / 方画幅,详见下方「画幅与方向」;竖屏为尽力而为
image / imagesstring / string[]否参考图(图生图 / 编辑),单张字符串或多张数组,公网 URL 或 base64;最多 5 张、每张 ≤ 5MB
maskstring否蒙版图,局部重绘可选

提交方式

模式端点参考图
文生图POST /v1/images/generations(JSON)无
图生图 / 编辑同一端点(JSON),或 /v1/images/editsimage 字段(URL 或 base64,单张或数组)

画幅与方向(size)

size 决定出图方向。现已支持任意像素尺寸与方向关键词,网关会据此让模型生成对应画幅:

size 取值方向说明
1024x1024 / 512x512(宽=高)方形 1:1默认方向
1024x1824 / 720x1280(高>宽)竖屏 9:16宽小于高即竖屏
1824x1024 / 1280x720(宽>高)横屏 16:9宽大于高即横屏
portrait / vertical竖屏 9:16方向关键词
landscape / horizontal横屏 16:9方向关键词
9:16 / 16:9 / 1:1按比例直接传纵横比
说明:只传单一数字(如 1024)或清晰度名(如 2k/4k)不含方向信息,此时按模型默认方向出图。竖屏为尽力而为(Gemini 侧对画幅遵循为概率性),带明确的 宽x高 或方向关键词可显著提高竖屏命中率。/v1/images/edits(图生图)同样支持 size 控制方向。

参考图(图生图 / 编辑)

附带参考图即可进行图生图 / 编辑。image 字段同时支持字符串与数组两种写法,取值可为公网 URL 或 data:image Base64:

字段类型说明
imagestring 或 string[]单张参考图(字符串)或多张参考图(数组)均可
imagesstring[]多张参考图数组(与 image 等效)
maskstring蒙版图,局部重绘可选
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-image",
    "prompt": "把这两张图融合成一张海报",
    "image": ["https://cdn.example.com/a.jpg", "https://cdn.example.com/b.jpg"]
  }'
兼容说明:image 传单张用字符串、传多张用数组均可。早期部分客户端把图片写成数组会报 cannot unmarshal array into ... image of type string,现已兼容修复,无需改动客户端。参考图最多 5 张、每张 ≤5MB。

轮询取片

本模型为同步接口,请求成功后直接在响应 data[] 返回图片,无需轮询。

Python 完整请求

import requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 文生图(size 传 宽x高 控制方向,竖屏尽力而为)
r = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "gemini-image",
    "prompt": "赛博朋克风格的东京夜景",
    "size": "1024x1824"
}).json()
print(r["data"][0].get("url") or "b64")

# 图生图:image 传单张字符串或多张数组(URL 或 base64)
r2 = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "gemini-image",
    "prompt": "把这两张图融合成一张海报",
    "image": ["https://cdn.example.com/a.jpg", "https://cdn.example.com/b.jpg"]
}).json()

注意事项

  • 竖屏为尽力而为:Gemini 对画幅遵循是概率性的,带明确 宽x高 或方向关键词(portrait / landscape)可显著提高竖屏命中率。
  • 参考图:image 传单张字符串或多张数组均可(已兼容早期数组报错),公网 URL 或 base64;最多 5 张、每张 ≤ 5MB。
  • 只传单一数字 / 清晰度名(如 1024 / 2k)不含方向信息,按模型默认方向出图。

建议

  • 要竖屏 / 横屏直接传 宽x高(如 720x1280)或方向关键词,命中率更高。
  • pro 更强:复杂构图 / 细节用 gemini-image-pro(),常规用 gemini-image()。
  • 图生图多图用 image 数组一次传多张融合。

Gemini 音乐生成

通过 Chat Completions 接口生成音乐。同步返回(约 40–70 秒),结果是一个可直接下载的 MP3 链接(无需鉴权即可 GET 下载)。

模型

模型令牌分组
gemini-musicgemini-fast
令牌分组必须为 gemini-fast,否则返回"无可用渠道"。失败不计费。

时长档位

提供两个档位,用 length 参数选择:

档位目标长度纯音乐实测带人声实测
short(不填时的默认)60 秒54–67 秒
中位 62 秒
58–155 秒
中位 63 秒,P90 约 103 秒
standard180 秒145–180 秒
⚠️ 时长是「目标」不是「约定」,我们不保证精确长度。 服务模型把长度当作创作参考,同一档位多次生成的成品长度会浮动 —— 这是模型行为,不是故障,也无法通过参数消除。

带人声的曲子会明显更长。模型会为了把歌词唱完而突破目标时长:同样是 short 档,纯音乐基本贴着 60 秒,带人声的中位数也是 60 出头,但约 10% 的样本会超过 90 秒,最长实测到 155 秒(唱整首古诗、日语歌词这类需要唱完长段落的情形)。歌词越长,成品越长。

上表区间来自 2026-09 的 43 次实测采样,可能随服务模型更新而变化。
如果你的业务需要精确时长(卡点、广告位、循环 BGM),请把成品当素材,自行裁剪或循环到目标长度。

关于歌词

默认不会返回歌词文本,只会返回一句生成说明。实测 38 个默认用例中,只有 1 个自带了歌词。

想要歌词就在提示词里明确要求,例如「请在回复里把完整歌词逐行写出来」或指定结构:

In your text reply, output the lyrics in this structure:
[Verse 1] ... [Chorus] ... [Verse 2] ...
Write the actual lyric lines, not a description.

加了这类要求后,6 个用例中有 5 个返回了带 [Verse]/[Chorus] 结构的完整歌词。歌词出现在 chat 返回正文的分隔线之后,或结构化接口的 message 字段里。

⚠️ 中文提示词里不要用命令式的「把歌词写成文字给我」。 实测这类措辞会把请求推向纯文本模型,服务直接回一段文字歌词甚至一段 Python 代码,完全不产出音乐。 改用温和的「顺便把歌词也附上」,或者干脆用英文下这条指令(主题仍可以是中文歌),都能正常出歌。
涉及现当代诗词/歌词时服务会以版权为由拒绝复刻,转而生成「意境相近」的原创作品 —— 实测连已进入公有领域的唐诗也会先声明一句再照唱。这是服务的策略,我们无法绕过。

请求示例(Chat Completions)

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-music",
    "messages": [{"role":"user","content":"创作一首轻快的电子风格BGM,适合科技产品广告"}]
  }'

Chat 接口没有结构化参数,系统会从你的文字里读取意图:

  • 写「3分钟」「90秒」「3 minutes」→ 归入最接近的档位(不写则按 short)
  • 写「纯音乐」「不要人声」「instrumental」→ 不带人声
  • 写「要有人声」「有歌词」「with vocals」→ 带人声演唱
  • 都不写 → 交给模型自己决定

请求示例(结构化接口)

需要显式控制时用 POST /v1/audio/generations:

curl https://aihubcc.cc/v1/audio/generations \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-music",
    "prompt": "大气的电影配乐,弦乐为主",
    "length": "standard",
    "vocals": false
  }'
参数类型说明
promptstring必填。曲风、情绪、乐器、用途等描述
lengthstringshort / standard,见上方时长档位。不填按 short
vocalsbooltrue=带人声演唱,false=纯音乐。不填=交给模型决定
attachmentsstring[]可选。参考音频或图片,支持 data URI / http(s) URL / 裸 base64,单个 ≤20MB,仅 audio/* 与 image/*
durationint旧版数值参数(秒,5–180),仍然可用;同时传 length 时以 length 为准

返回体里会回显 length、target_seconds 和 duration_is_exact: false,后者就是在提醒你:那是目标值,不是成品长度。

返回示例

下载链接在 choices[0].message.content 里(Markdown 链接 + 纯 URL 各一份):

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "✅ 音乐生成完成\n\n[⬇️ 点击下载音乐](https://download.oaibox.xyz/v1/audio/aud-xxxx.mp3)\n\nhttps://download.oaibox.xyz/v1/audio/aud-xxxx.mp3"
    },
    "finish_reason": "stop"
  }]
}

从 content 中取出形如 .../v1/audio/aud-xxxx.mp3 的 URL,直接 GET 即可下载(无需带 Authorization)。响应头为 Content-Type: audio/mpeg + Content-Disposition: attachment,浏览器、curl、ffmpeg、下载工具都能直接当文件处理。也支持 "stream": true,链接会在流式结束的那条消息里返回。

请原样使用返回的 URL,不要自己拼域名。下载域名由服务端决定,手工拼接的地址可能取不到文件。
旧版 .../v1/audio/aud-xxxx/content 形式的链接仍然有效,无需改造既有集成。
链接为生成后即时缓存,建议尽快下载保存。

关于成品格式

交付的一定是 MP3(立体声 44.1kHz)。服务同时会产出一段带封面动画的 MP4,我们不把它作为音乐成品返回;若服务本次未直接提供 MP3,系统会从该 MP4 中提取音轨转成 MP3 后再交付,对你是透明的。

Gemini 语音合成(TTS)

OpenAI 兼容的文字转语音接口 POST /v1/audio/speech。同步返回音频字节流(mp3/opus/pcm 边合成边下发,首包约 0.3–0.5 秒),直接把响应体当音频文件保存即可,无需二次下载。

模型

模型令牌分组
gemini-ttsgemini-fast
按输入字符数计费(中英文都按字符/码点数算),不按音频时长。失败不计费。令牌分组需为 gemini-fast,否则返回"无可用渠道"。

请求示例

curl https://aihubcc.cc/v1/audio/speech \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-tts",
    "input": "你好,欢迎使用语音合成服务。",
    "voice": "Capella",
    "response_format": "mp3"
  }' --output speech.mp3

参数

参数类型说明
modelstring必填,固定 gemini-tts
inputstring必填。要朗读的文本,中英文混排均可。服务端按文本自动识别语言
voicestring音色,见下表。不填用默认音色。OpenAI 音色名(alloy/nova/echo…)也接受,会按性别映射到对应 Gemini 音色
response_formatstringmp3(默认)/ opus / aac / flac / wav / pcm
speedfloat语速 0.25–4.0,默认 1.0。官方源站不支持变速,由本平台用音频后处理实现,不影响音色
languagestring可选 BCP-47 口音提示(如 es-ES vs es-US)。只选地区变体,不决定语种——语种由文本自动判定

音色列表

9 个音色,跨语言通用(中文、英文等都用同一组名字):

性别音色名
女声Capella · Ursa · Vega · Eclipse · Lyra
男声Orbit · Dipper · Nova · Pegasus
也可直接用 OpenAI 的音色名:alloy→Vega、nova→Capella、shimmer→Ursa、coral→Eclipse、sage→Lyra(女声);echo→Orbit、ash→Dipper、fable→Nova、onyx/ballad→Pegasus(男声)。方便从 OpenAI 迁移。
注意:OpenAI 的 nova(小写,女声)与 Gemini 的 Nova(大写,男声)是两个不同音色,按大小写区分。

说明

  • 响应体就是音频本身:mp3/opus/pcm 为流式下发,wav/aac/flac 合成完再整体返回。
  • 速度参考:约 30–40ms/字符。4000 字英文约 36 秒、1800 字中文约 65 秒合成完毕。
  • 语速、音高这类字段官方源站一律忽略;speed 由平台用变速后处理保证可用。

Gemini 语音识别(STT)

OpenAI 兼容的语音转文字接口 POST /v1/audio/transcriptions(multipart/form-data 上传音频文件)。同步返回转写文本,任意常见音频容器都接受,平台会自动转码。

模型

模型令牌分组
gemini-sttgemini-fast
按音频时长计费(每分钟 1000 token)。单文件上限 25MB。失败不计费。令牌分组需为 gemini-fast。

请求示例

curl https://aihubcc.cc/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-xxx" \
  -F model=gemini-stt \
  -F file=@audio.mp3 \
  -F language=zh \
  -F response_format=json

参数

参数类型说明
filefile必填。音频文件,≤25MB。mp3/wav/m4a/ogg/webm 等常见格式均可,平台自动转码
modelstring固定 gemini-stt,不填默认即此
languagestring可选。语言提示,如 zh / en(会归一化为 cmn-Hans-CN / en-US)。不填默认英文为主、中文为辅自动识别
response_formatstringjson(默认,{"text":...})/ verbose_json / text。不支持 srt/vtt(无逐词时间戳)

返回示例

{ "text": "你好,这是一段语音识别测试。" }

verbose_json 额外返回 task、language、duration(音频秒数)字段;text 则直接返回纯文本。无语音内容时返回空串,不算失败。

Gemini 语音对话(Voice Chat)

把语音识别(STT)→ 对话(Chat)→ 语音合成(TTS)合成一次调用:说一句话进去,得到一段语音回答。一问一答(turn-based)、支持中英文、跑在同一个号池上。

两种用法,推荐第一种(能直接套用 OpenAI 语音 SDK,改个 base_url 就能跑)。

价格

按所用对话模型的文本计费(即你在 model 里填的那个 Gemini 对话模型的价格)。语音识别与语音合成这两段不额外收费。失败不计费。

语音回答的音色读的就是对话模型的回复原文,建议用速度快的 Flash 对话模型(如 gemini-3.5-flash)体验更自然;推理型模型可能会把代码块、公式也一起"读"出来。

用法一:OpenAI 兼容(/v1/chat/completions)

在普通对话请求里加 modalities:["text","audio"] 和 audio 两个字段即可,和 OpenAI 的 gpt-4o-audio 完全一致。用你现有的对话模型,无需申请新模型。

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.5-flash",
    "modalities": ["text", "audio"],
    "audio": { "voice": "nova", "format": "mp3", "input_mode": "stt" },
    "messages": [
      { "role": "user", "content": [
        { "type": "input_audio", "input_audio": { "data": "<base64音频>", "format": "mp3" } }
      ]}
    ]
  }'

返回里,文字回答在 choices[0].message.content,语音回答在 choices[0].message.audio:

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "2 加 3 等于 5。",
      "audio": {
        "id": "audio_xxxx",
        "data": "<base64 的 mp3>",
        "transcript": "2 加 3 等于 5。",
        "format": "mp3"
      }
    }
  }]
}
字段说明
modalities必须包含 "audio" 才会返回语音
audio.voice音色,见下方列表(OpenAI 音色名如 nova/alloy 也接受)
audio.formatmp3(默认)/ opus / aac / flac / wav / pcm
audio.input_modestt(默认,先转文字,便宜、附带识别文本)/ native(让模型直接"听"音频,懂语气但更贵)
input_audio语音输入(可选)。也可以用纯文字提问、只要语音回答。输入的识别文本会放在响应头 X-Input-Transcript(base64)
语音输出只在非流式(stream=false)下返回。stream=true 时文字照常流式返回,但不带语音。

用法二:直连语音端点(/v1/audio/chat)

给原生音频应用准备的精简端点:multipart 上传音频,直接吐回音频字节流。此端点需直连网关使用。

curl https://aihubcc.cc/v1/audio/chat \
  -H "Authorization: Bearer sk-xxx" \
  -F model=gemini-voice \
  -F file=@question.mp3 \
  -F voice=Capella \
  -F response_format=mp3 \
  -F input_mode=stt \
  -F language=zh \
  --output answer.mp3

默认返回音频文件,识别文本与回答文本在响应头 X-Transcript / X-Reply-Text(都做了 base64 编码,避免中文乱码)。传 response_format=json 则返回 { "transcript": "...", "text": "...", "audio": { "data": "<base64>", "format": "mp3" } }。可选 messages 字段(JSON 数组)带对话上下文,speed 调语速(0.25–4.0)。

音色列表

性别音色名
女声Capella · Ursa · Vega · Eclipse · Lyra
男声Orbit · Dipper · Nova · Pegasus
也可直接用 OpenAI 音色名:alloy/nova/shimmer/coral/sage(女声)、echo/ash/fable/onyx/ballad(男声),会按性别映射。

官方 Key(Google AI Studio 原生模型)

直连 Google AI Studio 的官方标准模型,模型名与官方完全一致。令牌分组 gemini-official。文本 / 图像走 /v1/chat/completions;音乐为异步按次任务。价格 = 官方价 × 分组倍率。

模型

三类模型(文本 / 图像 / 音乐),价格 = 官方价 × 分组倍率(当前 1.6):

文本模型(按 token)

模型
gemini-2.5-pro
gemini-2.5-flash
gemini-3.1-pro-preview
gemini-3.1-pro-preview-customtools
gemini-pro-latest
gemini-3.5-flash
gemini-flash-latest
gemini-3-flash-preview
gemini-3.1-flash-lite / gemini-3.1-flash-lite-preview
gemini-flash-lite-latest
gemini-robotics-er-1.6-preview

图像模型

模型计费
gemini-3-pro-image / -preview按 token
gemini-3.1-flash-image按 token
gemini-3.1-flash-image-preview按 token
gemini-3.1-flash-lite-image按 token
gemini-2.5-flash-image按 token
gemini-3-pro-image-preview-1k按次
gemini-3-pro-image-2k按次
gemini-3-pro-image-4k按次
按 token 的图像模型,生成图像本身计入输出 token(故输出单价看似高)。

音乐(异步按次)

模型类型
lyria-3-pro-preview音乐
lyria-3-clip-preview音乐·短

接口信息

项说明
文本 / 图像POST /v1/chat/completions
音乐异步任务 POST /v1/videos 提交 → 轮询取片(同「Omni 视频生成」板块)
Base URLhttps://aihubcc.cc
令牌分组gemini-official

核心参数

参数类型必填说明
modelstring是与 Google 官方一致,见上表
messagesarray文本 / 图像OpenAI 标准对话消息(图像模型同样走对话,图在响应返回)
promptstring音乐lyria 音乐任务的描述(异步 /v1/videos)
stream / tools 等否OpenAI 标准参数(文本 / 图像走 chat)

提交方式

类型端点结果
文本 / 图像POST /v1/chat/completions(同步)文本在 message.content,图在对话响应返回
音乐(lyria)POST /v1/videos(异步)提交拿 task_id → 轮询取片

示例:官方文本

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"你好"}]
  }'

示例:官方出图

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3-pro-image",
    "messages": [{"role":"user","content":"赛博朋克风格的城市夜景"}]
  }'

示例:官方音乐(lyria,异步任务)

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lyria-3-pro-preview",
    "prompt": "轻快的钢琴爵士,适合咖啡馆"
  }'
# 轮询取片同上(GET /v1/videos/{task_id})

轮询取片

文本 / 图像为同步对话接口,直接返回、无需轮询。音乐(lyria)为异步任务:POST /v1/videos 提交拿 task_id,再 GET /v1/videos/{task_id} 轮询到 completed 取结果(同「Omni 视频生成」板块)。

Python 完整请求

from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://aihubcc.cc/v1")

# 官方文本
resp = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

# 官方音乐(lyria,异步:用 requests 提交 /v1/videos 后轮询)
import time, requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "lyria-3-pro-preview", "prompt": "轻快的钢琴爵士,适合咖啡馆"}).json()
tid = task.get("task_id") or task.get("id")
while True:
    time.sleep(6)
    s = requests.get(f"{BASE}/videos/{tid}", headers=H).json()
    if s.get("status") == "completed": break
    if s.get("status") == "failed": break

注意事项

  • 令牌需在 gemini-official 分组下
  • 模型名与 Google 官方一致,价格 = 官方价 × 分组倍率(当前 1.6)
  • 音乐(lyria)为异步按次任务,提交与轮询方式见「Omni 视频生成」板块
  • 图像模型部分按 token、部分按次,见上表

建议

  • 要官方原生模型名就用本组:模型名与 Google AI Studio 完全一致,价格 = 官方价 × 分组倍率(当前 1.6)。
  • 图像模型分两类:按 token 的(生成图计入输出 token)与按次的(gemini-3-pro-image-*k,;按需选。
  • 音乐 lyria 走异步 /v1/videos,提交后轮询取片,别用 chat 端点。

Adobe Firefly · Veo 3.1

Adobe Firefly 视频生成现已提供 Veo 3.1 标准版、Veo 3.1 Fast(静音档,无音频)与 Veo 3.1 Fast Direct(含音频)。两者均使用 OpenAI 兼容的异步视频接口:提交任务后轮询,完成时从响应中的 video_url 获取成片。

本页仅列出当前已开放的 VEO 模型;请勿以模型名或参数猜测方式调用未列出的模型。

模型

模型说明当前验收规格
firefly-veo-3.1Veo 3.1 标准版 · 含音频文/图生视频,4 秒、6 秒、8 秒
firefly-veo-3.1-fastVeo 3.1 Fast,优先低延迟 · 无音频(静音输出)文/图生视频,4 秒、6 秒、8 秒
firefly-veo-3.1-fast-directVeo 3.1 Fast 高质档 · 含音频(同为 Fast,仅积分档可用)文/图生视频,4 秒、6 秒、8 秒
⚠️ 音频说明(重要):firefly-veo-3.1-fast 是无音频的静音档,成片不含任何音频轨。如需带音频,请改用 firefly-veo-3.1-fast-direct(同为 Fast、含音频)或 firefly-veo-3.1 标准版(含音频)。

实际计费、模型可见性和可用额度以控制台模型列表及你的 API 令牌权限为准。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
鉴权Authorization: Bearer sk-你的令牌
任务模式异步;提交成功仅表示任务已入队
成片交付任务 status 为 completed 后,读取顶层 video_url

核心参数

参数类型必填说明
modelstring是使用上表中的一个模型名
promptstring是视频画面、主体、动作、镜头和风格描述
secondsstring是目标时长(秒),可选 "4"、"6"、"8",三者均支持
video_secondsstring否无需传;只传 seconds 即可
sizestring是两种传法,任选其一:
① 像素式 宽x高:"1280x720"(横 720p)、"720x1280"(竖 720p)、"1920x1080"(横 1080p)、"1080x1920"(竖 1080p)——画幅与清晰度自动识别,video_resolution 无需传。
② 官网式 纵横比 "16:9"(横)/ "9:16"(竖)——此时必须同时传 video_resolution,否则报错。
video_resolutionstring条件必填size 传像素时:无需传(清晰度由像素决定)。size 传纵横比(16:9/9:16)时:必填,取 "720p" 或 "1080p",否则报“size 为纵横比(16:9/9:16)时必须同时提供 video_resolution”。
input_referencestring / 文件否图生视频用:参考图(首帧)。可传图片 URL、base64(data:image/...;base64,)或 multipart 文件(@frame.jpg);不传即为文生视频。带此参数时整个请求改用 multipart 表单提交(见下方“图生视频”示例)
size 支持两种传法:① 像素尺寸(如 1280x720),画幅与清晰度自动识别,无需 video_resolution;② 官网式纵横比(16:9/9:16)+ 必填 video_resolution(720p/1080p),对齐 Adobe 官网“画幅 + 分辨率”两栏。两套输出完全一致。音频区分:firefly-veo-3.1(标准版)与 firefly-veo-3.1-fast-direct 默认含音频;而 firefly-veo-3.1-fast 为静音档、无音频轨。

size 取值与输出

size(传这个)画幅清晰度
"1280x720"横版 16:9720p
"720x1280"竖版 9:16720p
"1920x1080"横版 16:91080p
"1080x1920"竖版 9:161080p

官网式取值(size 纵横比 + video_resolution)

sizevideo_resolution输出
"16:9""720p"横版 1280x720
"16:9""1080p"横版 1920x1080
"9:16""720p"竖版 720x1280
"9:16""1080p"竖版 1080x1920

提交方式

模式Content-Type参考素材
文生视频(T2V)application/json无
图生 / 首尾帧 / 多参考图multipart/form-data(-F)带 input_reference / first_frame+last_frame / reference_images 时改用表单
纯文字走 JSON;一旦带任何参考图 / 首尾帧 / 多图,整个请求用 multipart 表单提交(字段用 -F)。首尾帧模式与多参考图模式互斥,不可同一请求混用。

示例:提交 6 秒 Fast 视频

BASE_URL="https://aihubcc.cc"
TOKEN="sk-xxx"

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-veo-3.1-fast",
    "prompt": "日出时一盏彩色纸灯笼缓缓飘过安静的湖面,水面泛起微光,电影感镜头,无文字无标志。",
    "seconds": "6",
    "size": "1280x720"
  }'

示例:官网式参数(纵横比 + 分辨率)

与像素式输出完全一致,区别只是把画幅和清晰度拆成 size(纵横比)+ video_resolution 两栏,对齐 Adobe 官网 UI。size 传纵横比时 video_resolution 必填。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-veo-3.1-fast",
    "prompt": "日出时一盏彩色纸灯笼缓缓飘过安静的湖面,水面泛起微光,电影感镜头,无文字无标志。",
    "seconds": "6",
    "size": "16:9",
    "video_resolution": "720p"
  }'

示例:图生视频(带参考图 input_reference)

在文生的基础上,用 multipart 表单额外带一张参考图作为首帧,其余参数(seconds、size)一致。input_reference 支持本地文件、图片 URL 或 base64 三种传法。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-veo-3.1' \
  -F 'prompt=让画面里的主体自然动起来,镜头缓慢向前推进,保持构图。' \
  -F 'seconds=6' \
  -F 'size=1280x720' \
  -F 'input_reference=@frame.jpg;type=image/jpeg'
用图片 URL:把最后一行换成 -F 'input_reference=https://your-cdn.com/frame.jpg';用 base64:换成 -F 'input_reference=data:image/jpeg;base64,<...>'。提交后与文生一样轮询 GET /v1/videos/{task_id},完成后取顶层 video_url。

首尾帧(First / Last Frame)

用 first_frame(起始帧)和 last_frame(结束帧)两张图,引导 Veo 从首帧画面过渡到尾帧画面。两个字段都支持图片 URL、base64(data:image/...;base64,)或 multipart 文件。只传 first_frame 等同于用首帧做图生视频(与上面的 input_reference 首帧一致)。首尾帧模式与下方“多参考图”模式互斥,不能同一请求混用(Adobe 官方规则,混传会在生成前返回 400、不计费)。

参数类型说明
first_framefile / url / base64起始帧图片(可单独使用=首帧图生视频)。别名:first_image_url
last_framefile / url / base64结束帧图片(与 first_frame 一起=首尾过渡)。别名:last_image_url
⚠️ Veo 的首尾帧按两张参考图处理(首帧、尾帧各作为一个参考引导),过渡的具体表现由模型把控、未必是逐帧线性插值,实际以成片为准。参考图请用真实、合规的照片(勿用随机占位图 / 纯色图;含可识别真人面孔可能触发内容策略)。
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-veo-3.1",
    "prompt": "镜头从清晨薄雾笼罩的湖面缓缓推进,雾气逐渐散去,远处倒影渐渐清晰",
    "seconds": "8",
    "size": "16:9",
    "video_resolution": "720p",
    "first_frame": "https://your-cdn.com/first.jpg",
    "last_frame":  "https://your-cdn.com/last.jpg"
  }'
首尾帧也可走 multipart 文件:改成 -F 'model=firefly-veo-3.1' -F 'first_frame=@first.jpg;type=image/jpeg' -F 'last_frame=@last.jpg;type=image/jpeg'(prompt/seconds/size 同样用 -F 传)。

多参考图(Reference Images)

用 reference_images 传入多张参考图,引导角色、风格与构图。Veo 取用前若干张作参考(标准版 firefly-veo-3.1 最多 3 张、Fast 版最多 2 张),支持图片 URL、base64 或 multipart(重复字段名传多张)。与首尾帧模式互斥:同一请求不能同时传 first_frame/last_frame,混传在生成前返回 400、不计费。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-veo-3.1' \
  -F 'prompt=保持这几张参考图的人物形象与画面风格,让主体自然动起来' \
  -F 'seconds=6' \
  -F 'size=1280x720' \
  -F 'reference_images=@char.jpg;type=image/jpeg' \
  -F 'reference_images=@style.jpg;type=image/jpeg'
参考图须为真实合规照片;超量或与首尾帧字段混用会在生成前返回 400(不扣积分)。

成功提交会返回异步任务,例如:

{
  "id": "task_xxx",
  "status": "queued",
  "model": "firefly-veo-3.1-fast",
  "progress": 0
}

轮询取片

curl -sS "$BASE_URL/v1/videos/task_xxx" \
  -H "Authorization: Bearer $TOKEN"

当响应中的 status 为 completed 时,读取 video_url:

{
  "id": "task_xxx",
  "status": "completed",
  "model": "firefly-veo-3.1-fast",
  "video_url": "https://..."
}
video_url 是短期签名下载地址,请在有效期内下载或转存。当前请直接使用完成任务返回的 video_url,不要依赖 /v1/videos/{task_id}/content。

Python 完整请求

import time, requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 提交(文生;图生改用 multipart 带 input_reference)
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "firefly-veo-3.1",
    "prompt": "日出时一盏彩色纸灯笼缓缓飘过安静的湖面,电影感镜头",
    "seconds": "6",
    "size": "1280x720"
}).json()
task_id = task.get("id") or task.get("task_id")

# 轮询
while True:
    time.sleep(6)
    s = requests.get(f"{BASE}/videos/{task_id}", headers=H).json()
    if s.get("status") == "completed":
        print("下载:", s["video_url"]); break
    if s.get("status") == "failed":
        print("失败:", s); break

注意事项

  • 提交成功但还没有视频:继续查询同一个任务 ID,直到状态变为 completed 或 failed。
  • 模型不可见或返回权限错误:确认 API 令牌已开通 Firefly VEO 模型权限。
  • 任务失败:保留任务 ID 与错误响应,提交给技术支持排查;不要为同一任务并发重复提交。

建议

  • 要带音频用 firefly-veo-3.1 或 firefly-veo-3.1-fast-direct;firefly-veo-3.1-fast 是静音档、无音轨。
  • 画幅两套任选:像素式 size(如 1280x720)自动识别清晰度;官网式纵横比 16:9 需同时传 video_resolution。
  • 首尾帧与多参考图互斥:要过渡用 first_frame+last_frame,要角色 / 风格一致用 reference_images,别混用。
  • 参考图用真实合规照片,含可识别真人面孔可能触发内容策略。

Adobe Firefly · Seedance 2.0

Adobe Firefly 的 Seedance 2.0 与 Seedance 2.0 Fast 视频模型。支持文生视频与单图生视频,使用 OpenAI 兼容的异步视频接口:提交任务后轮询,完成时读取 video_url 获取成片。四档均原生自带音频(对白 / 音效 / 环境音同步生成),无需额外参数。

本页仅适用于 firefly 分组的 Adobe Firefly Seedance 模型;与导航中另一套 Seedance 服务是独立通道、独立模型和独立素材协议,不能混用模型名或多图参数。

模型

模型版本固定输出分辨率
firefly-Seedance-2.0-fast-480pSeedance 2.0 Fast480p
firefly-Seedance-2.0-fast-720pSeedance 2.0 Fast720p
firefly-Seedance-2.0-480pSeedance 2.0 标准版480p
firefly-Seedance-2.0-720pSeedance 2.0 标准版720p
视频默认带音频(AAC 音轨):Seedance 2.0 是 Adobe 官方原生音频模型,一次生成即同步产出对白 / 音效 / 环境音;四档(标准 / Fast × 480p / 720p)全部自带音频,无需额外参数、也不额外计费。

模型名已固定输出分辨率;video_resolution 只能填写与所选模型一致的值,不能用 480p SKU 请求 720p 输出。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
鉴权Authorization: Bearer sk-你的令牌
成片交付任务 status 为 completed 后,读取顶层 video_url

已支持规格

参数可用值说明
seconds / duration4 ~ 15(任意整数)输出时长(秒);Adobe 官方支持 4–15 秒
video_resolution480p、720p必须与模型名的固定 SKU 相同
size16:9 / 9:16,或下列精确像素横竖画幅;也可使用 aspect_ratio
输出档位16:9 横版9:16 竖版
480p854x480480x854
720p1280x720720x1280

核心参数

提交一张首帧参考图即可启用图生视频;不带图片则为文生视频。input_reference 为单张首帧图。若需首尾帧或多图 / 视频 / 音频参考,见下方“首尾帧”“全能参考(Omni)”两节。可上传 JPEG/JPG、PNG、WebP。服务会按目标画幅进行居中裁切、缩放并转为 PNG 后提交;建议先按目标画幅准备主体清晰的图片,以免裁掉重要内容。

字段类型必填说明
modelstring是上表之一
promptstring是描述运动、镜头和画面变化
secondsinteger/string否4 ~ 15 任意整数;默认 4
video_resolutionstring否480p 或 720p,必须匹配模型
sizestring否16:9 / 9:16,或精确输出像素
input_referencefile图生时是单张首帧图;使用 multipart/form-data 上传
image_stylestring否可选风格化:真人参考 → 漫剧角色时传 anime(详见下方“参考图含真人脸 · image_style”一节);留空 = 原图直发,想保留真人请勿传

提交方式

模式Content-Type参考素材
文生视频(T2V)application/json无
图生 / 首尾帧 / 全能参考(Omni)multipart/form-data(-F)input_reference / first_frame+last_frame / reference_images·reference_videos·reference_audios
参考图可走公网 URL 或 base64(JSON 亦可);参考视频 / 音频仅接受 multipart 文件或 base64,不收 http URL。首尾帧模式与全能参考模式互斥。

示例:文生视频

BASE_URL="https://aihubcc.cc"
TOKEN="sk-xxx"

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-Seedance-2.0-fast-480p",
    "prompt": "一盏纸灯笼在夜色湖面上缓缓漂过,水面反射暖色灯光,电影感镜头。",
    "seconds": 5,
    "video_resolution": "480p",
    "size": "854x480"
  }'

示例:单图生视频

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=让画面中的山间云雾缓慢流动,镜头轻微向前推进。' \
  -F 'seconds=5' \
  -F 'video_resolution=480p' \
  -F 'size=854x480' \
  -F 'input_reference=@frame.jpg;type=image/jpeg'

参考图含真人脸 · image_style 风格化(可选)

先分清你要哪种结果,再决定用不用这个参数:

  • 要真人输出(真人参考 → 生成的仍是真人):不要用 image_style。请改用三视图 / 多角度参考的方式——把同一人物的正面、侧面、背面等多张清晰照片作为多图参考传入(见下方“全能参考(Omni)”的仅多图参考示例),既能提高“真人脸”过审率,又能保持真人形象。
  • 要漫剧 / 动漫角色脸型(真人参考 → 生成动漫角色):传可选参数 image_style=anime。网关会在提交 Adobe 前把你的真人参考图整图风格化(动漫化),从而通过 Adobe 的“真人脸”内容审核,产出漫剧风格的角色视频。
一句话:真人要真人 → 用三视图多图参考,别传 image_style;真人要漫剧脸 → 传 image_style=anime。不传该参数时行为完全不变(原图直发),主动权在你。
参数可用值说明
image_styleanime仅对带参考图的图生视频(i2v)生效:提交 Adobe 前把参考图转成动漫 / 绘画风,用于把真人参考做成漫剧角色。留空 = 不处理(原图直发)。目前支持 anime 一种,后续按需增加。
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=参考图中的人物,转成漫剧角色在城市街头行走,日系动漫画风' \
  -F 'seconds=5' \
  -F 'video_resolution=480p' \
  -F 'size=854x480' \
  -F 'input_reference=@person.jpg;type=image/jpeg' \
  -F 'image_style=anime'
参考图门过了之后,Adobe 输出侧的内容 / 版权审核仍是概率性的,个别任务可能要重试 1–2 次才出片;失败不计费。想保留真人、不要漫剧脸时,用上面“三视图多图参考”的做法,别传 image_style。

首尾帧(First / Last Frame)

提供起始帧和结束帧图片,Seedance 生成从首帧平滑过渡到尾帧的视频。用 first_frame、last_frame 两个字段,支持 multipart 文件、图片 URL 或 base64(data:image/...;base64,)。只传 first_frame 即为单首帧动画。首尾帧模式与下方“全能参考”模式互斥,不能同一请求混用(Adobe 官方规则)。

参数类型说明
first_framefile / url / base64起始帧图片(可单独使用)
last_framefile / url / base64结束帧图片(与 first_frame 一起=首尾过渡)
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=镜头从第一张画面平滑过渡到第二张画面,电影感运镜' \
  -F 'seconds=5' \
  -F 'size=854x480' \
  -F 'first_frame=@first.jpg;type=image/jpeg' \
  -F 'last_frame=@last.jpg;type=image/jpeg'

全能参考(Omni · 图 / 视频 / 音频)

Seedance 2.0 的核心能力:一次最多提供 9 张图 + 3 段视频 + 3 段音频(总计 ≤ 9 个参考资产)作为风格、角色、构图、运镜、音效的引导。用 reference_images、reference_videos、reference_audios 传入,可在 prompt 里用文字说明各参考的作用。参考视频引导运动与氛围(不是直接动画化)。与首尾帧模式互斥。

参数数量上限单文件上限说明
reference_images9100 MiB参考图(风格 / 角色 / 构图)
reference_videos350 MiB参考视频(运镜 / 氛围,建议 2–15s)
reference_audios350 MiB参考音频(节奏 / 音效)
三类合计 ≤ 9 个;多值用重复字段名传(如 -F 'reference_images=@a.jpg' -F 'reference_images=@b.jpg')。超量、超大、或与首尾帧字段混用会返回 400(生成前拦截,不扣积分)。
curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=参考图片的色调、视频的运镜、音频的节奏,生成一段电影感镜头' \
  -F 'seconds=5' \
  -F 'size=854x480' \
  -F 'reference_images=@style.jpg;type=image/jpeg' \
  -F 'reference_videos=@motion.mp4;type=video/mp4' \
  -F 'reference_audios=@beat.mp3;type=audio/mpeg'

更多参考用法示例

① 仅多图参考(角色/风格一致性,最多 9 张,重复字段名传多张):

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=保持这几张参考图的人物形象与画面风格,让主体自然走动' \
  -F 'seconds=6' \
  -F 'size=854x480' \
  -F 'reference_images=@char1.jpg;type=image/jpeg' \
  -F 'reference_images=@char2.jpg;type=image/jpeg' \
  -F 'reference_images=@style.jpg;type=image/jpeg'

② 图 + 参考视频(用视频引导运镜/氛围,不直接动画化):

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-720p' \
  -F 'prompt=参考图片的主体,沿用参考视频的镜头运动方式生成' \
  -F 'seconds=5' \
  -F 'size=1280x720' \
  -F 'reference_images=@subject.jpg;type=image/jpeg' \
  -F 'reference_videos=@camera-move.mp4;type=video/mp4'

③ 图 + 参考音频(用音频引导节奏/情绪):

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=参考图片的场景,随音乐的舒缓节奏缓慢运镜' \
  -F 'seconds=8' \
  -F 'size=854x480' \
  -F 'reference_images=@scene.jpg;type=image/jpeg' \
  -F 'reference_audios=@music.mp3;type=audio/mpeg'

④ 仅首帧动画(只给起始帧,让静图动起来):

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Seedance-2.0-fast-480p' \
  -F 'prompt=让画面中的云雾缓慢流动,镜头轻微向前推进' \
  -F 'seconds=5' \
  -F 'size=854x480' \
  -F 'first_frame=@start.jpg;type=image/jpeg'

⑤ 标准版 720p + 图片 URL(JSON)——参考图支持公网 URL / base64;视频、音频仅支持 multipart 文件或 base64(不接受 URL):

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-Seedance-2.0-720p",
    "prompt": "参考这张图的色调,生成一段唯美空镜",
    "seconds": 8,
    "size": "1280x720",
    "reference_images": ["https://example.com/ref1.jpg", "https://example.com/ref2.jpg"]
  }'

轮询取片

curl -sS "$BASE_URL/v1/videos/task_xxx" \
  -H "Authorization: Bearer $TOKEN"

任务状态依次为 queued、in_progress、completed 或 failed。当状态为 completed 时,读取响应中的 video_url;建议每 5-10 秒轮询一次,不要为同一请求并发重复提交。

Python 完整请求

import time, requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 提交(文生;图生改用 multipart 带 input_reference)
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "firefly-Seedance-2.0-fast-480p",
    "prompt": "一盏纸灯笼在夜色湖面上缓缓漂过,电影感镜头",
    "seconds": 5,
    "video_resolution": "480p",
    "size": "854x480"
}).json()
task_id = task.get("id") or task.get("task_id")

# 轮询
while True:
    time.sleep(6)
    r = requests.get(f"{BASE}/videos/{task_id}", headers=H).json()
    if r.get("status") == "completed":
        print("下载:", r["video_url"]); break
    if r.get("status") == "failed":
        print("失败:", r); break

注意事项

  • 四档全带音频(AAC),原生同步生成对白 / 音效 / 环境音,无需额外参数、不额外计费。
  • 模型名已固定分辨率:480p SKU 不能请求 720p 输出;video_resolution 须与模型一致。
  • 参考素材:图支持 URL / base64 / 文件;视频、音频仅接受文件或 base64,不收 http URL;三类合计 ≤ 9 个。
  • 首尾帧模式与全能参考模式互斥;超量 / 超大 / 混用在生成前返回 400、不计费。

建议

  • 真人要真人用三视图多图参考、别传 image_style;真人要漫剧脸传 image_style=anime。
  • 按目标画幅裁好图再传(服务端会居中裁切缩放),避免主体被裁掉。
  • 输出侧审核为概率性,个别任务重试 1–2 次即可,失败不计费。

Adobe Firefly · Kling 3.0

Adobe Firefly 的 Kling 3.0 与 Kling 3.0 Omni 视频模型。支持文生视频、图生视频(首帧参考图)与 Omni 多主体参考(@元素,单次最多 3 个),使用 OpenAI 兼容的异步视频接口:提交任务后轮询,完成时读取顶层 video_url 获取成片。

模型名区分大小写(Kling 首字母大写、Omni 首字母大写),请严格按下表填写,否则会报 model_not_found。

模型 · 按秒计费

模型版本清晰度时长
firefly-Kling-3.0-720pKling 3.0 标准720p5–15 秒(自定义)
firefly-Kling-3.0-1080pKling 3.0 标准1080p5–15 秒(自定义)
firefly-Kling-3.0-Omni-720pKling 3.0 Omni(全能参考)720p5–15 秒(自定义)
firefly-Kling-3.0-Omni-1080pKling 3.0 Omni(全能参考)1080p5–15 秒(自定义)
按秒计费 = 单价 × 时长。例如 Kling 3.0 720p 10 秒 = 。失败不计费。
视频默认带音频(AAC 音轨):Kling 3.0 标准与 Omni 均自带生成音效,无需额外参数。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
鉴权Authorization: Bearer sk-你的令牌
任务模式异步;提交成功仅表示任务已入队,需轮询
成片交付任务 status 为 completed 后,读取顶层 video_url

核心参数(参考 Adobe 官方)

参数类型必填说明
modelstring是上表 4 个模型之一(区分大小写)
promptstring是画面、主体、动作、镜头与风格描述
seconds / durationstring是"5" ~ "15" 任意整数;Adobe 官方支持自定义时长,最多 15 秒(标准与 Omni 同)
sizestring是输出像素尺寸 宽x高;画幅(横/竖)与清晰度(720p/1080p)由像素自动识别(见下表)
input_referencestring / 文件否图生视频用:首帧参考图,支持图片 URL、base64 或 multipart 文件;带此参数时整个请求改用 multipart 表单
@元素名(写在 prompt 里)prompt 内引用否Omni 多主体参考用:先用 POST /v1/entities 把参考图创建成命名“元素”,再在 prompt 中用 @元素名 引用。单个请求最多 3 个元素(第 4 个起被系统拒:reference_elements: at most 3 items)。详见下方“多主体参考”示例。仅 firefly-Kling-3.0-Omni-* 支持
size(传这个)画幅清晰度
"1280x720"横版 16:9720p
"720x1280"竖版 9:16720p
"720x720"方形 1:1720p
"1920x1080"横版 16:91080p
"1080x1920"竖版 9:161080p
"1080x1080"方形 1:11080p
Adobe 官方 Kling 支持三种画幅:16:9(横)/ 1:1(方)/ 9:16(竖);也可用 aspect_ratio 传 16:9 / 1:1 / 9:16。

提交方式

模式提交参考素材
文生视频(T2V)application/json无
图生视频(首帧)multipart/form-data(-F)input_reference(URL / base64 / 文件)
Omni 多主体参考先 POST /v1/entities 建元素,再 JSON 内 @元素名仅 firefly-Kling-3.0-Omni-*,单次 ≤ 3 个元素

示例:文生视频

BASE_URL="https://aihubcc.cc"
TOKEN="sk-xxx"

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-Kling-3.0-720p",
    "prompt": "一只雄鹰在金色夕阳下掠过雪山之巅,电影感镜头,缓慢推进。",
    "seconds": "5",
    "size": "1280x720"
  }'

示例:图生视频(首帧参考图 input_reference)

用 multipart 表单带一张参考图作为首帧,其余参数一致。input_reference 支持本地文件、图片 URL 或 base64。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-Kling-3.0-720p' \
  -F 'prompt=让画面中的主体自然动起来,镜头缓慢向前推进,保持构图。' \
  -F 'seconds=5' \
  -F 'size=1280x720' \
  -F 'input_reference=@frame.jpg;type=image/jpeg'
用图片 URL:把最后一行换成 -F 'input_reference=https://your-cdn.com/frame.jpg';用 base64:换成 -F 'input_reference=data:image/jpeg;base64,<...>'。

示例:Omni 多主体参考(@元素,最多 3 个)

Kling 3.0 Omni 支持把参考图作为命名“元素”(主体/角色/物体/场景),在 prompt 中用 @元素名 引用,让生成画面保持该主体的一致性。单个视频请求最多引用 3 个元素(第 4 个起会被系统拒绝:reference_elements: List should have at most 3 items)。分两步:

第 1 步:创建元素(POST /v1/entities)

每个元素用 1~4 张参考图构建(建议 4 张不同角度,效果更稳)。type 取 character(角色)/ object(物体)/ location(场景)。

curl -sS -X POST "$BASE_URL/v1/entities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alice",
    "type": "character",
    "images": [
      "https://your-cdn.com/alice_front.jpg",
      "https://your-cdn.com/alice_side.jpg"
    ]
  }'
图片可传图片 URL或 base64(data:image/...;base64,);每个元素 1~4 张。可重复调用创建多个元素(如 Alice、Bob、Cafe)。用 GET /v1/entities 查看已建元素,DELETE /v1/entities/{id} 删除。

第 2 步:生成时用 @元素名 引用(最多 3 个)

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-Kling-3.0-Omni-720p",
    "prompt": "@Alice 和 @Bob 在 @Cafe 里相视而笑,暖色灯光,电影感镜头。",
    "seconds": "5",
    "size": "1280x720"
  }'
上限:单次最多 3 个 @元素(本网关经 Adobe Firefly,硬上限为 3;超过报 reference_elements: at most 3 items)。被引用的元素须已通过第 1 步创建;同一请求引用的多个元素需属于同一账号(网关自动路由,无需手动指定)。此功能仅 firefly-Kling-3.0-Omni-720p / firefly-Kling-3.0-Omni-1080p 支持。

轮询取片

curl -sS "$BASE_URL/v1/videos/task_xxx" \
  -H "Authorization: Bearer $TOKEN"

当响应中的 status 为 completed 时,读取顶层 video_url(短期签名下载地址,请在有效期内下载或转存)。

Python 完整请求

import time, requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 提交(文生;图生改用 multipart 带 input_reference)
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "firefly-Kling-3.0-720p",
    "prompt": "一只雄鹰在金色夕阳下掠过雪山之巅,电影感镜头",
    "seconds": "5",
    "size": "1280x720"
}).json()
task_id = task.get("id") or task.get("task_id")

# 轮询
while True:
    time.sleep(6)
    r = requests.get(f"{BASE}/videos/{task_id}", headers=H).json()
    if r.get("status") == "completed":
        print("下载:", r["video_url"]); break
    if r.get("status") == "failed":
        print("失败:", r); break

注意事项

  • model_not_found:检查大小写,必须是 firefly-Kling-3.0-720p / firefly-Kling-3.0-Omni-1080p 等(Kling/Omni 首字母大写)。
  • 时长不支持:标准版与 Omni 均支持 5–15 秒任意整数。
  • 任务失败:保留任务 ID 与错误响应交技术支持;不要为同一任务并发重复提交。

建议

  • 要多主体一致用 Omni 版:先 POST /v1/entities 建元素(每个 1–4 张、建议 4 张不同角度),再在 prompt 里 @元素名 引用。
  • 清晰度按预算选:720p 便宜、1080p 更清晰;画幅用像素 size 或 aspect_ratio 均可。
  • 模型名区分大小写(Kling / Omni 首字母大写),否则报 model_not_found。

Adobe Firefly · Gemini Omni Flash

Google Gemini Omni Flash 视频模型,经 Adobe Firefly 接入。同一个模型名支持三种模式,按你传入的素材自动切换:只传 prompt = 文生视频(T2V);额外带一张参考图 = 图生视频(I2V);额外带一段参考视频 = 视频生视频(V2V)。OpenAI 兼容异步接口:提交任务后轮询,完成时从响应顶层 video_url 获取成片。

成片无音频(静音输出)。三种模式的规格、时长档、计费完全一致。

模型

模型模式时长清晰度计费
firefly-gemini-omni-720p文生 / 图生 / 视频生视频(自动)4 / 6 / 8 / 10 秒720p按秒
按秒计费,三种模式同价:4 秒 、6 秒 、8 秒 、10 秒 。实际计费、模型可见性与可用额度以控制台模型列表及你的 API 令牌权限为准。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
鉴权Authorization: Bearer sk-你的令牌
任务模式异步;提交成功仅表示任务已入队
成片交付任务 status 为 completed 后,读取顶层 video_url

核心参数

参数类型必填说明
modelstring是固定 firefly-gemini-omni-720p
promptstring是视频画面、主体、动作、镜头和风格描述
secondsstring是目标时长(秒),仅支持 "4"、"6"、"8"、"10"
sizestring是画幅,取 "1280x720"(横 720p)或 "720x1280"(竖 720p);也接受纵横比 "16:9" / "9:16"。仅 720p,无需传 video_resolution
video_resolutionstring否仅 "720p";传纵横比 size 时可选传,不传也默认 720p
input_referencestring / 文件否图生视频(I2V)用:参考图(首帧)。可传图片 URL、base64(data:image/...;base64,)或 multipart 文件(@frame.jpg)。带此参数时整个请求改用 multipart 表单提交(见下方示例)。首发支持单张参考图
input_video文件 / base64否视频生视频(V2V)用:参考视频。仅支持 multipart 文件(@clip.mp4)或 base64(data:video/mp4;base64,);不支持纯 http URL。带此参数时整个请求改用 multipart 表单提交(见下方示例)
模式互斥优先级:同时传图和视频时按 视频生视频 处理。input_reference(图)与 input_video(视频)都是可选,都不传即为文生视频。

size 取值与输出

size画幅清晰度
"1280x720" 或 "16:9"横版 16:9720p
"720x1280" 或 "9:16"竖版 9:16720p

提交方式

模式Content-Type参考素材
文生视频(T2V)application/json无
图生视频(I2V)multipart/form-datainput_reference(URL / base64 / 文件,单张)
视频生视频(V2V)multipart/form-datainput_video(仅文件 / base64,不收 http URL)
同时传图和视频时按 V2V 处理;都不传即文生。

示例一:文生视频(T2V,JSON)

BASE_URL="https://aihubcc.cc"
TOKEN="sk-xxx"

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-gemini-omni-720p",
    "prompt": "日出时一只金毛小狗在草地上奔跑,柔和晨光,电影感镜头。",
    "seconds": "4",
    "size": "1280x720"
  }'

示例二:图生视频(I2V,带参考图 input_reference)

在文生的基础上,用 multipart 表单额外带一张参考图作为首帧,其余参数(seconds、size)一致。input_reference 支持本地文件、图片 URL 或 base64 三种传法。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-gemini-omni-720p' \
  -F 'prompt=让画面里的小狗自然转头看向镜头并摇尾巴,镜头缓慢推进。' \
  -F 'seconds=4' \
  -F 'size=1280x720' \
  -F 'input_reference=@frame.jpg;type=image/jpeg'
用图片 URL:把最后一行换成 -F 'input_reference=https://your-cdn.com/frame.jpg';用 base64:换成 -F 'input_reference=data:image/jpeg;base64,<...>'。

示例三:视频生视频(V2V,带参考视频 input_video)

用 multipart 表单带一段参考视频,模型在其基础上按 prompt 重新演绎(改风格、加动作等)。input_video 仅支持本地文件(@clip.mp4)或 base64,不支持纯 http URL。

curl -sS -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'model=firefly-gemini-omni-720p' \
  -F 'prompt=把这段片子改成水彩画风格,保留原有的运动。' \
  -F 'seconds=4' \
  -F 'size=1280x720' \
  -F 'input_video=@clip.mp4;type=video/mp4'
用 base64:把最后一行换成 -F 'input_video=data:video/mp4;base64,<...>'。

轮询取片

三种模式提交后都返回异步任务,轮询方式一致:

curl -sS "$BASE_URL/v1/videos/task_xxx" \
  -H "Authorization: Bearer $TOKEN"

当响应中的 status 为 completed 时,读取顶层 video_url:

{
  "id": "task_xxx",
  "status": "completed",
  "model": "firefly-gemini-omni-720p",
  "video_url": "https://..."
}
video_url 是短期签名下载地址,请在有效期内下载或转存。当前请直接使用完成任务返回的 video_url,不要依赖 /v1/videos/{task_id}/content。

Python 完整请求

import time, requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 提交(文生;I2V 用 multipart 带 input_reference,V2V 带 input_video)
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "firefly-gemini-omni-720p",
    "prompt": "日出时一只金毛小狗在草地上奔跑,柔和晨光",
    "seconds": "4",
    "size": "1280x720"
}).json()
task_id = task.get("id") or task.get("task_id")

# 轮询
while True:
    time.sleep(6)
    r = requests.get(f"{BASE}/videos/{task_id}", headers=H).json()
    if r.get("status") == "completed":
        print("下载:", r["video_url"]); break
    if r.get("status") == "failed":
        print("失败:", r); break

注意事项

  • 时长仅四档:seconds 只接受 4/6/8/10,其它值会报错。
  • V2V 视频来源:input_video 只收 multipart 文件或 base64 data URL,不会下载 http 链接;传 http 链接会被忽略、退化为文生。
  • I2V 参考图:首发支持单张参考图作首帧。
  • 无音频:成片为静音输出,不含音频轨。
  • 模型权限:确认 API 令牌已开通 Firefly 分组权限;任务失败请保留任务 ID 与错误响应交技术支持,勿对同一任务并发重复提交。

建议

  • 一模型三模式:只给 prompt=文生;加 input_reference=图生;加 input_video=视频生视频(同时给图和视频按 V2V)。
  • V2V 视频只走文件 / base64,不下载 http 链接;传 http 会退化成文生。
  • 成片无音频(静音输出);时长仅 4/6/8/10 四档。

Adobe Firefly · GPT Image 2

Adobe Firefly 的 GPT Image 2 文生图模型。客户侧只选择画布尺寸(1K / 2K / 4K),服务端统一使用 medium 质量(Adobe detailLevel=3)。接口使用 OpenAI 兼容的异步视频任务契约:提交任务后轮询,完成时从 video_url 下载 PNG 图片。

本页为 firefly 分组的 Adobe Firefly GPT Image 2,与导航中 gpt-fast 分组的 GPT-Image-2 是独立通道、独立线路,模型名不同、不能混用。

模型

模型画布尺寸服务端质量
firefly-gpt-image-1k1Kmedium(固定)
firefly-gpt-image-2k2Kmedium(固定)
firefly-gpt-image-4k4Kmedium(固定)

质量策略

服务端质量Adobe detailLevel客户侧
medium3固定,不开放 quality 字段
客户请求不需要传 quality;网关统一按 medium 提交。当前先按画布尺寸提供 1K / 2K / 4K,实际 Adobe 扣点以账号控制台结算记录为准,平台会持续观察质量档的真实扣费。

实际输出像素

画幅1k2k4k
1:11024×10242048×20482880×2880
16:91088×6082048×11363840×2128
9:16608×10881136×20482128×3840
21:91248×5282048×8643840×1616
5:41024×8162048×16483200×2576
4:31024×7522048×15203328×2480
3:21024×6722048×13603504×2352

重点:质量不会改变像素尺寸。Adobe 有总像素和最小像素硬限制,所以宽幅 1K 的最长边可能大于 1024,这不是质量档变化。

画幅

通过 aspect_ratio(或 size)选画幅,支持:auto、1:1、16:9、9:16、5:4、4:3、3:2、4:5、3:4、2:3、21:9。不传默认 1:1。

接口信息

项说明
Base URLhttps://aihubcc.cc
提交任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
鉴权Authorization: Bearer sk-你的令牌
成片交付任务 status 为 completed 后,读取顶层 video_url

核心参数

字段类型必填说明
modelstring是上表之一
promptstring是图片描述
aspect_ratiostring否画幅,见上;默认 1:1

提交方式

模式端点参考素材
文生图POST /v1/videos(JSON,异步契约,输出 PNG)无
图生图 / 图片编辑(i2i)同一 POST /v1/videos(JSON)reference_images 数组,每项 data:image/...;base64,,最多 6 张
⚠️ 本通道不支持 /v1/images/edits(会 404、不计费);图生图 / 编辑同样走 /v1/videos 异步契约。参考图只接受 base64 内联,不支持 multipart 文件。

curl 示例:提交与轮询

# 提交任务:1K + 16:9(质量由服务端固定为 medium)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-1k","prompt":"a red apple on a white ceramic plate, studio daylight, no text","aspect_ratio":"16:9"}'

# 提交任务:1K + 1:1
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-1k","prompt":"a ceramic tea set on a wooden table, editorial product photo","aspect_ratio":"1:1"}'

# 提交任务:2K + 9:16
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-2k","prompt":"a quiet mountain lake at sunrise, natural colors","aspect_ratio":"9:16"}'

# 提交任务:2K + 16:9
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-2k","prompt":"a modern glass office beside a tree-lined street","aspect_ratio":"16:9"}'

# 提交任务:4K + 21:9
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-4k","prompt":"a cinematic coastal road under soft evening light","aspect_ratio":"21:9"}'

# 提交任务:4K + 16:9
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-4k","prompt":"a premium watch on black stone, controlled studio lighting","aspect_ratio":"16:9"}'

# 提交任务:4K + 4:3
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"firefly-gpt-image-4k","prompt":"a botanical still life in a glass vase","aspect_ratio":"4:3"}'

# 轮询:把 task_xxx 替换成提交响应中的 id
curl https://aihubcc.cc/v1/videos/task_xxx \
  -H "Authorization: Bearer $TOKEN"
# 完成时读取响应中的 video_url(PNG 图片直链)

Python 完整请求

依赖:python -m pip install requests。脚本只提交一次任务;提交成功后持续轮询同一个任务 ID,完成后把 PNG 保存到本地。不要在客户端超时后重新提交同一张图。

#!/usr/bin/env python3
import os
import time
from pathlib import Path

import requests

BASE_URL = "https://aihubcc.cc"
TOKEN = os.environ["AIHUB_TOKEN"]

request_body = {
    "model": "firefly-gpt-image-2k",
    "prompt": "a red apple on a white ceramic plate, studio daylight, no text",
    "aspect_ratio": "16:9",
}
headers = {"Authorization": f"Bearer {TOKEN}"}

with requests.Session() as client:
    # Submit exactly once. quality is intentionally omitted; the service uses medium.
    response = client.post(
        f"{BASE_URL}/v1/videos",
        headers={**headers, "Content-Type": "application/json"},
        json=request_body,
        timeout=60,
    )
    response.raise_for_status()
    submitted = response.json()
    task_id = submitted.get("id") or submitted.get("task_id")
    if not task_id:
        raise RuntimeError(f"submit response has no task id: {submitted}")
    print(f"submitted task={task_id}")

    started = time.monotonic()
    while True:
        if time.monotonic() - started > 900:
            raise TimeoutError(f"task {task_id} is still running; keep polling it")
        task = client.get(
            f"{BASE_URL}/v1/videos/{task_id}", headers=headers, timeout=30
        )
        task.raise_for_status()
        body = task.json()
        status = str(body.get("status") or body.get("state") or "").lower()
        print(f"status={status}")
        if status in {"failed", "failure", "error", "cancelled", "canceled"}:
            raise RuntimeError(f"task {task_id} failed: {body}")
        if status in {"completed", "succeeded", "success", "done"}:
            image_url = body.get("video_url") or body.get("url")
            if not image_url:
                raise RuntimeError(f"completed task has no video_url: {body}")
            break
        time.sleep(5)

    output = Path("firefly-2k-16x9.png")
    with client.get(image_url, headers=headers, stream=True, timeout=60) as download:
        download.raise_for_status()
        with output.open("wb") as file:
            for chunk in download.iter_content(1024 * 1024):
                if chunk:
                    file.write(chunk)
    print(f"saved {output} ({output.stat().st_size} bytes)")

运行前设置令牌:export AIHUB_TOKEN="sk-你的令牌"。把 model 改成 firefly-gpt-image-1k 或 firefly-gpt-image-4k 即可切换画布档位;aspect_ratio 可替换为本页支持的其它画幅。

shell 自动轮询

TASK_ID="task_xxx"
while true; do
  BODY=$(curl -fsS "https://aihubcc.cc/v1/videos/$TASK_ID" \
    -H "Authorization: Bearer $TOKEN") || exit 1
  STATUS=$(printf '%s' "$BODY" | jq -r '.status // empty')
  printf 'status=%s\n' "$STATUS"
  case "$STATUS" in
    completed|succeeded)
      printf '%s\n' "$BODY" | jq -r '.video_url // .data[0].url'
      break ;;
    failed|failure|error|cancelled|canceled)
      printf '%s\n' "$BODY" | jq . >&2
      exit 2 ;;
  esac
  sleep 10
done
不要重复提交已被接受的任务。如果客户端超时,继续轮询原 task;任务失败后再根据错误信息修改请求。任务失败是否计费以控制台账单为准,仍应保留 task ID 供后台定位。

图生图 / 图片编辑(i2i)

⚠️ 本通道不支持 OpenAI 的 /v1/images/edits 端点。firefly-gpt-image-* 的文生图与图片编辑都走上面同一套异步 /v1/videos 契约。若客户端按 OpenAI 习惯调 /v1/images/edits 做图片编辑,网关会返回 404 Not Found——请求在路由层即被拒,不会创建任务、平台后台查不到记录、也不计费。需要图片编辑请改用下面的 /v1/videos 写法。

本通道支持两种带图用法,都走同一套 /v1/videos:图生图(传 1-6 张参考图,参考其风格 / 主体生成新图)与图片编辑(传原图,改背景 / 换元素 / 局部修改)。两者请求格式完全一样,区别只在参考图张数与 prompt 的意图——都是在 JSON 请求体里加一个 reference_images 参考图数组;其余字段(model / aspect_ratio)、轮询方式、从 video_url 下载 PNG,都与文生图一致。

字段类型必填说明
reference_images数组图生图/编辑必填原图 / 参考图列表,每项为 data:image/...;base64, 内联的 Base64 图片。单张也要放进数组(直接传字符串会 400)。最多 6 张。字段名也可用 images。
promptstring是你要如何编辑,例如“把背景换成海边日落,人物主体保持不变”
model / aspect_ratio同文生图与本页文生图一致(firefly-gpt-image-1k/2k/4k + 画幅)
# ① 图生图:参考图 + 描述 → 生成新图(参考风格 / 主体,可传 1-6 张)
REF1="data:image/png;base64,$(base64 < ref1.png | tr -d '\n')"
REF2="data:image/png;base64,$(base64 < ref2.png | tr -d '\n')"
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-gpt-image-2k",
    "prompt": "参考这些图的画风,画一只戴宇航头盔的柴犬,居中构图",
    "aspect_ratio": "1:1",
    "reference_images": ["'"$REF1"'", "'"$REF2"'"]
  }'

# ② 图片编辑:原图 + 描述 → 改后的图(reference_images 为 Base64 data URI 数组,单张也用数组)
IMG_B64="data:image/png;base64,$(base64 < input.png | tr -d '\n')"
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{
    "model": "firefly-gpt-image-2k",
    "prompt": "把背景换成海边日落,人物主体保持不变",
    "aspect_ratio": "1:1",
    "reference_images": ["'"$IMG_B64"'"]
  }'

# 提交返回 {"id":"task_xxx", ...};随后轮询(与文生图完全相同):
curl https://aihubcc.cc/v1/videos/task_xxx \
  -H "Authorization: Bearer $TOKEN"
# status=completed 后,读响应里的 video_url —— 即改后图片的 PNG 直链
参考图只接受 Base64(data:image/...;base64,)内联,不支持 multipart 文件上传(-F "image=@file" 是 /v1/images/edits 的用法,本通道不适用)。参考图含真人脸会被 Adobe 审核拒绝,解法见「错误码」页的 image_style 风格化。

注意事项

  • 质量固定 medium(Adobe detailLevel=3),客户端不传 quality;质量不改变输出像素。
  • 宽幅 1K 的最长边可能大于 1024(Adobe 总像素 / 最小像素硬限制),非质量档变化。
  • 图生图 / 编辑参考图只接受 base64 内联,不支持 multipart 文件;含真人脸会被 Adobe 审核拒绝(解法见错误码页 image_style)。
  • 不要重复提交已被接受的任务;客户端超时继续轮询原 task,失败按控制台账单为准。

建议

  • 按画布档选价:1K / 2K / 4K 只改画布尺寸、质量恒 medium;实际扣点以控制台结算为准。
  • 要精确构图先用 aspect_ratio 定画幅(默认 1:1),对照「实际输出像素」表核对最终尺寸。
  • 图生图 / 编辑把参考图转 data:image/...;base64, 放进 reference_images 数组(单张也用数组)。

Adobe Firefly · 错误码 & 审核问题归档

Adobe Firefly 的内容审核较严格,视频任务失败大多来自 Adobe 侧的内容审核或输入不合规,而非网关故障。收到失败后请先看错误类型判断能否重试:内容审核 / 参数类属确定性失败(同样输入重试必然再失败,需改输入);账号 / 过载类属可自动恢复(网关会自动换号或重试,通常自愈)。失败不计费。

⚠️ Adobe 审核严(重点):真人脸参考图、涉敏/名人/品牌等提示词、生成结果被判不安全、生成音频疑似版权 都会被 Adobe 拒绝。这类是确定性拒绝——同一张图 / 同一句提示词重试永远失败,必须更换输入,请勿对同一失败任务反复重试。

一、内容审核类(Adobe 拒绝 · 重试无效 · 需改输入)

错误触发返回提示(示例)处理
参考图含真人脸
reference_image_privacy_error
参考图 / 首帧里出现真实人物面孔参考图中包含真人面孔,Adobe 内容策略拒绝生成…换成不含真人脸的参考图;确需用真人图时,加可选参数 image_style=anime(见下)让网关先把参考图风格化(动漫化)再生成
提示词不安全
prompt_unsafe
提示词含 Adobe 判定的不适宜内容(暴力 / 成人 / 名人 / 品牌等)提示词被 Adobe 内容安全策略判定为不适宜…改写提示词,去掉敏感 / 名人 / 品牌 / 违规描述
生成结果不安全
video_unsafe
成片被 Adobe 事后审核判定不安全(提交时未拦、生成后拒绝)请求被 Adobe 内容策略拒绝(video_unsafe)…调整提示词或更换随机种子后重试
音频疑似版权
native audio copyright
带音频的模型(如 Seedance)生成的音频被 Adobe 判可能涉版权Adobe 判定本次生成的音频可能涉及版权限制…调整提示词或更换参考素材后重试(尽量避免具体歌曲 / 台词 / 品牌音效等易触发版权的描述)

参考图含真人脸的解法 · image_style 风格化(可选)

参考图真人脸是最常见的审核拒绝之一。确需用真人照片做图生视频(i2v)时,可加一个可选参数 image_style:网关会在提交 Adobe 前把你的参考图整图风格化(转成明显非真实照片的画风),从而通过 Adobe 的“真人脸”内容审核。不传 image_style 时行为完全不变(原图直发)——是否风格化的主动权在你。

参数取值说明
image_styleanime把参考图转成动漫 / 绘画风后再生成;仅对带参考图的图生视频(i2v)生效,适用于 Seedance / VEO / Kling / Gemini-Omni。留空 = 不处理。目前支持 anime 一种,后续按需增加。

作为顶层字段传(与 prompt / model / seconds 同级)。示例(multipart):

curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -F model=firefly-Seedance-2.0-fast-480p -F seconds=4 -F "size=9:16" \
  -F prompt="镜头缓缓推近,人物自然微笑" \
  -F input_reference=@person.jpg \
  -F image_style=anime
⚠️ 用前须知:① 输出会是动漫 / 绘画风(不再是写实真人),请按需使用;② 风格化能过“真人脸参考门”,但 Adobe 的输出侧审核(video_unsafe / 音频版权)仍是概率性的,个别任务可能要重试 1-2 次才出片(失败不计费);③ 这是把真人变风格化的绕行方案,不适用需要保留写实真人的场景。

二、输入 / 参数不合规(确定性失败 · 需改请求)

错误触发处理
参考图无法识别
cannot identify image file
传入的参考图不是有效图片(文件损坏 / 非图片 / base64 截断错误)确认图片能正常打开;base64 用完整 data:image/...;base64, 前缀
参考图 URL 不合规
Only http/https or data URL images are supported / fetch image_url … 404
参考图 URL 非 http(s) / data,或该 URL 404 取不到用可公开访问的 http(s) 直链,或改用 base64 / 文件上传
参考图数量超限
validation_error … at most N items
该模型不支持多参考图或超过上限按对应模型文档的参考图上限提交
提示词过长
prompt: at most 2500 characters
prompt 超过 2500 字符精简提示词到 2500 字符内
画幅 / 时长参数冲突size(横)与 aspect_ratio(竖)互相矛盾;或时长档位不支持见各模型页参数说明;时长只认 seconds;size 传纵横比时必带 video_resolution

三、账号 / 权限 / 配额(多为可自动恢复)

错误含义处理
模型访问被拒
Adobe model access denied
当前账号无该模型权限或无音频权限(如普通档请求带音频的模型)。网关会自动换号重试多数自动恢复;持续失败说明该模型 / 该内容需积分档账号或特定权限,请联系我们
积分不足 / 耗尽
taste_exhausted / credit balance below cost
该账号积分不足以支撑本次生成,网关自动改用其它账号一般自动恢复;整体积分紧张时联系我们补充
限流
rate_limit / 429
账号短时请求过密稍后重试并降低并发

四、临时 / 基础设施(网关自动重试 · 通常自愈)

错误含义处理
服务过载
408 system under load
Adobe 服务瞬时过载网关自动重试;持续可稍后再试
服务内部错误
Unknown internal error
Adobe 生成侧瞬时内部错误网关自动重试;重试后仍失败再联系我们
超时
timeout / 参考图下载超时
生成超时,或参考图 URL 下载慢 / 失败重试;参考图尽量用稳定直链或直接上传文件
📌 排查建议:失败时请保留 任务 ID(task_xxx) 与完整错误响应再联系我们——凭任务 ID 可在后台定位到具体那一条。内容审核 / 参数类属确定性失败,请勿对同一任务反复重试(既不会成功,也占用账号请求配额)。

Seedance 2.0 / 2.5 · 官方直连 Video

⚡ 字节跳动 · Seedance 2.0 / 2.5 官方直连:涵盖 mini(经济档)、fast(快速出片)、pro(满血旗舰,画质更高且独有 1080p/4K)与 Seedance 2.5。支持文生视频 / 图生视频(首帧 / 首尾帧) / 视频编辑 / 全能多模态参考。使用「Seedance 2.0」或「Doubao」分组令牌调用,按 token 计费、失败不计费、默认生成音频、无水印。

模型

⚠️ 计费方式为按 token(按视频输出 token 计费,非按秒)。实际费用 = 输出 token 数 × 单价,token 数随分辨率 × 时长变化,每笔实际 token 与扣费可在控制台任务详情查看。
💡 计费直观换算说明:由于视频 Token 较抽象,平台按官方基准 Token 输出速率(480p 约 1.36万/秒、720p 约 2.16万/秒、1080p 约 4.86万/秒、4K 约 19.44万/秒)将百万 Token 单价换算成了直观的每秒单价与典型 5 秒参考花费。含参考视频档位享受官方专属特惠折扣(低至 5.8~),基准每秒花费远低于纯文/图生。(注:如传入较长参考视频,官方源站会对输入素材时长按优惠单价计费,实际以接口返回的 usage 结算。)
模型档位 · 分辨率计费折合每秒(含视频特惠)折合每秒(纯文/图生)典型 5 秒预计
seedance-2.0-720p720p(特惠线)按token约 约 约 ~
seedance-2.0-fast-720pfast · 720p(特惠线)按token约 约 约 ~
seedance-2.0-mini-720pmini · 720p(特惠线)按token约 约 约 ~
seedance-2.5-720p2.5 · 720p(特惠线)按token约 约 约 ~
doubao-seedance-2.0-mini-480pmini · 480p按token约 约 约 ~
doubao-seedance-2.0-mini-720pmini · 720p按token约 约 约 ~
doubao-seedance-2.0-mini-1080pmini · 1080p按token约 约 约 ~
doubao-seedance-2.0-fast-480pfast · 480p按token约 约 约 ~
doubao-seedance-2.0-fast-720pfast · 720p按token约 约 约 ~
doubao-seedance-2.0-fast-1080pfast · 1080p按token约 约 约 ~
doubao-seedance-2.0-pro-480ppro(满血)· 480p按token约 约 约 ~
doubao-seedance-2.0-pro-720ppro(满血)· 720p按token约 约 约 ~
doubao-seedance-2.0-pro-1080ppro(满血)· 1080p按token约 约 约 ~
doubao-seedance-2.0-pro-4kpro(满血)· 4K按token约 约 约 ~
doubao-seedance-2.5-720p2.5 · 720p按token约 约 约 ~
doubao-seedance-2.5-1080p2.5 · 1080p按token约 约 约 ~
质量 mini < fast < pro(满血)< 2.5;4K 仅 pro 档有。模型名全部小写。失败不计费。
「特惠线」四款(seedance-2.0-720p / seedance-2.0-fast-720p / seedance-2.0-mini-720p / seedance-2.5-720p)只提供 720p,传入分辨率更高的参考视频会被拒绝。
fast 与 mini 档官方没有 1080p 规格,这两档的 1080p 由本平台提供。
✅ 可用性:默认 auto 智能令牌已可直接调用上述全部档位(含四款特惠线)。若某档位不在你令牌的 /v1/models 列表中,说明该令牌设了模型白名单或未含 Doubao 分组,联系我们开通即可。

接口信息

项说明
提交端点POST /v1/videos 或 POST /v1/video/generations(标准 JSON,双端点完全等价兼容)
轮询端点GET /v1/videos/{task_id} 或 GET /v1/video/generations/{task_id}
视频直出预览GET /v1/videos/{task_id}/content(带 Bearer 令牌鉴权 302 重定向流式返回成片)
下载成片完成后响应里的 video_url(官方高速下载直链)
鉴权方式Authorization: Bearer sk-你的令牌
令牌分组Doubao(或 auto 智能路由分组)

核心参数规范

参数类型必填默认说明
modelstring是模型名,如 seedance-2.5-720p、seedance-2.0-720p、seedance-2.0-fast-720p、doubao-seedance-2.0-mini-480p 等
promptstring是画面 / 风格 / 动作描述。无我方硬性长度上限
duration / secondsinteger / string否5视频输出时长(秒)。
• 2.0 系列:支持 4–15 秒 或 -1(模型自选);
• 2.5 系列:支持 4–30 秒 或 -1(编辑模式强制 -1)
ratio / aspect_ratiostring否adaptive / 16:9画幅比例。支持 21:9、16:9、4:3、1:1、3:4、9:16、adaptive。
• 重要修正:显式指定比例时(如 9:16 竖屏),模型将严格按该比例渲染,不再被参考图/参考视频强制改回横屏;
• 未指定时,有参考素材默认 adaptive,纯文生默认 16:9
resolutionstring否依模型视频分辨率,480p / 720p / 1080p
images / image_urlsarray否参考图片数组。支持纯 URL 或 {url, role} 对象:
• 1张默认 first_frame(首帧);
• 2张默认首尾帧 first_frame + last_frame;
• 3张及以上全量作为 reference_image;
• 也可使用单字段 image_url、first_image_url、last_image_url、reference_images
videosarray否参考视频数组(videos 或 reference_videos),支持纯 URL 或 {url, role: "reference_video"}。
• 2.0 限制 ≤3 段;2.5 限制 ≤10 段
audiosarray否参考音频数组(audios 或 reference_audios),支持纯 URL 或 {url, role: "reference_audio"}。
• 2.0 限制 ≤3 段且不能仅音频;2.5 限制 ≤10 段且可仅音频
generate_audioboolean否true是否生成原生同步音轨,本站默认开启 true
watermarkboolean否false视频水印开关,本站默认关闭 false(无水印)
camera_fixedboolean否false锁定镜头开关,设为 true 可防止运镜漂移
seedinteger否随机随机种子(用于复现画面效果)
return_last_frameboolean否false是否在成片结果中额外返回尾帧图片(便于衔接下一段生成)
output_formatstring否mp4成片容器格式,可选 mp4 或 mov(推荐剪辑后期调色使用)
omni_reference_task_typestring否auto全模态任务意图:auto(自动推断)、edit(视频编辑)、extend(视频延长续写)
contentarray否官方原生多模态数组,若客户端已封装官方 content 结构,支持整包直通透传
⚠️ 素材互斥与使用约束:
1. 首尾帧互斥:首帧(first_frame)与尾帧(last_frame)模式不能与全能参考(参考视频/参考音频)同时混用;
2. 音频依附性:2.0 系列参考音频不能单独使用,必须搭配至少一张参考图或一段参考视频;2.5 系列放宽允许仅音频驱动;
3. 音色与人物绑定:generate_audio 生成的同步配音音色/性别跟随画面人物设定;参考音频主要作为对白语速、动作节奏与配乐氛围参考;
4. 视频规格:参考视频分辨率不得超过所选档位(480p 档 ≤480p、720p 档 ≤720p、1080p 档 ≤1080p),单个时长 4–30 秒。

提交方式与玩法自动切换

标准 JSON 请求。服务端根据传入的素材字段自动判定并路由最佳玩法:

玩法模式触发方式 / 字段说明
文生视频 (T2V)只传 prompt + duration纯文字驱动,严格尊重 aspect_ratio 画幅(默认 16:9)
单图图生视频 (I2V)传 image_url 或 1 张 images单图首帧运镜动效化,可显式指定画幅或自适应
双图首尾帧过渡传 first_image_url + last_image_url 或 2 张 images连接两张关键帧平滑生成过渡镜头
视频编辑 (V2V)传 videos 或 reference_videos在原视频画面基础上按提示词重新演绎风格与光影
全能多模态参考组合传入 images + videos + audios综合多维素材,角色参考图片,动作跟随视频,节奏跟随音频
官方原生直通传入 content 数组客户端预构建的官方 content 多模态结构整包透传

示例请求

# 1. 标准调用格式(指定 12 秒 + 9:16 竖屏 + 生成原生音频)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-fast-720p",
    "prompt": "一只穿红大衣的小猫在雪地里抓雪花,电影微距",
    "duration": 12,
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "generate_audio": true
  }'

# 2. 图生视频(单图首帧,8 秒)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-fast-720p",
    "prompt": "镜头缓慢平滑推进,光线逐渐变亮",
    "duration": 8,
    "aspect_ratio": "16:9",
    "image_url": "https://your-domain.com/start_frame.jpg"
  }'

# 3. 首尾帧平滑过渡(6 秒)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-mini-720p",
    "prompt": "从白天的宁静城市平滑过渡到夜晚霓虹闪烁",
    "duration": 6,
    "first_image_url": "https://your-domain.com/day.jpg",
    "last_image_url": "https://your-domain.com/night.jpg"
  }'

# 4. 全能多模态参考(多图 + 参考视频 + 参考音频)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-fast-720p",
    "prompt": "参考给定素材的风格与运镜动作生成",
    "duration": 10,
    "images": ["https://your-domain.com/char_1.jpg", "https://your-domain.com/char_2.jpg"],
    "videos": ["https://your-domain.com/camera_ref.mp4"],
    "audios": ["https://your-domain.com/bgm_ref.mp3"]
  }'

# 5. 原生 content 数组直通透传(官方格式)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.5-720p",
    "content": [
      {"type": "text", "text": "现代都市街道,细雨霏霏,电影质感"},
      {"type": "image_url", "image_url": {"url": "https://your-domain.com/ref.jpg"}, "role": "reference_image"}
    ],
    "duration": 5,
    "aspect_ratio": "16:9"
  }'

轮询取片与成片预览

# 1. 轮询任务状态(双端点兼容)
curl -sS https://aihubcc.cc/v1/videos/TASK_ID -H "Authorization: Bearer $TOKEN"

# 2. 成片下载(完成后响应中返回 video_url 官方直链)
curl -L "VIDEO_URL" -o result.mp4

# 3. 视频直出预览(支持网关流式直出)
curl -L -H "Authorization: Bearer $TOKEN" https://aihubcc.cc/v1/videos/TASK_ID/content -o preview.mp4
返回的 video_url 为官方高速下载直链,稳定不过期。失败不计费。

Python 完整请求示例(全生命周期)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-你的令牌"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 1. 提交视频生成任务(指定时长 12 秒 + 9:16 竖屏 + 开启原生音频)
payload = {
    "model": "seedance-2.0-fast-720p",
    "prompt": "一只穿红大衣的小猫在雪地里抓雪花,电影微距镜头,毛发飞雪细节生动",
    "duration": 12,
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "generate_audio": True
}

resp = requests.post(f"{BASE_URL}/v1/videos", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
task_id = resp.json()["task_id"]
print(f"任务已提交,Task ID: {task_id}")

# 2. 轮询直到生成完毕
start_time = time.time()
while time.time() - start_time < 900:
    poll_res = requests.get(f"{BASE_URL}/v1/videos/{task_id}", headers=HEADERS, timeout=30).json()
    status = poll_res.get("status")
    print(f"当前状态: {status} (耗时: {int(time.time() - start_time)}s)")
    if status == "completed":
        video_url = poll_res.get("video_url") or poll_res["data"][0]["url"]
        # 3. 下载保存成片
        content = requests.get(video_url, timeout=120).content
        with open("seedance_output.mp4", "wb") as f:
            f.write(content)
        print("成片已成功下载至本地 seedance_output.mp4!")
        break
    elif status in ("failed", "canceled"):
        raise RuntimeError(f"任务失败: {poll_res.get('error')}")
    time.sleep(5)

注意事项

  • 时长与画幅严格生效:现已全面修复时长与画幅传递机制,传 duration: 12 即出真实 12 秒成片;显式传 aspect_ratio: "9:16" 严格出竖屏,不会被素材强制改为横屏。
  • 音频与水印规范:本站默认开启原生同步音频(generate_audio: true),默认关闭水印(watermark: false,交付干净成品)。
  • 双端点全面兼容:支持 /v1/videos 与 /v1/video/generations 双提交/轮询端点,支持 /content 视频直出预览。
  • 多模态素材格式:参考图 / 参考音频除公网 URL 外,也支持 data:...;base64, 编码;官方 content[] 结构亦直接支持透传。

多模态输入 · 官方素材规格要求

以下为官方多模态素材规格约束。建议素材使用公网可直接下载的稳定直链或 Base64 Data URI。

图片要求

项要求
传入方式公网 URL、Base64 Data URI
图片格式jpeg、png、webp、bmp、tif、gif、heic、heif
宽高比(宽/高)(0.4, 2.5)
边长(px)(300, 6000)
大小单张图片 < 30MB;大文件建议使用公网直链
图片数量首帧 1 张;首尾帧 2 张;参考图 2.0 支持 1–9 张,2.5 支持 1–30 张

视频要求

项要求
传入方式公网视频 URL 或 Base64 Data URI
视频格式mp4、mov(H.264/AVC、H.265/HEVC)
分辨率480p、720p、1080p(不超过请求档位)
时长单个视频 4–30 秒;2.0 最多 3 段,2.5 最多 10 段
大小单个视频 ≤ 50MB
帧率(FPS)[24, 60]

音频要求

项要求
传入方式公网音频 URL、Base64 Data URI
音频格式wav、mp3
时长单个音频 2–30 秒;2.0 最多 3 段(需配合图片或视频),2.5 最多 10 段(允许仅音频)
大小单个音频 ≤ 15MB

Seedance 2.5 官方直连 Video

🎬 字节 Seedance 2.5 官方视频模型(官方直出)。一个模型名支持三种模式,按你传入的素材自动切换:只传 prompt = 文生视频(T2V);带参考图 = 图生视频(I2V);带参考视频 = 视频编辑(V2V)。用「Seedance 2.0」令牌调用;按 token 计费、失败不计费、默认生成音频。

模型

⚠️ 按 token 计费(按视频输出 token 计,非按秒)。文生 / 图生(无参考视频)与视频编辑(带参考视频)单价不同——视频编辑更低。实际费用 = 输出 token 数 × 单价,token 数随分辨率 × 时长变化;以实际返回的 token 用量结算,每笔可在控制台任务详情核对。
档位折合每秒(视频编辑特惠)折合每秒(纯文/图生)典型 5 秒预计
720p · doubao-seedance-2.5-720p约 约 约 ~
1080p · doubao-seedance-2.5-1080p约 约 约 ~
分辨率由模型名决定(720p / 1080p),模型名全小写。文生 / 图生(无参考视频)单价高于视频编辑(带参考视频);失败不计费。

三种模式

模式怎么触发seconds参考媒体(放 metadata)
文生视频 T2V只传 prompt,不带任何参考素材4–30,自选无
图生视频 I2V带参考图4–30,自选reference_images
视频编辑 V2V带参考视频必须 = 参考视频时长reference_videos

接口信息

项说明
提交端点POST /v1/videos 或 POST /v1/video/generations(标准 JSON,双端点完全等价兼容)
轮询端点GET /v1/videos/{task_id} 或 GET /v1/video/generations/{task_id}
视频直出预览GET /v1/videos/{task_id}/content(带 Bearer 令牌鉴权 302 重定向流式返回成片)
下载成片完成后响应里的 video_url(官方高速下载直链)
鉴权方式Authorization: Bearer sk-你的令牌
令牌分组Doubao(或 auto 智能路由分组)

核心参数

参数类型必填默认
modelstring是doubao-seedance-2.5-720p 或 doubao-seedance-2.5-1080p(分辨率即档位)
promptstring是生成 / 编辑描述(如"一只橘猫在草地奔跑""改成夜景赛博朋克风格")。无我方硬性长度上限
secondsstring是字符串,范围 4–30。文生 / 图生自选;视频编辑必须 = 参考视频时长
metadata.reference_imagesarray(URL / base64)否图生视频用。公网图片 URL 或 base64 data-URI,≤30 张;放 metadata 内
metadata.reference_videosarray(URL / base64)否视频编辑用。公网 mp4 URL 或 base64,单个 4–30 秒、分辨率 ≤ 档位,≤10 个(首个决定输出时长 / 画幅);放 metadata 内
metadata.reference_audiosarray(URL / base64)否配乐 / 音效参考,公网 URL 或 base64,≤10 个;放 metadata 内
参考媒体统一放 metadata 里、用公网 URL 或 base64 data-URI,不支持 multipart 文件上传(URL 须无需登录即可下载)。单次最多 30 图 + 10 视频 + 10 音频,超出报错、不产任务、不计费。

提交方式

JSON(POST /v1/videos)。三种模式由素材自动切换:不带参考素材 = 文生视频;metadata.reference_images 带图 = 图生视频;metadata.reference_videos 带视频 = 视频编辑。所有参考媒体(图 / 视频 / 音频)都放 metadata,用公网 URL 或 base64 data-URI,不支持 multipart 文件上传(URL 须无需登录即可下载)。默认生成音频。

示例请求

# ① 文生视频:只传 prompt + seconds(字符串)+ 模型名(分辨率自带)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"doubao-seedance-2.5-720p","prompt":"一只橘猫在草地上奔跑,阳光明媚","seconds":"8"}'

# ② 图生视频:metadata.reference_images 放参考图(公网 URL 或 base64)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"doubao-seedance-2.5-720p","prompt":"镜头缓慢推进,光线渐暗","seconds":"8",
       "metadata":{"reference_images":["https://你的图/first.jpg"]}}'

# ③ 视频编辑:metadata.reference_videos 放参考视频;seconds 必须=参考视频时长
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"doubao-seedance-2.5-1080p","prompt":"把画面改成水彩画风格,柔和色调","seconds":"8",
       "metadata":{"reference_videos":["https://你的视频/clip.mp4"]}}'

轮询取片

curl https://aihubcc.cc/v1/videos/TASK_ID -H "Authorization: Bearer $TOKEN"
# status=completed 后用 video_url 下载
curl -L "VIDEO_URL" -o result.mp4
返回的 video_url 为官方高速下载直链,有时效请及时保存。失败不计费。

Python 完整请求

import time, requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-你的Seedance令牌", "Content-Type": "application/json"}
# 文生视频;图生 / 视频编辑:在 metadata 里加 reference_images / reference_videos
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "doubao-seedance-2.5-720p",
    "prompt": "一只橘猫在草地上奔跑,阳光明媚",
    "seconds": "8",   # 字符串;视频编辑时必须 = 参考视频时长
    # "metadata": {"reference_images": ["https://你的图/first.jpg"]},   # 图生视频
    # "metadata": {"reference_videos": ["https://你的视频/clip.mp4"]},  # 视频编辑
}).json()
tid = task["task_id"]
while True:
    r = requests.get(f"{BASE}/videos/{tid}", headers=H).json()
    if r["status"] in ("completed", "failed"):
        break
    time.sleep(5)
url = r.get("video_url") or (r.get("data") or [{}])[0].get("url")
open("seedance25.mp4", "wb").write(requests.get(url).content)

注意事项

  • 三种模式一个模型名:不带参考素材 = 文生视频;metadata.reference_images = 图生视频;metadata.reference_videos = 视频编辑。分辨率由模型名(720p / 1080p)决定。
  • ⚠️ 视频编辑时 seconds 必须等于参考视频时长,否则报错并提示正确秒数(不产任务、不计费);文生 / 图生的 seconds 在 4–30 自选。seconds 传字符串。
  • 参考媒体统一放 metadata、用公网 URL 或 base64 data-URI,不支持 multipart 文件上传;URL 须无需登录即可下载。单次上限 30 图 + 10 视频 + 10 音频。
  • 参考视频须 mp4、单个 4–30 秒、分辨率不超过档位(720p ≤1280×720、1080p ≤1920×1080),超出被拒;编辑高清源选 1080p 档。
  • ⚠️ 价格分两档:文生 / 图生(无参考视频)单价高于视频编辑(带参考视频);以实际返回的 token 用量结算,可在控制台任务详情核对。
  • ⚠️ 配音音色 / 性别跟随画面人物,不跟随上传的参考音频:generate_audio 为画面人物合成配音,上传女声不会把男性角色改成女声;想要女声请让画面人物为女性。

多模态输入 · 官方素材要求

以下为官方对素材的技术约束(格式 / 尺寸 / 编码 / 保存)。各素材的数量与时长上限以本页「核心参数」为准(≤30 图 + ≤10 视频·单个 4–30s + ≤10 音频)。「素材 ID」经本站中转不适用;请把参考媒体放 metadata、用公网 URL 或 Base64 data-URI。

参考图要求

项要求
传入方式图片 URL、图片 Base64 编码
图片格式jpeg、png、webp、bmp、tif、gif;Seedance 2.0 及以上系列另支持 heic、heif
宽高比(宽/高)(0.4, 2.5)
边长(px)(300, 6000)
大小单张图片 < 30MB;请求体 ≤ 64MB。大文件请勿使用 Base64 编码

参考视频要求

项要求
传入方式视频 URL(须无需登录即可下载)或 Base64 data-URI,放 metadata.reference_videos
视频格式mp4、mov(支持编码见下表)
分辨率720p、1080p(≤ 所选档位)
宽高比(宽/高)[0.4, 2.5]
边长(px)[300, 6000]
总像素数宽 × 高 ∈ [409600(640×640), 2086876(2206×946)]
大小单个视频 ≤ 50MB
帧率(FPS)[24, 60]
容器格式常用扩展名MIME支持编码
MP4.mp4video/mp4视频:H.264/AVC、H.265/HEVC;音频:AAC、MP3
QuickTime.movvideo/quicktime视频:H.264/AVC、H.265/HEVC

参考音频要求

项要求
传入方式音频 URL、音频 Base64 编码
音频格式wav、mp3
大小单个音频 ≤ 15MB;请求体 ≤ 64MB。大文件请勿使用 Base64 编码

保存时间

对象保存时长
任务记录保存 7 天,查询区间 [T−7天, T),T 为请求发起时刻的 UTC 秒级时间戳
视频 URL保存 24 小时,超时后无法访问,请及时下载或转存

建议

  • 文生 / 图生:seconds 在 4–30 自选;想要更稳的风格 / 主体,用 metadata.reference_images 带 1–2 张参考图。
  • 视频编辑:先截好要编辑的关键片段(4–30 秒),seconds 填该片段实际秒数;1080p 高清源用 doubao-seedance-2.5-1080p,720p 源用 720p 档更省。
  • 提示词写清"要什么风格 / 保留什么",编辑 / 图生类配参考图能更稳定地锁定风格。

Seedream 图像生成 Image

🖼️ 字节「即梦 Seedream」官方图像模型(火山官方直出)。用同一「Seedance 2.0」令牌调用;同步出图 POST /v1/images/generations —— 请求返回即拿到图片,无需轮询。按张计费、失败不计费。

模型

模型版本定位计费方式尺寸与档位说明
doubao-seedream-5-0-pro5.0 Pro旗舰画质,官方最新按张 (按分辨率阶梯)传入 size 自动识别计费,无需切换模型名:
• ≤ 261万像素(如 1024x1024, 1920x1080):
• > 261万像素(如 2048x2048, 2K, 4K):
doubao-seedream-5-05.0新版,画质强、性价比最高按张基础版支持到 4096×4096
doubao-seedream-4-54.5稳定成熟档按张基础版支持到 4096×4096
📌 提示说明:平台对 doubao-seedream-5-0-pro 实施单一模型智能计费。调用标准 POST /v1/images/generations 时,无需在 model 后加 -1k、-2k 等冗余后缀,只需在请求体中传入目标 size,系统将根据实际像素规格自动扣除对应档位费用。每次调用返回 1 张图,按张计费,失败不计费。

接口信息

项说明
文生图POST /v1/images/generations(同步,返回即出图)
图生图 / 编辑同 /v1/images/generations(带 image 字段)或 /v1/images/edits
返回data[0].url(默认)或 data[0].b64_json
鉴权Authorization: Bearer sk-你的令牌
令牌分组Doubao

核心参数

参数类型必填默认说明
modelstring是上表三个之一
promptstring是图像描述提示词。无我方硬性长度上限(走火山官方)
sizestring否1024x1024图像生成尺寸规格,支持两种格式:
1. 像素规格(推荐):"1024x1024" (1K 档)、"2048x2048" (2K 档)、"3840x2160" (4K 档)、"2560x1440" 等;
2. 档位别名:"2K"、"4K";
(计费阶梯:总像素 ≤ 261 万归入 1K 基准档按 收费;> 261 万归入高清档按 收费)
response_formatstring否urlurl(图片直链)或 b64_json(base64 内嵌)
imagestring / array否参考图(图生图 / 编辑 / 多图融合):单张字符串、多张数组。填了 image 即进入编辑;"二次编辑" = 把上一轮产图 URL 回传继续改,可反复迭代。参考图最多 14 张,参考图 + 产图合计 ≤ 15。元素为公网 URL 或 Base64(data:image/png;base64,...)
sequential_image_generationstring否disabled组图模式:设 "auto" 让模型一次连续生成一组相关图(组图,data 返回多张)。产图 + 参考图合计 ≤ 15 张
ninteger否1⚠️ 本线路 n 每次仅返回 1 张,请保持 n=1;n>1 会按 n 计费但仍只返回 1 张。要一次一组相关图请用上面的 sequential_image_generation:"auto" 组图

分辨率范围与档位说明(实测):

模型最高输出最低说明
doubao-seedream-4-54096×4096(真 4K)约 1920×1920基础版支持到 4K
doubao-seedream-5-04096×4096(真 4K)约 1920×1920基础版支持到 4K
doubao-seedream-5-0-pro4K(3840×2160 / 4096×4096)1024×1024全面支持 1K、2K、4K,按请求 size 像素智能阶梯计费
doubao-seedream-5-0-pro 支持从 1024×1024 到 4K 超高清全画幅生成,根据请求 size 自动匹配计费阶梯(≤ 261万像素为 1K 档 ,> 261万像素为高清档 )。基础版 4-5 与 5-0 同样支持到 4096×4096。输出格式 JPEG。

提交方式

JSON(同步)。image 字段传单张字符串或多张数组即进入图生图 / 多图融合;参考图支持 URL / 多图 / Base64 三种(已实测)。加 "response_format":"b64_json" 可拿 base64 内嵌。

能力支持说明
URL 参考图✅公网 http/https 直链
多图融合✅image 传数组,参考图最多 14 张(参考图 + 产图 ≤ 15)
Base64 参考图✅data:image/png;base64,...(带前缀)
单张大小≤ 10 MB4.5 档服务上限 15MB,建议统一 ≤10MB
格式JPEG / PNG5.0 档另支持 webp/bmp/tiff/gif;建议优先 JPEG/PNG
输入图尺寸单边 ≤ 4096宽高比约 [1/3, 3]

示例请求

# 1. 默认 1K 标清生成(
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "一只可爱的金毛幼犬在阳光草坪上奔跑,微距写实摄影",
    "size": "1024x1024"
  }'

# 2. 2K 高清生成(
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "电影感雪山日出全景,光影通透细腻,壁纸级质感",
    "size": "2048x2048"
  }'

# 3. 16:9 宽画幅高清生成(2560x1440,
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "电影感雪山日出全景,宽画幅",
    "size": "2560x1440"
  }'

# 4. 图生图:单张参考图(URL)
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-4-5",
    "prompt": "把背景换成落日海边",
    "size": "2048x2048",
    "image": "https://example.com/ref.jpg"
  }'

# 5. 多图融合:image 传数组(参考图最多 14 张,参考图 + 产图 ≤ 15)
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0",
    "prompt": "把这两张融合成一张海报",
    "size": "2048x2048",
    "image": ["https://example.com/a.jpg", "https://example.com/b.jpg"]
  }'

# 6. 编辑 / 二次编辑(5.0 Pro):编辑与文生图同一接口,多带 image 字段(填上一轮产图的 URL);可反复迭代
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "给这只柴犬戴上一顶红色圣诞帽,狗和纯白背景保持不变",
    "image": "https://<上一轮产图URL>",
    "size": "2048x2048"
  }'

# 7. 组图(5.0 Pro):sequential_image_generation=auto,一次连续生成一组相关图(产图 + 参考图 ≤ 15)
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "柴犬的圣诞四联漫画,风格一致",
    "sequential_image_generation": "auto",
    "size": "2048x2048"
  }'

# 8. 返回 base64
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的令牌" \
  -d '{
    "model": "doubao-seedream-4-5",
    "prompt": "极简红色圆形,纯白背景",
    "size": "2048x2048",
    "response_format": "b64_json"
  }'

轮询取片

同步接口,无需轮询:请求返回即拿到结果。默认 data[0].url 为可直接下载 / 内嵌的图片直链(有有效期,请及时保存);需 base64 内嵌时加 "response_format":"b64_json" 取 data[0].b64_json。

# 默认 url 返回结构:
# {"created":1786957747,"data":[{"url":"https://<官方签名直链>/xxx.jpeg"}]}
curl -L "IMAGE_URL" -o result.jpeg

Python 完整请求

1. 标准 OpenAI SDK 调用(推荐)

from openai import OpenAI

client = OpenAI(
    api_key="sk-你的令牌",
    base_url="https://aihubcc.cc/v1"
)

# 生成 2K 高清图像(系统自动按 2K 档位  计费)
response = client.images.generate(
    model="doubao-seedream-5-0-pro",
    prompt="超写实未来赛博朋克城市雨夜,霓虹倒影,电影质感",
    size="2048x2048",
    response_format="url"
)

print("生成成功,图片直链:", response.data[0].url)

2. requests 库原生调用

import requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-你的令牌", "Content-Type": "application/json"}

r = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "doubao-seedream-5-0-pro",
    "prompt": "一只橘猫坐在窗台上,午后阳光洒落,超写实摄影",
    "size": "1024x1024",
}).json()

url = r["data"][0]["url"]
open("seedream.jpeg", "wb").write(requests.get(url).content)

注意事项

  • doubao-seedream-5-0-pro 智能阶梯计费:无需切换模型名,总像素 ≤ 261 万(如 1024x1024, 1920x1080)按 1K 档 计费;> 261 万(如 2048x2048, 2560x1440, 3840x2160, 2K, 4K)按高清档 计费。
  • 编辑 / 二次编辑:与文生图同一接口 /v1/images/generations,多带 image 字段(填参考图或上一轮产图 URL)即进入编辑;产图 URL 可反复回传迭代。
  • 本线路 n=1 每次 1 张;要一次一组相关图用 sequential_image_generation:"auto"(组图,data 多张,产图 + 参考图 ≤ 15)。
  • 参考图 ≤10MB、JPEG/PNG、单边 ≤4096、最多 14 张(参考图 + 产图 ≤ 15);非法参考图返回 400 不计费。输出格式 JPEG。

建议

  • 旗舰首选 doubao-seedream-5-0-pro:官方最新架构,支持 1K 到 4K 全画幅;高性价比日常出图可选 5-0。
  • 16:9 推荐 2560x1440 或 3840x2160、9:16 推荐 1440x2560 或 2160x3840、1:1 推荐 1024x1024 或 2048x2048。
  • 多图融合把主体图放前、风格图放后,提示词点明"融合成一张"。

Grok 视频

基于 xAI Grok Imagine 官方接口的视频生成,OpenAI 兼容异步接口。三个模型:grok-imagine-video(1.0,文生 / 图生视频)、grok-imagine-video-1.5-preview(1.5 代,画面质感更好)、grok-imagine-video-6s(固定 6 秒 / 480p,最省钱)。带参考图即图生视频,不带图则为纯文生视频(1.5 建议带图)。

📌 模型已精简,分辨率不再外显成模型名:以前按分辨率拆出的一堆模型(…-480p / …-720p / …-1080p)已合并——现在 1.0 / 1.5 的分辨率由请求里的 resolution 参数决定,你只需记住 3 个模型名。想要多少清晰度,在请求体传 resolution 即可,不用换模型。

模型与价格倍率

模型分辨率(resolution)计费价格倍率
grok-imagine-video480p(默认)按秒1×
grok-imagine-video720p按秒1.30×
grok-imagine-video-1.5-preview480p按秒2.29×
grok-imagine-video-1.5-preview720p(推荐)按秒3.31×
grok-imagine-video-1.5-preview1080p 高清按秒6.31×
价格倍率:表中固定以 grok-imagine-video 480p(默认)为 1×,同一时长下可直接比较不同档位的价格倍率。未对客户发布的模型不会出现在表中,实际扣费以控制台为准。1.0 / 1.5 的分辨率由 resolution 控制。全系失败不计费,成功出片才扣。

接口信息

项说明
提交任务POST /v1/videos(JSON)
轮询进度GET /v1/videos/{task_id},status=completed 时返回 video_url
下载成片轮询返回的 video_url 直接 GET 下载(地址已脱敏)
鉴权Authorization: Bearer sk-你的令牌
令牌分组xAI 或 auto(智能路由)分组均可

核心参数

参数取值默认说明
modelgrok-imagine-video(1.0)/ grok-imagine-video-1.5-preview(1.5)/ grok-imagine-video-6s(6 秒定档)必填。三个模型名;1.0 / 1.5 的分辨率用 resolution 参数,-6s 固定 480p / 6 秒(见文末专项说明)
prompt文本必填,画面 / 运动描述
image公网 URL 或 base64 Data URI可选。单张首帧;带图=图生视频;grok-imagine-video 不带图=纯文生视频,grok-imagine-video-1.5-preview 建议带图
reference_imagesURL 数组,最多 7 张可选,多张参考图(图生视频)。仅 grok-imagine-video-1.5-preview 的 480p / 720p 生效;⚠️ 1080p 不支持多图(见下)。单张请用 image
seconds字符串,1 ~ 156视频时长(秒)。1.0 与 1.5 系列按秒计费:费用 = 单价 × 秒数(1.0 与 1.5 系列均按秒)
aspect_ratio16:9(横屏)/ 9:16(竖屏)/ 1:1(方屏)16:9可选,画幅比例。⚠️ Grok 视频仅支持此 3 种画幅(不支持 3:4、4:3 等;传入不支持比例官方将自动回退为 16:9 横屏)。手机竖版或电商主图请用 9:16
resolution480p / 720p(1.5-preview 另 1080p)480p决定分辨率与相对消耗档位(见上表)。⚠️ grok-imagine-video-1.5-preview 的 1080p 只支持单张首帧 image,不支持多图 reference_images
size如 720x1280 / 1024x1024旧字段,已兼容:自动换算为最接近的 aspect_ratio(避免"请求竖屏却出横屏");也支持 portrait / landscape / square 等词

提交方式(传图 · 单张首帧 vs 多张参考图)

i2v 的参考图通过 image 字段传入,支持两种写法:

方式写法说明
公网 URL"image": "https://.../a.jpg"公网可直接 GET 的图片直链(不能是需登录 / 内网 / 拦爬虫的链接)
base64 Data URI"image": "data:image/jpeg;base64,/9j/4AAQ..."须带 data: 前缀

图片格式 JPG / PNG / WebP。

单张首帧 vs 多张参考图

  • 单张首帧:用 image(字符串,一个 URL 或 base64)。
  • 多张参考图:用 reference_images(URL 数组),grok-imagine-video-1.5-preview 最多 7 张,模型综合多张参考出片。示例:"reference_images": ["https://.../a.jpg", "https://.../b.jpg"]
⚠️ grok-imagine-video-1.5-preview 的 1080p 仅支持单张首帧(image 模式):不能用多图 reference_images——若传了多张,只有第一张作首帧生效。需要多张参考图请用 480p / 720p。

字段名兼容:单图推荐 image、多图用 reference_images;image_url / image_reference / images / image_urls / input_reference 等写法也已兼容(服务端自动识别为参考图,不会退化成纯文生视频)。

示例请求

# 文生视频(grok-imagine-video,不带图)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-video",
    "prompt": "灯塔在日落时分,海浪拍打礁石,电影感镜头",
    "seconds": "6",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'
# => {"task_id":"task_xxx","status":"queued",...}

# 图生视频(grok-imagine-video-1.5-preview + resolution=720p,带 image)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-video-1.5-preview",
    "resolution": "720p",
    "prompt": "轻微镜头推移,画面自然生动",
    "image": "https://your-public-image.jpg",
    "seconds": "6"
  }'

# 多图参考(grok-imagine-video-1.5-preview + resolution=720p,最多 7 张;1080p 不支持多图)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-video-1.5-preview",
    "resolution": "720p",
    "prompt": "融合多张参考图的场景,电影感转场",
    "reference_images": ["https://img-a.jpg", "https://img-b.jpg"],
    "seconds": "6"
  }'

轮询取片

# 轮询直到 status=completed,取 video_url
curl https://aihubcc.cc/v1/videos/task_xxx \
  -H "Authorization: Bearer sk-xxx"
# => {"status":"completed","video_url":"https://.../xxx.mp4",...}

轮询到 completed 后取 video_url 直接下载成片;下载地址已脱敏,不暴露源站域名。轮询间隔建议 3-5 秒。

Python 完整请求

import time, requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 提交(图生视频,1.5 代 720p)
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "grok-imagine-video-1.5-preview",
    "resolution": "720p",
    "prompt": "轻微镜头推移,画面自然生动",
    "image": "https://your-public-image.jpg",
    "seconds": "6"
}).json()
task_id = task["task_id"]

# 轮询
while True:
    time.sleep(4)
    s = requests.get(f"{BASE}/videos/{task_id}", headers=H).json()
    if s.get("status") == "completed":
        print("下载:", s["video_url"])
        break
    if s.get("status") == "failed":
        print("失败:", s.get("error"))
        break

注意事项

  • 计费:grok-imagine-video(1.0)与 grok-imagine-video-1.5-preview 按秒计费;grok-imagine-video-6s 固定 6 秒、按次计费。不同档位的相对消耗见上表,失败不计费。
  • seconds 取 1~15;1.5-preview 分辨率由 resolution 参数决定(480p / 720p / 1080p)
  • 多张参考图:grok-imagine-video-1.5-preview(480p / 720p)用 reference_images 数组,最多 7 张;单张首帧用 image
  • ⚠️ 1080p 仅支持单张首帧 image,不支持多图 reference_images(传了也只取第一张作首帧)
  • 图生视频的 image 须为公网可直接抓取的 URL 或 base64 Data URI;需登录 / 内网 / 拦爬虫(如部分维基)的链接会失败
  • grok-imagine-video 不带图为文生视频;grok-imagine-video-1.5-preview 为图生视频,建议带 image
  • 客户端超时建议 ≥ 300 秒;轮询间隔建议 3-5 秒
  • ⚠️ 视频画幅与生图不同:Grok 生图支持 3:4 / 4:3 / 2:3 等画幅,但 Grok 视频官方底层仅支持 16:9、9:16、1:1。如需 3:4 比例视频,建议设置 aspect_ratio: "9:16" 生成后在本地裁切,切勿传 3:4 以免官方自动回退至横屏。

建议

  • 1.5 代优先带参考图:grok-imagine-video-1.5-preview 定位图生视频,带一张清晰首帧 image 出片更稳、质感更好;纯文生优先用 grok-imagine-video。
  • 要 1080p 就别传多图:-1080p 只认单张首帧,需要多张参考时用 -720p + reference_images。
  • 画幅用 aspect_ratio(三选一):推荐直接使用 aspect_ratio(9:16 竖屏 / 16:9 横屏 / 1:1 方屏),避免使用非标准比例;size 仅为兼容旧客户端保留。
  • 内容合规:避开暴露 / 未成年 / 血腥暴力等敏感内容,否则被内容安全拦截(不计费)。

grok-imagine-video-6s · 6 秒定档(最省钱)专项说明

grok-imagine-video-6s:Grok Imagine 的单段短视频,固定输出 6 秒 / 480p 档、按次计费 。文生(只给提示词)与图生(带参考图、运动跟随提示词)都支持;与其它 Grok 视频同一 /v1/videos 通道,JSON body 与 multipart 表单均可提交。

  • 时长固定 6 秒、分辨率固定 480p 档;传 seconds / resolution 均被忽略。
  • 画幅用 size(只决定竖 / 横 / 方,不决定清晰度):720x1280(竖 9:16,默认) / 1280x720(横 16:9) / 960x960(方 1:1);实际输出分别约 416×752 / 752×416 / 560×560(均 480p 档,数字仅为画幅代号,不代表出 720p)。
  • 参考图:image_url(公网 URL / base64 Data URI / 本地 @file 仅 multipart),字段名 image / images / reference_images / input_reference 亦兼容,最多 7 张,multipart 每张 ≤ 5MB。
  • 按次计费 、失败不计费;令牌分组 xAI / auto;客户端超时建议 ≥ 180 秒、轮询 3-5 秒。
# 文生视频(只给提示词,JSON body)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-6s","prompt":"红色复古跑车在霓虹夜街疾驰,电影感","size":"1280x720"}'

# 图生视频(带参考图:image_url 为公网 URL 或 base64 Data URI)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-6s","prompt":"人物轻轻转头微笑,柔光","image_url":"https://your-public-image.jpg","size":"720x1280"}'

Grok 图像生成(文生图 / 图生图)

OpenAI 兼容的同步图像接口,请求成功后直接返回图像、无需轮询。文生图三档质量任选;图生图 / 图片编辑用 grok-imagine-image 或 grok-imagine-image-2.0 打 /v1/images/edits 传参考图即可,同名同价、由接口区分。

用法总览(选场景 → 端点 + 模型)

场景端点模型
文生图POST /v1/images/generationsgrok-imagine-image / -2.0 / -lite
图生图 / 图片编辑POST /v1/images/edits(传参考图)grok-imagine-image / grok-imagine-image-2.0
-lite 图生图 / 编辑❌ 不支持,-lite 仅文生图;图生图请用 grok-imagine-image 或 -2.0
⚠️ grok-imagine-image 与 -2.0 都是一名两用:打 /v1/images/generations = 文生图、打 /v1/images/edits(带参考图)= 图生图 / 编辑,同名同价。-2.0(新版,质感更好)现已支持图生图 / 编辑;仅 -lite(basic 档,最省)只做文生图。
三档怎么选:-lite 最省,适合批量草图;grok-imagine-image 为标准档;-2.0 是新版、质感最好且是唯一支持 2K 的一档,推荐默认用它;grok-imagine-image-quality 是另一代质感档,风格取向不同、仅 1K,可在 -2.0 出图不合意时作为备选。

画幅(size / aspect_ratio · 按模型)

模型size 可选aspect_ratio 可选默认
grok-imagine-image1024x1024 / 1792x1024 / 1024x17921:1 / 16:9 / 9:16 / 2:3 / 3:2 / 4:3 / 3:41024x1024
grok-imagine-image-2.01024x1024 / 1792x1024 / 1024x1792 / 2048x2048(2K)同上1024x1024
grok-imagine-image-quality1024x1024 / 1792x1024 / 1024x1792(仅 1K)同上1024x1024
grok-imagine-image-lite1280x720 / 720x1280 / 960x960—(改用 size)
size 与 aspect_ratio 二选一;其它取值可能报错。
2K 仅 grok-imagine-image-2.0 支持(传 size="2048x2048" 或 resolution="2k")。其它模型传 2K 会返回明确报错并提示改用 grok-imagine-image-2.0,不会悄悄按 1K 出图。

模型

模型能力计费
grok-imagine-image-lite文生图(basic 档)按张
grok-imagine-image文生图 + 图生图 / 编辑按张
grok-imagine-image-2.0文生图 + 图生图 / 编辑(新版,质感更好,支持 2K)按张
grok-imagine-image-quality文生图 + 图生图 / 编辑(质感档,仅 1K)按张
按张计费:每张图片按模型价格计费;生成失败不扣费。

鉴权与分组

项说明
鉴权Authorization: Bearer sk-xxx
令牌分组xAI 或 auto(智能路由)分组均可
请求格式文生图走 JSON;图生图 / 编辑走 JSON 或 multipart(传文件用 -F "image[]=@a.png")

核心参数

参数取值默认说明
modelgrok-imagine-image-lite / grok-imagine-image / grok-imagine-image-2.0;图生图 / 编辑用 grok-imagine-image 或 grok-imagine-image-2.0(打 /v1/images/edits);-lite 仅文生图必填
prompt文本必填,描述希望生成或修改的画面
n整数1可选,生成数量;建议一次请求传 1
response_formaturl / b64_jsonurlurl 返回下载地址;b64_json 直接返回 Base64 图像数据
size1024x1024 / 1792x1024 / 1024x1792 / 2048x2048(2048x2048 仅 -2.0;-lite 见画幅说明)1024x1024可选,输出尺寸;grok-imagine-image / -2.0 / -quality 适用
resolution1k / 2k1k可选,仅 grok-imagine-image-2.0 支持 2k;与 size 效果等价,二者皆可
aspect_ratio1:1/16:9/9:16/2:3/3:2/4:3/3:4可选,grok-imagine-image / -2.0 / -quality 用,与 size 二选一
image公网 URL 或 base64 Data URI图生图可选,单张参考图。base64 必须为完整的 data:image/...;base64,... 格式
imagesURL / Data URI 数组图生图可选,多张参考图;仅 JSON 请求使用

提交方式(传图 · 图生图)

方式字段 / 写法说明
单张公网图片"image": "https://.../a.jpg"图片地址必须能从公网直接访问
单张 base64"image": "data:image/png;base64,..."使用完整 Data URI,不要只传裸 Base64
多张 JSON 图片"images": ["https://.../a.jpg", "data:image/png;base64,..."]数组中可混用公网 URL 与 Data URI
multipart 文件上传-F "image[]=@a.png" -F "image[]=@b.jpg"单图也可使用 -F "image=@a.png"

示例请求

# 文生图
curl https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-image-lite",
    "prompt": "一座漂浮在云海上的未来城市,清晨柔光,电影感",
    "n": 1,
    "response_format": "url"
  }'

# 图生图:JSON 单张公网图片
curl https://aihubcc.cc/v1/images/edits \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-image",
    "prompt": "保留主体构图,将背景改为雨后的霓虹街道",
    "image": "https://your-public-image.jpg",
    "response_format": "url"
  }'

# 图生图:multipart 多张文件
curl https://aihubcc.cc/v1/images/edits \
  -H "Authorization: Bearer sk-xxx" \
  -F "model=grok-imagine-image" \
  -F "prompt=融合两张参考图的风格,生成商品展示图" \
  -F "image[]=@reference-a.png" \
  -F "image[]=@reference-b.jpg" \
  -F "response_format=url"

轮询取片(同步返回,无需轮询)

本模型为同步接口:请求成功后直接在响应里返回图像,无需轮询 task_id。返回结构如下:

{
  "created": 1786675686,
  "data": [
    {
      "url": "https://aihubcc.cc/v1/images/proxy/<encrypted-token>"
    }
  ]
}

response_format=url 时返回平台下载代理地址,浏览器或程序可直接访问;地址不暴露源站下载域名和签名参数,默认有效期 30 天。需要自行保存图片数据时用 response_format=b64_json 并读取 data[].b64_json。

Python 完整请求

import requests

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 文生图(同步,直接拿结果)
r = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "grok-imagine-image-lite",
    "prompt": "一座漂浮在云海上的未来城市,清晨柔光,电影感",
    "n": 1,
    "response_format": "url"
}).json()
print("图片:", r["data"][0]["url"])

# 图生图:单张公网图片
r2 = requests.post(f"{BASE}/images/edits", headers=H, json={
    "model": "grok-imagine-image",
    "prompt": "保留主体构图,将背景改为雨后的霓虹街道",
    "image": "https://your-public-image.jpg",
    "response_format": "url"
}).json()
print("图片:", r2["data"][0]["url"])

Python 示例:文生图 → 图生图(base64 参考图闭环)

先文生图拿到一张图,再把它当参考图做编辑——同一个 grok-imagine-image,只换接口(/generations → /edits);用 b64_json 免下载直接复用,参考图传完整的 data:image/...;base64, Data URI。

import requests, base64

BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 1) 文生图:生成一张参考图(取 b64_json,方便直接复用,无需下载)
gen = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "grok-imagine-image",
    "prompt": "一只黄色小鸭子,居中,纯白背景",
    "n": 1,
    "response_format": "b64_json",
}).json()
b64 = gen["data"][0]["b64_json"]
open("duck.jpg", "wb").write(base64.b64decode(b64))

# 2) 图生图 / 编辑:把上一步的图当参考图(完整 data URI),只加一顶圣诞帽、其余不变
edit = requests.post(f"{BASE}/images/edits", headers=H, json={
    "model": "grok-imagine-image",
    "prompt": "给鸭子头上戴一顶红色圣诞帽,保持同一只鸭子和纯白背景不变",
    "image": "data:image/jpeg;base64," + b64,
    "response_format": "b64_json",
}).json()
open("duck_hat.jpg", "wb").write(base64.b64decode(edit["data"][0]["b64_json"]))
print("done: duck.jpg -> duck_hat.jpg")

注意事项

  • 接口为同步接口,请等待响应中的 data 返回后再处理结果。
  • 参考图公网 URL 必须能被服务端直接下载(含中国境内可访问),否则会失败或被忽略;需要登录、内网、访问受限或境外不可达的链接,请改用 base64(data:image/...;base64,)内联。
  • 使用 JSON 多图时传 images 数组;使用 multipart 多图时重复传 image[] 字段。
  • url 与 b64_json 二选一:前者适合直接展示或下载,后者适合本地持久化或二次处理。

建议

  • 一次请求出一张:n 建议传 1,需要多张分多次请求,稳定性更好。
  • 直接展示用 url,落库用 b64_json:前者拿代理下载地址(30 天有效),后者拿 Base64 便于本地持久化。
  • 图生图选清晰参考:参考图主体清晰、无遮挡,改风格 / 换背景类指令效果最稳。

MiniMax H3 · 按秒计费(768P / 2K)

MiniMax H3 按秒计费,两档清晰度、原生音频。支持文生 / 图生 / 首尾帧 / 参考图 / 参考音频;需参考视频驱动用 Pro 档。同一套 /v1/videos 接口:异步创建 → 轮询 → 下载。

⚠️ 内容合规要求(务必阅读)
MiniMax H3 为国内(中国大陆)模型,平台有严格内容审核。严禁提交任何色情、软色情、擦边、暴露、性暗示、血腥或其它违规提示词——此类请求被网关直接拦截(HTTP 400,不产任务、不计费);屡次违规可能触发平台风控致该模型临时不可用,请务必合规使用。

模型

模型清晰度全能参考计费时长
minimax-h3-768p768P503按秒4–15 秒
minimax-h3-2k2K503按秒4–15 秒
minimax-h3-pro-768p768P913按秒4–15 秒
minimax-h3-pro-2k2K913按秒4–15 秒
按秒计费 = 单价 × 时长(例:minimax-h3-2k 10 秒 = )。全能参考数字 = 图·视频·音频张数上限:标准档 503(5 图 + 0 视频 + 3 音频),Pro 档 913(9 图 + 1 视频 + 3 音频,额外支持参考视频)。如需 933 全能参考请联系客服。失败不计费。

接口信息

项说明
提交任务POST /v1/videos(JSON)
轮询进度GET /v1/videos/{task_id}
下载成片完成后响应里的 video_url 直链
鉴权Authorization: Bearer sk-你的令牌
令牌分组minimax

核心参数

字段类型必填默认
modelstring是上表四个之一
promptstring是提示词,≤7000 字符(超出会被静默截断)
durationinteger否4–15 秒(= 计费秒数)
ratiostring否16:9/9:16/1:1/21:9/4:3/3:4/adaptive(文生视频不支持 adaptive)
referenceImagesstring[]否参考图 ≤5(公网 URL 或 base64)
referenceAudiosstring[]否参考音频 ≤3(须配参考图;合计 ≤15 秒)
referenceVideosstring[]否Pro 档专用:1 段,时长 2–5 秒
first_image/last_imagestring否首/尾帧;不能与 referenceImages 同用

提交方式

JSON,参考素材支持 公网 URL 或 base64。按传入素材自动判定模式:

模式最少必传
文生视频prompt
图生视频prompt + referenceImages(≤5)
首尾帧first_image(+ last_image);不与普通参考图同用
参考视频驱动Pro 档 + referenceVideos(1 段 2–5 秒)

示例请求

# 文生视频
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"minimax-h3-2k","prompt":"A calm ocean wave at golden sunset, cinematic","duration":5,"ratio":"16:9"}'

# 图生视频(参考图 · URL)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"minimax-h3-768p","prompt":"角色转身微笑,镜头缓慢推近","duration":6,
       "referenceImages":["https://你的公网图片地址/ref1.jpg"]}'

# 图生视频(参考图 · base64,任何图片都可用、最稳妥)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"minimax-h3-768p","prompt":"角色转身微笑,镜头缓慢推近","duration":6,
       "referenceImages":["data:image/jpeg;base64,/9j/4AAQ...(整段图片 base64)"]}'

# 参考视频驱动(Pro,1 段 2-5 秒)
curl https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"minimax-h3-pro-768p","prompt":"角色跟随参考视频的动作与镜头运动","duration":5,
       "referenceVideos":["https://.../ref.mp4"]}'
参考素材用 URL 时必须公网可直接访问。若图片 / 视频托管在访问受限或不稳定的站点,可能返回 cannot download media URL(不产任务、不计费)。此时改用 base64(data:image/jpeg;base64,...)即可,任何素材都能用、最稳妥。

轮询取片

curl https://aihubcc.cc/v1/videos/TASK_ID -H "Authorization: Bearer $TOKEN"
# status=completed 后用响应里的 video_url 下载
curl -L "VIDEO_URL" -o result.mp4
轮询到 completed/failed 停止;video_url 为直链;失败不计费。

Python 完整请求

import time, requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-你的minimax令牌", "Content-Type": "application/json"}
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "minimax-h3-2k",
    "prompt": "A calm ocean wave at golden sunset, cinematic",
    "duration": 5, "ratio": "16:9",
}).json()
tid = task["task_id"]
while True:
    r = requests.get(f"{BASE}/videos/{tid}", headers=H).json()
    if r["status"] in ("completed", "failed"):
        break
    time.sleep(5)
url = r.get("video_url") or (r.get("data") or [{}])[0].get("url")
open("minimax.mp4", "wb").write(requests.get(url).content)

注意事项

  • 严格内容审核:违规提示词直接 400(不产任务、不计费),屡犯可能致模型临时不可用。
  • prompt ≤7000 字符,超出静默截断——长提示词请自行精简,别指望超出部分生效。
  • 用 ratio 字段控画幅(不是 size/aspect_ratio);文生视频不支持 adaptive。
  • first_image/last_image 与 referenceImages 互斥;参考音频须配参考图。
  • 参考素材 URL 必须公网可直接访问;访问受限的地址会报 cannot download media URL——改用 base64(data:...;base64,)即可,任何图 / 视频都行。
  • 参考视频仅 Pro 档、1 段 2–5 秒;2K / 参考视频出片较慢,高峰期偶发排队请重试。

建议

  • 走量用 768P,画质优先用 2K;需要视频驱动动作 / 运镜才用 Pro 档。
  • 竖屏传 ratio":"9:16";参考视频请截取你要的关键 2–5 秒片段。
  • 提示词全英文或中文均可,但务必合规、避免任何擦边表述。

通义万相 3.0 视频 Video

🎬 阿里通义万相 3.0(阿里云百炼官方直连)。提供两个模型:wan3.0-video(全能多模态参考版)与 wan3.0-video-prime(优速版,30fps 高帧率、质感更高且出片更快)。现已全面支持全多模态参考架构:涵盖 A. 文生视频、B. 图生视频(首帧 / 首尾帧)、C. 多图参考生视频、D. 图 + 视频 + 音频多模态参考、E. 文件 / 网页链接参考 5 种核心模式。OpenAI 兼容异步接口、按秒 × 分辨率计费、失败不计费。

模型与价格倍率

模型分辨率(resolution)计费价格倍率
wan3.0-video480p(默认)按秒1×
wan3.0-video720p按秒2×
wan3.0-video1080p按秒4×
wan3.0-video-prime480p(默认)按秒1.71×
wan3.0-video-prime720p按秒3.43×
wan3.0-video-prime1080p按秒6.86×
按秒 × 分辨率计费:表中倍率以 wan3.0-video 480p(默认)的每秒消耗为 1×,同一时长下可直接比较不同档位的相对消耗;实际扣费以控制台为准。分辨率用 resolution 参数控制(480p / 720p / 1080p),不传默认 480p。失败不计费,成功出片才扣。
wan3.0-video-prime 为优速版(30fps、出片更快),相对消耗更高;两者能力一致,按预算 / 时效选。

五大参考场景速查(ABCDE 模式总览)

模式场景名称核心能力触发参数 / 字段写法说明与适用业务
A文生视频纯文字创意生成仅传 prompt,不带任何素材概念演示、光影特效、CG 场景想象
B图生视频(首帧 / 首尾帧)单图动效 / 双图定格转场传 1 张图片为首帧(images 或 image_url);
或传 2 张图片分别指定 first_frame 与 last_frame
静态立绘动效化、前后两张分镜之间精准平滑过渡
C多图参考生视频主体角色 / 场景一致性images 传入多张图片(≥3 张,或传 role: "reference_image")保持主体人物面容、服饰、环境特征与艺术风格连续统一
D图 + 视频 + 音频多模态参考跨模态运镜与节拍同步同时组合 images + videos + audios角色参考图片,运镜与动作跟随参考视频,节奏与对白跟随参考音频
E文件 / 网页链接参考文档解析与网页推演传入 files(文档 URL 数组)或 links(网页 URL 数组)研报/策划案/长文解析视频化、电商产品落地页一键生成推广视频

接口信息

项说明
Base URLhttps://aihubcc.cc(或 https://aihubcc.cc)
提交端点POST /v1/video/generations 或 POST /v1/videos(标准 JSON,双端点完全等价兼容)
轮询端点GET /v1/video/generations/{task_id} 或 GET /v1/videos/{task_id}
成片下载轮询状态为 completed 时,直接读取响应中的顶层 video_url(阿里云 OSS 官方高速直链,稳定且不脱敏);亦支持通过网关端点 GET /v1/videos/{task_id}/content(带 Bearer 鉴权 302 重定向)流式下载
鉴权方式Authorization: Bearer sk-你的令牌
令牌分组Wan(通义万相)或 auto(智能路由分组)
生成耗时通常 1–5 分钟(多模态与高分辨率耗时相应增加);客户端请异步轮询取片,切勿在超时前重复发起同一任务

核心参数规范

参数类型必填默认说明
modelstring是wan3.0-video(全能多模态参考版)或 wan3.0-video-prime(优速版,30fps)
promptstring是画面内容、动态走势、光影氛围或镜头运动描述。走官方模型上下文,无我方硬性长度限制
resolutionstring否480p决定清晰度与计费单价:480p / 720p / 1080p(大小写兼容)。也可用 size 传 宽x高(如 1280x720),系统自动匹配就近档位
ratiostring否adaptive画幅比例:16:9(横屏)、9:16(竖屏)、1:1(方屏)、4:3、3:4、adaptive(默认根据参考素材自适应)。兼容 portrait / landscape 等别名
duration / secondsinteger / string否5视频生成时长(秒),支持 5–30 秒。实际扣费以此秒数结算
imagesarray否参考图片列表:支持纯 URL 字符串数组或带角色对象数组 [{ "url": "...", "role": "..." }]。单图默认首帧;双图默认首尾帧;3 张以上默认参考图。显式角色支持 first_frame(首帧)、last_frame(尾帧)、reference_image(参考图)
videosarray否参考视频列表:纯 URL 字符串数组或 [{ "url": "...", "role": "reference_video" }]。作为画面运动节奏与镜头轨迹的参考素材
audiosarray否参考音频列表:纯 URL 字符串数组或 [{ "url": "...", "role": "reference_audio" }]。⚠️ 不可作为唯一参考素材,至少需搭配一张图片或一段视频
filesarray否参考文档列表:纯 URL 字符串数组或 [{ "url": "...", "role": "file" }]。支持公网可直接下载的 PDF、Word、TXT、Markdown 等文档
linksarray否参考网页列表:纯 URL 字符串数组或 [{ "url": "...", "role": "link" }]。支持公网可抓取的 HTTP/HTTPS 网页,模型自动提取网页图文进行视频创作
image_urlstring否单图快捷参数:传了=图生视频首帧。公网直链 URL 或完整 Base64 Data URI;兼容 image、input_reference
⚠️ 素材组合与互斥规则(调用前必读):
1. 首尾帧互斥:首帧(first_frame)与尾帧(last_frame)为定点平滑补帧模式,严禁与参考视频、音频、文件、网页链接等参考类素材混合传入。
2. 音频依附性:参考音频(audios)不能作为孤立的唯一输入,必须配合至少一张参考图片或一段参考视频。
3. 多模态自愈机制:若你在传入参考视频/音频/文件/链接的同时传入了普通图片,系统会自动将图片转换为 reference_image 角色,避免官方底层误判为首尾帧导致冲突报错。
4. 素材公网可达性:所有 URL 素材必须能被公网直接 GET 访问,无需登录授权;图片亦可使用 data:image/...;base64,... 格式传参。

全场景调用详解与示例(ABCDE 全覆盖)

通义万相 3.0 支持双端点(/v1/video/generations 与 /v1/videos)。以下示例均以标准 OpenAI 规范给出完整的 curl 请求与 Python 异步生命周期完整脚本。

场景 A:文生视频(Text-to-Video)

只传文字描述,模型完全凭空渲染。支持自由指定分辨率(480p/720p/1080p)、画幅比例(16:9/9:16/1:1 等)与时长(5–30 秒)。

A-1. curl 示例(文生视频)

curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "一只金毛寻回犬在金色秋叶中奔跑,电影感慢镜头,阳光穿透树林,毛发细节清晰",
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  }'

A-2. Python 完整示例(文生视频 · 提交 + 轮询 + 下载成片)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 1. 提交文生视频任务
payload = {
    "model": "wan3.0-video",
    "prompt": "浩瀚宇宙中的星际飞船正在穿越瑰丽的紫色星云,科幻史诗感,超高清光影",
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
}
resp = requests.post(f"{BASE_URL}/v1/video/generations", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
data = resp.json()
task_id = data.get("task_id") or data.get("id")
print(f"[A. 文生视频] 任务已提交,Task ID: {task_id}")

# 2. 轮询任务状态直至完成
start_time = time.time()
video_url = None
while time.time() - start_time < 600:
    poll_resp = requests.get(f"{BASE_URL}/v1/video/generations/{task_id}", headers=HEADERS, timeout=30)
    poll_resp.raise_for_status()
    poll_data = poll_resp.json()
    status = poll_data.get("status")
    print(f"当前状态: {status} (已等待 {int(time.time() - start_time)}s)")
    if status == "completed":
        video_url = poll_data.get("video_url") or (poll_data.get("data") and poll_data["data"][0].get("url"))
        break
    elif status in ("failed", "canceled"):
        raise RuntimeError(f"任务生成失败: {poll_data.get('error')}")
    time.sleep(5)

# 3. 下载视频文件
if video_url:
    print(f"成片下载地址: {video_url}")
    video_content = requests.get(video_url, timeout=120).content
    with open("wan_scene_a.mp4", "wb") as f:
        f.write(video_content)
    print("成片已成功保存至本地 wan_scene_a.mp4")

场景 B:图生视频(首帧 / 首尾帧)

包括单图首帧动效与双图首尾帧过渡:

  • 单图首帧:传入 1 张图片,模型以该图作为视频起始画面,随提示词运镜演绎;
  • 双图首尾帧:传入两张图分别标注 first_frame 与 last_frame,模型生成连接首尾两帧的自然运动轨迹。

B-1. curl 示例(单图首帧 & 双图首尾帧)

# ① 单图首帧动效(图片亦可传 base64)
curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "微风吹拂,人物发丝轻扬,眼波流转,面带微笑",
    "image_url": "https://your-domain.com/start_frame.jpg",
    "resolution": "720p",
    "duration": 5
  }'

# ② 双图首尾帧平滑过渡(精准转场)
curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "镜头由近景平滑拉远并旋转,画面由第一张日间场景自然过渡到第二张夜幕降临",
    "images": [
      { "url": "https://your-domain.com/day_view.jpg", "role": "first_frame" },
      { "url": "https://your-domain.com/night_view.jpg", "role": "last_frame" }
    ],
    "resolution": "720p",
    "duration": 5
  }'

B-2. Python 完整示例(双图首尾帧过渡)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

payload = {
    "model": "wan3.0-video",
    "prompt": "镜头缓慢平移推进,人物由低头沉思自然抬起头并露出微笑",
    "images": [
        {"url": "https://your-domain.com/head_down.png", "role": "first_frame"},
        {"url": "https://your-domain.com/look_up_smile.png", "role": "last_frame"}
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
}

resp = requests.post(f"{BASE_URL}/v1/video/generations", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
task_id = resp.json()["task_id"]
print(f"[B. 首尾帧图生视频] 任务已提交: {task_id}")

while True:
    res = requests.get(f"{BASE_URL}/v1/video/generations/{task_id}", headers=HEADERS, timeout=30).json()
    st = res.get("status")
    if st == "completed":
        video_url = res.get("video_url") or res["data"][0]["url"]
        with open("wan_scene_b_keyframes.mp4", "wb") as f:
            f.write(requests.get(video_url, timeout=120).content)
        print("首尾帧过渡视频下载完成!")
        break
    elif st in ("failed", "canceled"):
        raise RuntimeError(f"失败: {res.get('error')}")
    time.sleep(5)

场景 C:多图参考生视频(Multi-Image Reference)

传入 3 张或更多参考图片(或显式指定 role: "reference_image"),模型综合提取所有参考图中的主体角色、服装配饰与环境风格,生成风格高度统一的连续视频,解决 AI 视频人物脸部不一致的问题。

C-1. curl 示例(多图参考保持主体一致)

curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "参考图片中的主角身着同一套战袍,在古代演武场上挥舞长剑,动作凌厉,保持脸部与服装一致",
    "images": [
      { "url": "https://your-domain.com/character_front.jpg", "role": "reference_image" },
      { "url": "https://your-domain.com/character_side.jpg", "role": "reference_image" },
      { "url": "https://your-domain.com/character_armor_detail.jpg", "role": "reference_image" }
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  }'

C-2. Python 完整示例(多图参考角色一致性)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 传入多张不同角度/细节的主体图片
ref_images = [
    "https://your-domain.com/hero_angle_1.png",
    "https://your-domain.com/hero_angle_2.png",
    "https://your-domain.com/hero_close_up.png"
]

payload = {
    "model": "wan3.0-video",
    "prompt": "主角在繁华的赛博朋克夜市街道穿行,霓虹倒影,画面忠实再现参考图中的人物外貌与发型细节",
    "images": [{"url": u, "role": "reference_image"} for u in ref_images],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
}

r = requests.post(f"{BASE_URL}/v1/video/generations", headers=HEADERS, json=payload, timeout=60).json()
task_id = r["task_id"]
print(f"[C. 多图参考] 任务提交成功: {task_id}")

while True:
    data = requests.get(f"{BASE_URL}/v1/video/generations/{task_id}", headers=HEADERS).json()
    if data["status"] == "completed":
        url = data.get("video_url") or data["data"][0]["url"]
        with open("wan_scene_c_multiref.mp4", "wb") as f:
            f.write(requests.get(url, timeout=120).content)
        print("多图参考一致性视频已保存!")
        break
    elif data["status"] in ("failed", "canceled"):
        raise RuntimeError(data.get("error"))
    time.sleep(5)

场景 D:图 + 视频 + 音频多模态参考(Multimodal Reference)

跨越单一维度的多模态协同创作:传入角色主体图片、动作参考视频与节奏音频。模型将结合参考视频的镜头运动与运镜轨迹、参考音频的节拍/情绪,并映射到参考图的角色身上,输出高精度的动作与视听协同成片。

D-1. curl 示例(图 + 视频 + 音频多模态)

curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "让画面中的虚拟歌姬跟随参考视频的舞蹈动作起舞,动作节奏与参考音频的高潮卡点完全吻合",
    "images": [
      { "url": "https://your-domain.com/singer_character.png", "role": "reference_image" }
    ],
    "videos": [
      { "url": "https://your-domain.com/dance_motion_ref.mp4", "role": "reference_video" }
    ],
    "audios": [
      { "url": "https://your-domain.com/bgm_beat_ref.mp3", "role": "reference_audio" }
    ],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
  }'

D-2. Python 完整示例(图视音频全模态协同)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 组装跨模态素材
payload = {
    "model": "wan3.0-video",
    "prompt": "角色身形与外貌严格参照图片,动作与运镜跟随参考视频,节奏与节拍跟随音频",
    "images": ["https://your-domain.com/actor_portrait.jpg"],
    "videos": ["https://your-domain.com/action_scene_ref.mp4"],
    "audios": ["https://your-domain.com/audio_tempo_ref.mp3"],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
}

resp = requests.post(f"{BASE_URL}/v1/video/generations", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
task_id = resp.json()["task_id"]
print(f"[D. 全模态协同] 任务已提交: {task_id}")

while True:
    status_resp = requests.get(f"{BASE_URL}/v1/video/generations/{task_id}", headers=HEADERS).json()
    st = status_resp.get("status")
    print(f"生成进度: {st}")
    if st == "completed":
        url = status_resp.get("video_url") or status_resp["data"][0]["url"]
        with open("wan_scene_d_multimodal.mp4", "wb") as f:
            f.write(requests.get(url, timeout=180).content)
        print("多模态视听联动视频生成完毕!")
        break
    elif st in ("failed", "canceled"):
        raise RuntimeError(status_resp.get("error"))
    time.sleep(6)

场景 E:文件 / 网页链接参考(Doc & Link Reference)

支持将长文档(策划案、剧本、产品白皮书 PDF 等)或公开网页链接直接喂给模型。模型深度解析文档要点或网页的图文资产,生成专业的宣传解说、资讯播报或产品介绍视频。

E-1. curl 示例(文档 + 网页链接参考)

curl -sS -X POST "https://aihubcc.cc/v1/video/generations" \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "根据所附产品策划文档与官网产品落地页的内容,制作一段具有科技感的新品发布概念视频",
    "files": [
      { "url": "https://your-domain.com/product_brief.pdf", "role": "file" }
    ],
    "links": [
      { "url": "https://your-domain.com/product_landing_page", "role": "link" }
    ],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
  }'

E-2. Python 完整示例(文档与网页生视频)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

payload = {
    "model": "wan3.0-video",
    "prompt": "结合文档剧本大纲与参考网页的视觉设计风格,生成一段电影宣发概念预告片",
    "files": ["https://your-domain.com/movie_synopsis.pdf"],
    "links": ["https://your-domain.com/official_movie_site"],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
}

r = requests.post(f"{BASE_URL}/v1/video/generations", headers=HEADERS, json=payload, timeout=60).json()
task_id = r["task_id"]
print(f"[E. 文档/网页参考] 任务提交: {task_id}")

while True:
    data = requests.get(f"{BASE_URL}/v1/video/generations/{task_id}", headers=HEADERS).json()
    if data["status"] == "completed":
        url = data.get("video_url") or data["data"][0]["url"]
        with open("wan_scene_e_doc_link.mp4", "wb") as f:
            f.write(requests.get(url, timeout=120).content)
        print("文档/网页参考生成视频已下载!")
        break
    elif data["status"] in ("failed", "canceled"):
        raise RuntimeError(data.get("error"))
    time.sleep(5)

异步轮询取片与成片下载

通义万相 3.0 为纯异步生成接口。提交任务后返回唯一的 task_id,客户端随后调用轮询接口查询任务状态:

# 查询任务状态(双端点兼容)
curl -sS "https://aihubcc.cc/v1/video/generations/task_xxx" \
  -H "Authorization: Bearer sk-xxx"

# 响应示例(已完成):
{
  "id": "task_xxx",
  "task_id": "task_xxx",
  "status": "completed",
  "progress": 100,
  "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=...",
  "data": [
    {
      "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=..."
    }
  ]
}
字段说明
status任务当前状态:queued(排队中)/ processing(渲染中)/ completed(已完成)/ failed(已失败)
video_url成片视频直链。为阿里云 OSS 官方下载直链(稳定不防盗链,可直接用于业务展示或存储分发)
data[0].url同 video_url,OpenAI 规范格式
💡 下载建议:
- 优先直接通过返回的 video_url 官方直链进行 GET 下载(无需附带鉴权 Header);
- 若业务需统一收敛在网关出口,亦可请求 GET https://aihubcc.cc/v1/videos/{task_id}/content(附带 Bearer 令牌),网关将自动 302 转发至成片流。

注意事项与最佳实践

  • 按秒 × 分辨率精准计费:无论文生还是多模态参考,计费单价仅与分辨率档位及 duration 时长挂钩;生成失败不扣费。
  • 分辨率名实相符:请求 720p 即出 720p,请求 1080p 即出真实 1080p 高清视频,底层绝不偷换低清降级。
  • 模型版本选择:
    • wan3.0-video:全能版,多模态参考适应面最广,性价比极高;
    • wan3.0-video-prime:优速版,原生 30fps 流畅高帧率、运动画质更细腻且出片速度更快,适合对质感与效率有极高要求的商用场景。
  • 素材访问要求:所有图片、视频、音频、文档、网页的 URL 必须能被公网直接 GET 访问(避免放在需登录或存在严格防盗链的私有云上);图片支持 Base64 Data URI。
  • 素材互斥守则:不要在单次请求中将首尾帧与视频/音频/文件/链接混合传入。
  • 内容安全合规:提示词与所有多模态素材请遵守公序良俗,避免暴力、未成年、涉政等敏感内容,拦截任务不计费。

Qwen 图像生成(通义千问)Image

🖼️ 阿里「通义千问」官方图像模型(阿里云百炼直出)。支持文生图(/v1/images/generations)与图生图 / 编辑(/v1/images/edits 传参考图),同步出图、无需轮询。返回阿里官方图片直链、无水印;两种都 、按张计费、失败不计费。

模型

模型定位计费
qwen-image-3.0-pro通义千问图像 3.0 Pro,高画质文生图 + 图生图 / 编辑按张
每次调用返回 1 张图,按张计费、失败不计费。返回阿里官方直链、无水印。

接口信息

项说明
文生图POST /v1/images/generations(同步,返回即出图)
图生图 / 编辑POST /v1/images/edits(传参考图 image + prompt,在原图上编辑);同模型、同价 ,参考图不额外计费
返回data[0].url(默认,阿里官方直链)或 data[0].b64_json
鉴权Authorization: Bearer sk-你的令牌
令牌分组Wan 或 auto(智能路由)

核心参数

参数类型必填默认说明
modelstring是固定 qwen-image-3.0-pro
promptstring是图像描述提示词(中英文均可)
sizestring否2528x1696宽×高,如 1024x1024。精确生效(实测按传入 WxH 原样出图);不传默认约 2528×1696(≈3:2)。画幅只认 size
aspect_ratiostring⚠️ 本模型不生效(会被忽略、仍出默认画幅)。要控画幅请用 size
response_formatstring否urlurl(阿里官方图片直链)或 b64_json(base64 内嵌,已实测)
ninteger否1每次返回 1 张,保持 n=1;需多张请多次调用
imagestring否图生图 / 编辑(打 /v1/images/edits):参考图,公网 URL 或 base64(data:image/...;base64,)或 multipart 文件(-F "image=@ref.png")。实测参考图会被忠实读取(原图保留 + 按 prompt 编辑)
⚠️ 画幅用 size(精确 WxH),别用 aspect_ratio(本模型忽略它)。常用:1:1 1024x1024 / 1328x1328、16:9 1664x928、9:16 928x1664;不传则约 2528×1696。输出 PNG。

示例请求

# 文生图 —— 同步,一次返回即拿到图片(无需轮询)
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0-pro","prompt":"一只柯基犬坐在草地上,午后阳光,超写实摄影"}'

# 指定画幅:1:1(用 size,别用 aspect_ratio)
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0-pro","prompt":"国潮工笔锦鲤,红金配色","size":"1328x1328"}'

# 16:9 宽画幅
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0-pro","prompt":"电影感雪山日出全景","size":"1664x928"}'

# 返回 base64
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0-pro","prompt":"极简红色圆形,纯白背景","size":"1024x1024","response_format":"b64_json"}'

# 图生图 / 编辑 —— 传参考图打 /v1/images/edits(同模型、同价 ,参考图不额外计费)
curl -X POST https://aihubcc.cc/v1/images/edits \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0-pro","prompt":"保留主体,把背景换成落日海边","image":"https://example.com/ref.jpg"}'

# 图生图 —— 也可用文件上传参考图(multipart)
curl -X POST https://aihubcc.cc/v1/images/edits \
  -H "Authorization: Bearer $TOKEN" \
  -F "model=qwen-image-3.0-pro" -F "prompt=把它变成柯基脸,保持白色背景" -F "image=@ref.png"

轮询取片

同步接口,无需轮询:请求返回即拿到结果。默认 data[0].url 为阿里官方图片直链(有有效期,请及时保存);需 base64 内嵌时加 "response_format":"b64_json" 取 data[0].b64_json。

# 默认 url 返回结构:
# {"created":1786957747,"data":[{"url":"https://dashscope-<...>.aliyuncs.com/xxx.png"}]}
curl -L "IMAGE_URL" -o result.png

Python 完整请求

import requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-你的令牌", "Content-Type": "application/json"}
r = requests.post(f"{BASE}/images/generations", headers=H, json={
    "model": "qwen-image-3.0-pro",
    "prompt": "一只柯基犬坐在草地上,午后阳光,超写实摄影",
    "size": "1328x1328",
}).json()
url = r["data"][0]["url"]
open("qwen.png", "wb").write(requests.get(url).content)

注意事项

  • 文生图:给 prompt(可加 size)打 /v1/images/generations。图生图 / 编辑:传参考图 image 打 /v1/images/edits,同模型、同价 ,参考图不额外计费。
  • 画幅只认 size(精确 WxH);aspect_ratio 会被忽略、仍出默认约 2528×1696。
  • n=1 每次 1 张;需多张请多次调用。
  • 返回阿里官方图片直链(*.aliyuncs.com)、无水印;链接有有效期,请及时下载保存。输出 PNG。

建议

  • 要指定比例就传 size:1:1 1328x1328、16:9 1664x928、9:16 928x1664;不在意画幅可不传(默认约 2528×1696)。
  • 需要本地落库用 "response_format":"b64_json",否则默认拿直链最省事。

快手可灵 · Kling 3.0 / Kling-v3 官方直连 Video

🎬 快手可灵 AI(Kling 3.0)具备顶尖的物理模拟能力与动作连贯性。本平台以 OpenAI 兼容的异步视频接口提供完整生成能力。支持经典文生视频、首尾帧图生视频、多图融合参考以及 图视多模态混合生成。按秒计费、失败或审核拦截不计费、默认自带生成音效与 AAC 原生音轨。

模型列表与计费说明(按秒计费 · 全默认有声)

本平台提供三档不同清晰度的固定模型(底层均完整具备多图融合与视频参考能力):

模型名称档位说明分辨率适用场景
kling-v3-standard标准版720p性价比首选,适合快速出片与日常生成
kling-v3-pro专业版1080p高清写实,光影与细节更丰富
kling-v3-4k4K 超清版3840×2160 (4K)影视级超高清成片输出
计费规则:任务费用 = 实际出片秒数 × 档位每秒单价(例:kling-v3-standard 5 秒 = ,kling-v3-pro 5 秒 = )。失败或审核拦截不计费。成片默认自带生成音效与 AAC 原生音轨。

接口信息

项说明
提交端点POST /v1/videos 或 POST /v1/video/generations(标准 JSON,双端点完全等价兼容)
轮询端点GET /v1/videos/{task_id} 或 GET /v1/video/generations/{task_id}
视频直出预览GET /v1/videos/{task_id}/content(带 Bearer 令牌鉴权 302 重定向流式返回成片)
下载成片完成后响应里的 data[0].url(官方腾讯 VOD 高速直链,稳定不过期)
鉴权方式Authorization: Bearer sk-你的令牌
令牌分组Kling(或 auto 智能路由分组)

完整参数字典

参数名类型必填默认值详细说明与取值范围
modelstring是模型名,如 kling-v3-standard、kling-v3-pro 或 kling-v3-4k
promptstring是画面动作描述,字数上限 2000 字符
negative_promptstring否负向提示词,用于过滤低画质、多肢体、杂乱文字等不需要的元素
duration / secondsinteger / string否5生成时长(秒),支持 5 或 10(如 5、10、"5"、"10")
ratio / aspect_ratiostring否16:9视频画幅比例,支持 16:9(横屏)、9:16(竖屏)、1:1(方形)
resolutionstring否依模型视频清晰度,各模型已固定清晰度;亦可通过 resolution 或 size 显式指定
images / image_urlsarray否参考图片链接数组或对象数组:
• 传入 1 张图片:作为图生视频首帧;
• 传入 2 张图片:第一张为首帧,第二张为尾帧,模型平滑过渡;
• 传入对象数组:支持显式指定 role,可选 first_frame(首帧)、last_frame(尾帧)、reference_image(参考图)
videosarray否(Omni 多模态专属) 参考视频链接数组,传入视频 URL 用于动作复刻或风格迁移
generate_audioboolean否true是否生成配套音效。本平台默认开启;注:当请求包含参考视频时,模型限制暂不支持同时生成音频
camera_controlobject否镜头运镜控制对象(包含 type: "simple" 或 "config"),支持通过各项维度微调运镜动作:
• pan:水平平移(左右);
• tilt:垂直俯仰(上下);
• zoom:镜头变焦推拉;
• roll:镜头旋转

调用代码示例

A. 经典文生视频(Text-to-Video)

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v3-pro",
    "prompt": "繁华都市霓虹灯下的雨夜,一个打着雨伞的行人在积水的路面上缓慢行走,写实电影风格,光影斑驳",
    "negative_prompt": "画面模糊,低画质,崩坏肢体,水印",
    "ratio": "16:9",
    "duration": 5
  }'

B. 经典图生视频(首尾帧控制)

传入 2 张图片链接:第一张自动作为首帧、第二张作为尾帧,由模型生成过渡画面。

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v3-pro",
    "prompt": "画面由第一张图片的人物微笑平滑过渡到第二张图片的惊讶表情,动作写实自然",
    "images": [
      "https://example.com/smile_face.png",
      "https://example.com/surprised_face.png"
    ],
    "duration": 5
  }'

C. 多图融合参考(Omni 特性)

支持传入多张参考图,通过对象指定 role(如角色外观首帧 + 场景风格参考图)。

curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v3-pro",
    "prompt": "参考图片一中的女主角和图片二的复古咖啡馆场景,绘制一段平稳摇臂运镜的画面",
    "images": [
      {
        "url": "https://example.com/character.png",
        "role": "first_frame"
      },
      {
        "url": "https://example.com/coffee_shop.png",
        "role": "reference_image"
      }
    ],
    "resolution": "1080p",
    "duration": 5
  }'

D. 图像参考 + 视频参考多模态混合生成(动作/运镜复刻)

可同时传入参考图与参考视频,实现人物外观由图片决定、主体招式动作与镜头由视频决定的混合生成。

⚠️ 重要注意事项:当传入参考视频时,平台将根据规则自动关闭音频生成(官方规则:视频参考模式与音频生成互斥),无需客户端额外排查。
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v3-pro",
    "prompt": "图一中的人物作为主角,完美复刻视频中的武术动作,动作流畅,画风高清写实",
    "images": [
      {
        "url": "https://example.com/my_character.png",
        "role": "reference_image"
      }
    ],
    "videos": [
      "https://example.com/motion_reference.mp4"
    ],
    "resolution": "1080p",
    "duration": 5
  }'

轮询结果响应格式

查询请求(支持双端点):

curl -X GET https://aihubcc.cc/v1/videos/你的任务ID \
  -H "Authorization: Bearer sk-你的令牌"

任务完成响应示例(200 OK):

{
  "id": "task_zbpGfYv1qStMwLwVtPW8G59KOGfDJr9k",
  "status": "completed",
  "object": "video.generation",
  "data": [
    {
      "url": "https://gpt2api.aihubcc.cc/d/kling/1251015623-AigcVideoTask-ecdc586e9cf2b2419844a1309e3b3691t"
    }
  ]
}

Python 完整请求示例(全生命周期)

import time
import requests

BASE_URL = "https://aihubcc.cc"
API_KEY = "sk-你的令牌"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 1. 提交视频生成任务
payload = {
    "model": "kling-v3-pro",
    "prompt": "繁华都市霓虹灯下的雨夜,一个打着雨伞的行人在积水的路面上缓慢行走,写实电影风格,光影斑驳",
    "negative_prompt": "画面模糊,低画质,崩坏肢体,水印",
    "ratio": "16:9",
    "duration": 5
}
resp = requests.post(f"{BASE_URL}/v1/videos", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
task_id = resp.json()["id"]
print(f"任务已提交,Task ID: {task_id}")

# 2. 轮询直到生成完成
start_time = time.time()
while time.time() - start_time < 900:
    poll_res = requests.get(f"{BASE_URL}/v1/videos/{task_id}", headers=HEADERS, timeout=30).json()
    status = poll_res.get("status")
    print(f"当前状态: {status} (耗时: {int(time.time() - start_time)}s)")
    if status == "completed":
        video_url = poll_res["data"][0]["url"]
        # 3. 下载保存视频
        content = requests.get(video_url, timeout=120).content
        with open("kling_output.mp4", "wb") as f:
            f.write(content)
        print("视频已成功下载至本地 kling_output.mp4!")
        break
    elif status in ("failed", "canceled"):
        raise RuntimeError(f"任务失败: {poll_res.get('error')}")
    time.sleep(5)

注意事项

  • 按秒计费规则:任务费用 = 实际出片秒数 × 档位每秒单价;失败或审核拦截不计费。
  • 成片默认自带音频:标准版与专业版成片默认自带生成音效与 AAC 原生音轨;⚠️ 当请求包含参考视频(video reference)时,受官方规则限制:视频参考模式与音频生成互斥,平台将自动关闭音频生成,无需客户端额外排查。
  • 双端点全面兼容:支持 POST /v1/videos 与 POST /v1/video/generations 提交,支持 /content 视频直出预览。
  • 素材公网可访问:参考图片和参考视频 URL 必须能被公网直接访问下载。

GPT-Image-2(1K / 2K / 4K · 全系列支持同步与异步) Image

📢 全清晰度档位就绪 & 双模态无感升级:GPT-Image-2 覆盖 1K 基准版、2K 高清版与真 4K UHD 超清版 三大主力档位。全系列所有模型均原生支持默认同步直接出图(完美适配官方 OpenAI SDK 零报错即插即用)与 async: true 异步任务轮询双模态,并 100% 保持对存量 POST /v1/videos 视频端点的向下兼容。支持文生图、图生图编辑与 Chat 对话生图。按张固定计费,生成失败不扣费,成品纯净无水印。
输入限制:JSON 请求体最多 8 MiB;参考图可使用公网 HTTPS 直链或完整 data:image/png;base64,...、data:image/jpeg;base64,...,Base64 解码后的参考图合计最多 5 MiB。超过限制会在提交前返回 400,不会扣费。

模型

核心模型名档位定位标称长边 / 推荐分辨率同步能力 (Sync)异步能力 (Async)
gpt-image-21K 基准版1024² (1:1), 1536×1024 (16:9), 1024×1536 (9:16)10~20s 快速出图返回图片立即返回 task_id,后台轮询取图
gpt-image-2-2k2K 高清版2048×2048 (1:1), 2048×1152 (16:9), 1152×2048 (9:16)长连接阻塞出图返回图片立即返回 task_id,后台轮询取图
gpt-image-2-4k4K 超清版3840×2160 (16:9 真 4K), 2160×3840 (9:16), 2880² (1:1)长连接阻塞出图返回图片立即返回 task_id,后台轮询取图
模型合并说明:
• 模型合并:原 gpt-image-2-1k 已完全合并进 gpt-image-2,对外统一展示为 gpt-image-2,系统已配置同名平滑兼容映射(历史传参 gpt-image-2-1k 完全正常处理);
• 遗留模型下线:历史遗留模型(gpt-image-2-1k-async、gpt-image-2-3.5k)已彻底下线停运,请直接使用对应标准档位;
• 风格变体:若需要 Adobe Firefly 真实摄影质感或艺术插画设计,请查看邻近页签「GPT Image 2.5」。

接口信息

端点方式默认模态功能说明
POST /v1/images/generationsJSON同步直出(传 async:true 转异步)官方原生文生图标准端点,完美适配官方 OpenAI SDK
POST /v1/images/editsmultipart / JSON同步直出(传 async:true 转异步)图生图 / 图像编辑(参考图 + 提示词描述修改)
POST /v1/chat/completionsJSON同步直出Chat 对话生图(在 messages content 中传入 Base64 image_url)
POST /v1/videos 或 /v1/video/generationsJSON异步任务轮询存量兼容端点:100% 保持历史行为返回 task_id,老脚本零改动、零报错

双模态调用机制(同步 / 异步自由切换)

模式 A:默认同步阻塞模式(全面支持官方 OpenAI SDK)

无需额外参数,直接调用即可。网关内部自动等待生成完毕并返回标准 ImageResponse 结构:

{
  "created": 1726567200,
  "data": [
    {
      "url": "https://gpt2api.aihubcc.cc/simg/yaimg_xxx.png",
      "b64_json": null
    }
  ]
}

开发优势:完美适配 Python client.images.generate()、Node.js openai.images.generate() 等官方 SDK,彻底告别以往报 Task object has no attribute 'data' 的痛点!

模式 B:显式异步任务模式(适合大批量并发 / 长耗时任务)

在请求 Body 中传 "async": true,或在 URL 中添加 ?async=true,或携带 Header X-New-Api-Async: true。接口将立即返回任务 ID,规避客户端长连接超时:

{
  "id": "task_GEDO8H85WHxQV98z4tM2kEfJMcVxzLlq",
  "status": "queued",
  "created_at": 1726567200
}
  • 轮询端点:GET /v1/images/generations/{id}(老客户端调 GET /v1/videos/{id} 亦通用);
  • 取片端点:GET /v1/images/generations/{id}/content 或响应内的 image_url / data[0].url。

统一参数字典与多模态输入

参数名类型必填默认值详细说明与取值范围
modelstring是模型名:gpt-image-2、gpt-image-2-2k、gpt-image-2-4k(兼容历史名 gpt-image-2-1k)
promptstring是画面动作与细节描述词。按字符数计(中英文一视同仁),建议 ≤ 8000 字符(硬上限约 1 万字符)
sizestring否依模型精确像素分辨率(如 1024x1024、2048x2048、3840x2160 等);size 优先级高于 aspect_ratio
aspect_ratio / ratiostring否1:1画幅比例,支持 1:1、16:9、9:16、4:3、3:4。平台自动根据模型清晰度档位换算为对应标准像素尺寸
response_formatstring否url返回格式:url(默认下载直链)或 b64_json(Base64 编码数据)
asyncboolean否false是否开启异步任务模式。默认 false 为同步直接返图;设为 true 即刻返回 task_id 供轮询
ninteger否1单次生成图片张数,默认 1

图生图 / 参考图(Edits)多模态支持说明

平台支持三种灵活的参考图传递方式:

  • 方式 1(标准表单上传):使用 POST /v1/images/edits,传 -F "image=@local_file.png"(支持多张重复 -F image=@...,最多 6 张,解码后合计 ≤ 5MB);
  • 方式 2(JSON 统一传参):使用 POST /v1/images/generations 或 /v1/images/edits,支持在 Body 中传入 image(公网直链或 Base64 data: URI)、images(数组)、input_reference 或 metadata.content,平台全自动兼容提取;
  • 方式 3(Chat 对话生图):使用 POST /v1/chat/completions,在 messages 数组的 content 中传入 {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}。

清晰度档位与真 4K 规格详解

模型推荐分辨率约等于像素量典型用途
gpt-image-21024×1024 (1:1), 1536×1024 (16:9), 1024×1536 (9:16)1K 基准版约 105~157 万头像、缩略图、社媒配图、快速出图
gpt-image-2-2k2048×2048 (1:1), 2048×1152 (16:9), 1152×2048 (9:16)2K 高清版约 236~419 万常规海报、Banner、电商主图
gpt-image-2-4k3840×2160 (16:9), 2160×3840 (9:16), 2880×2880 (1:1)真 4K UHD约 829 万宽屏/竖屏海报、视频封面、影视级超高清大图
关于真 4K UHD 规格:gpt-image-2-4k 输出标准 4K UHD 画幅——横版 3840×2160(16:9)或竖版 2160×3840(9:16),长边恒 3840,与 4K 电视/显示器同规格。方图推荐输出 2880×2880 或使用 2K 档的 2048×2048。画幅不影响计费,一律 。

4K 各画幅尺寸标准

真 4K 长边恒 3840,支持任意非方图比例(不再只有 16:9 / 9:16)。传 aspect_ratio 或 size 即按该比例出图、长边保持 3840。方图 1:1 推荐 2880×2880 或 2K 档 2048²。下表为实测输出;画幅不影响计费,一律 。

aspect_ratio(或 size)实测输出方向典型用途
16:9(不传时默认)3840×2160横视频封面 / 宽屏壁纸 / 横版海报
9:162160×3840竖手机屏 / 竖版海报 / 短视频封面
3:42880×3840竖竖版海报 / 电商详情页
1:1 方图2880×2880 / 2048×2048方社媒方图 / 高清头像

调用代码示例

1. 模式 A:默认同步出图(标准 OpenAI 官方 SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://aihubcc.cc/v1",
    api_key="sk-你的生图令牌"
)

# 默认同步直出:原生返回 ImageResponse,无需轮询
response = client.images.generate(
    model="gpt-image-2-2k",
    prompt="一只可爱的金毛犬在草地上奔跑,高清写真,柔和晨光",
    size="2048x2048",
    response_format="url"
)

print("图片已生成:", response.data[0].url)

2. 模式 A:默认同步出图(curl)

curl -X POST https://aihubcc.cc/v1/images/generations   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2-2k",
    "prompt": "一只橘猫趴在窗台上晒太阳,水彩画风格,细节丰富",
    "size": "2048x2048",
    "response_format": "url"
  }'
# 直接返回 {"created": 1726567200, "data": [{"url": "https://...", "b64_json": null}]}

3. 模式 B:显式异步任务模式(curl)

# ① 提交任务(传 "async": true,立即返回 task_id)
curl -X POST https://aihubcc.cc/v1/images/generations   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2-4k",
    "prompt": "浩瀚星空下的未来科幻都市,霓虹流动,电影级宽银幕",
    "aspect_ratio": "16:9",
    "async": true
  }'
# → {"id": "task_GEDO8H85WHxQV98z4tM2kEfJMcVxzLlq", "status": "queued", ...}

# ② 轮询取图(每 3–5 秒查询一次)
curl -X GET https://aihubcc.cc/v1/images/generations/task_GEDO8H85WHxQV98z4tM2kEfJMcVxzLlq   -H "Authorization: Bearer sk-你的生图令牌"
# 完成后响应中 data[0].url 包含图片直链。

# ③ 成片下载(从 completed 响应里的 url 或直接访问 /content)
curl -L "https://aihubcc.cc/v1/images/generations/task_GEDO8H85WHxQV98z4tM2kEfJMcVxzLlq/content"   -H "Authorization: Bearer sk-你的生图令牌" -o city_4k.png

4. 图生图 / 原图编辑(Edits 多模态)

# 方式 1:标准 multipart 表单上传(本地文件)
curl -X POST https://aihubcc.cc/v1/images/edits   -H "Authorization: Bearer sk-你的生图令牌"   -F "model=gpt-image-2-2k"   -F "prompt=保留人物主体构图,将背景替换为海边夕阳落日"   -F "image=@portrait.png"

# 方式 2:JSON 传参(支持公网 URL 或 Base64)
curl -X POST https://aihubcc.cc/v1/images/edits   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2-4k",
    "prompt": "保留人物主体不变,将背景改为赛博朋克夜市街道",
    "image": "https://cdn.example.com/portrait.jpg",
    "aspect_ratio": "16:9"
  }'

5. Chat 对话生图(POST /v1/chat/completions)

curl -X POST https://aihubcc.cc/v1/chat/completions   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "把这张参考图绘制成未来赛博朋克风格的海报"},
        {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64>"}}
      ]
    }]
  }'

6. 存量兼容端点(POST /v1/videos 保持无感)

# 存量老脚本继续请求 /v1/videos,完全保持原有 task_id 异步轮询体验
curl -X POST https://aihubcc.cc/v1/videos   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2-4k",
    "prompt": "a cinematic product poster, ultra sharp",
    "aspect_ratio": "16:9"
  }'
# 返回 task_id,通过 GET /v1/videos/{task_id} 轮询取片,存量业务零修改

Python 完整异步生命周期脚本(4K 实测)

import time
import requests

BASE_URL = "https://aihubcc.cc/v1"
TOKEN = "sk-你的生图令牌"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

# 1. 提交异步生成任务
resp = requests.post(
    f"{BASE_URL}/images/generations",
    headers=HEADERS,
    json={
        "model": "gpt-image-2-4k",
        "prompt": "雪山脚下清澈见底的高山湖泊,清晨第一缕阳光,超高清摄影",
        "aspect_ratio": "16:9",
        "async": True,
    },
)
resp.raise_for_status()
task_id = resp.json()["id"]
print(f"异步任务已提交,Task ID: {task_id}")

# 2. 轮询取图(建议间隔 4 秒)
while True:
    time.sleep(4)
    poll = requests.get(f"{BASE_URL}/images/generations/{task_id}", headers=HEADERS).json()
    status = poll.get("status")
    print(f"轮询状态: {status}")
    if status == "completed":
        img_url = poll["data"][0]["url"]
        break
    elif status in ("failed", "failure", "error"):
        raise RuntimeError(f"生成失败: {poll.get('error')}")

# 3. 下载保存成片
img_data = requests.get(img_url, headers=HEADERS).content
with open("lake_4k.png", "wb") as f:
    f.write(img_data)
print("4K 成片已成功保存至本地 lake_4k.png!")

注意事项(输入格式与错误处理)

  • 双模态切换:默认无需任何参数即为同步出图;需异步排队时仅需传 "async": true。
  • 双端点兼容:标准端点为 /v1/images/generations 与 /v1/images/edits;存量 /v1/videos 保持 100% 兼容。
  • 提示词长度:按字符数计(中英文一视同仁),建议控制在 8000 字符以内。
  • 参考图大小:图生图上传参考图单张及合计解码后建议 ≤ 5MiB,支持 Base64 与公网直链。
  • 错误处理:400 参数格式错误不会扣费;任务失败或内容安全拦截均自动免计费。

建议

  • 快速交互 / SDK 集成直接使用默认同步模式,配合官方 OpenAI SDK 无需写轮询逻辑。
  • 大批量并发 / 弱网环境开启 async: true 异步任务模式,避免 HTTP 长连接超时断开。
  • 4K 宽屏海报使用 gpt-image-2-4k 搭配 aspect_ratio: "16:9" 或 "9:16",输出标称真 4K(3840×2160 / 2160×3840)。
  • 图生图支持本地文件 multipart 上传与 JSON 传公网直链,灵活适配各类前端与后端。

GPT-Image 2.5(Flare / Sunburst · 全系列支持同步与异步) Image

🎨 新一代 GPT-Image 2.5 艺术与摄影双引擎:提供 Flare(真实摄影感与物理光影)与 Sunburst(艺术插画设计与视觉海报)两个画风变体。全系模型均原生支持默认同步直接出图(标准 OpenAI SDK 零报错即插即用)与 async: true 异步任务轮询双模态,并 100% 保持对存量 POST /v1/videos 视频端点的向下兼容。支持文生图与图生图编辑。按张固定计费,生成失败不扣费,成品纯净无水印。

模型

核心模型名变体定位分辨率规格调用模态支持
gpt-image-2.5-flare-2kFlare(真实摄影感)2K(2048×2048)同步直出 + 异步轮询 + 视频端点兼容
gpt-image-2.5-flare-4kFlare(精细摄影)真 4K UHD(16:9→3840×2160 / 9:16→2160×3840)同步直出 + 异步轮询 + 视频端点兼容
gpt-image-2.5-sunburst-2kSunburst(艺术插画)2K(2048×2048)同步直出 + 异步轮询 + 视频端点兼容
gpt-image-2.5-sunburst-4kSunburst(超精艺术)真 4K UHD(16:9→3840×2160 / 9:16→2160×3840)同步直出 + 异步轮询 + 视频端点兼容
Flare 与 Sunburst 风格选择说明:
• Flare:真实物理世界质感、商品写实摄影、人像、纪实风光,光影与细节更细腻;
• Sunburst:概念艺术插画、二次元、扁平视觉、海报设计、丰富色彩张力;
两画风变体的分辨率、参考图能力、价格完全一致;原 -sync 冗余后缀模型已全面收敛至主模型,默认支持同步直出。

端点与调用方式

调用模式请求端点参数特征出图机制与说明
同步出图(默认推荐)POST /v1/images/generations 或 /v1/images/edits无需传 async(或 async: false)标准 OpenAI ImageResponse:直接阻塞并返回图片,任何 OpenAI 官方 SDK(Python / Node)即插即用!
异步任务(图片端点)POST /v1/images/generations 或 /v1/images/edits传 "async": true 或 ?async=true立即返回 {"id": "task_xxx", "status": "queued"} → 轮询 GET /v1/images/generations/{id} → 读 /content
异步任务(视频端点兼容)POST /v1/videos 或 /v1/video/generations老视频端点标准格式100% 保持历史行为:返回 task_id → 轮询 GET /v1/videos/{id} → 取 video_url

画幅与尺寸规格

用 aspect_ratio(16:9 / 9:16 / 3:4 等)或 size(WxH,优先级更高)控制画幅。2K 档长边 2048(方图 2048×2048、横版 2048×1152…);4K 档长边恒 3840、真 4K UHD(16:9→3840×2160、9:16→2160×3840,其它比例按长边 3840 出)。4K 无方图——方图 1:1 会退回横版 3840×2160,要方图请用 2K(2048²)。画幅不影响计费。

aspect_ratio2K 档(-2k)4K 档(-4k)
默认(不传)/ 1:12048×20483840×2160(⚠ 4K 无方图 → 退横版)
16:92048×11523840×2160
9:161152×20482160×3840
4:32048×15363840×2880
3:41536×20482880×3840

调用代码示例

1. 模式 A:默认同步出图(标准 OpenAI 官方 Python SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://aihubcc.cc/v1",
    api_key="sk-你的生图令牌"
)

# 默认同步直出:无需轮询,直接返回图片
response = client.images.generate(
    model="gpt-image-2.5-flare-2k",
    prompt="a single red apple on a white ceramic plate, studio product photo, soft lighting",
    size="2048x2048",
    response_format="url"
)

print("2.5 Flare 摄影图片生成成功:", response.data[0].url)

2. 模式 A:默认同步出图(curl)

curl -X POST https://aihubcc.cc/v1/images/generations   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2.5-sunburst-2k",
    "prompt": "futuristic flying car soaring through neon cloudy sky, colorful concept art",
    "size": "2048x2048",
    "response_format": "url"
  }'
# 一次返回标准 ImageResponse,直接获取成片 URL

3. 模式 B:显式异步任务模式(curl 4K 示例)

# ① 提交任务(传 "async": true,立即返回 task_id)
curl -X POST https://aihubcc.cc/v1/images/generations   -H "Authorization: Bearer sk-你的生图令牌"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-image-2.5-flare-4k",
    "prompt": "a serene mountain lake at sunrise, watercolor, ultra detailed",
    "aspect_ratio": "16:9",
    "async": true
  }'
# → {"id": "task_xxx", "status": "queued", ...}

# ② 轮询取片(每 3–5 秒查询一次)
curl -X GET https://aihubcc.cc/v1/images/generations/task_xxx   -H "Authorization: Bearer sk-你的生图令牌"

# ③ 下载成片
curl -L "https://aihubcc.cc/v1/images/generations/task_xxx/content"   -H "Authorization: Bearer sk-你的生图令牌" -o flare_4k.png

4. 图生图 / 原图编辑 · POST /v1/images/edits

用 POST /v1/images/edits 上传原图文件 + 提示词描述改动;亦可在 /v1/images/generations JSON Body 中传入 image 直链或 Base64:

curl -X POST https://aihubcc.cc/v1/images/edits   -H "Authorization: Bearer sk-你的生图令牌"   -F "model=gpt-image-2.5-flare-2k"   -F "prompt=repaint the background as a serene blue sky with clouds, keep the subject"   -F "image=@input.png;type=image/png"

注意事项

  • 双模态切换:默认直接同步返回图片(适配官方 OpenAI SDK);传入 async: true 时进入异步任务模式,返回 task_id 供轮询。
  • 鉴权约定:请求均需携带 Authorization: Bearer sk-你的生图分组令牌。
  • 计费规则:按张固定计费、生成失败不扣费、成品纯净无水印。
  • 图生图编辑输出尺寸:编辑模式输出尺寸由模型自适应分配,需精确指定分辨率请使用文生图。

ChatGPT 官方线路生图(Token 实量计费) Official

🛡️ OpenAI 官方线路 & C2PA 官方正版鉴真:
本系列模型使用 OpenAI 官方线路,严格按照 OpenAI 官方 Input/Output Token 计量算法扣费。生成图像均内嵌官方不可篡改的 C2PA 鉴真元数据。支持 1024×1024、2560×1440(2K)、3840×2160(真 4K)等任意标准画幅与长宽比,无任何后期超分或画质压缩,成品纯净无水印。实际价格以控制台显示为准。

一、模型与计费方式

模型名称 风格定位与特点 所属分组
gpt-image-2-token OpenAI 第二代官方旗舰生图底座,支持全分辨率与自由画幅 Chatgpt
gpt-image-2.5-flare-token Flare 摄影变体:真实物理世界光影、商品静物、人像纪实 Chatgpt
gpt-image-2.5-sunburst-token Sunburst 艺术变体:概念艺术插画、海报设计、视觉张力 Chatgpt
📌 分组使用说明: - 本系列模型属于 Chatgpt 分组; - 平台的 default 分组令牌已自动连通,可直接发起调用;若新建专用令牌,请在分组中勾选 Chatgpt; - 按输入与输出 Token 实量计费,任务失败系统 100% 自动返还 Quota。

二、实测尺寸与画幅矩阵(实测输出分辨率与 Token 消耗)

经平台真机生产验证,本系列模型支持以下 8 档标准尺寸规格。系统原生直出对应画幅,真实输出像素与消耗 Token 实测对照如下:

分辨率档位 尺寸参数 (size) 画幅比例 实测输出分辨率 实测 Token 输出消耗 典型业务场景
1K 标清 1024x1024 1:1 方屏 1024 × 1024 196 image tokens 社交头像、商品正方形缩略图、ICON 设计
1K 标清 1536x1024 3:2 横屏 1536 × 1024 158 image tokens 单反横版摄影、文章博客配图、风景大片
1K 标清 1024x1536 2:3 竖屏 1024 × 1536 158 image tokens 人像全身写真、手机竖屏壁纸、角色立绘
2K 高清 2560x1440 16:9 横屏 2560 × 1440 205 image tokens 2K 桌面壁纸、视频 16:9 封面、演示文稿展板
2K 高清 1440x2560 9:16 竖屏 1440 × 2560 205 image tokens 小红书/抖音高清封面、移动端信息流海报
真 4K 超清 3840x2160 16:9 横屏 3840 × 2160 371 image tokens 影视级真 4K 巨幕壁纸、高精微距摄影、印刷海报
真 4K 超清 2160x3840 9:16 竖屏 2160 × 3840 371 image tokens 商用超清竖版灯箱、展会大型展架、精细排版设计
真 4K 超清 2880x2880 1:1 方屏 2880 × 2880 659 image tokens 超高精细度方形印刷画、高密度艺术设计
📌 尺寸调用避坑要点:
1. 严格使用白名单 size:请传表格中支持的宽×高规格字符串(如 "1024x1024"、"2560x1440"、"3840x2160" 等),请勿传入非白名单尺寸(如 1792x1024 或 2048x2048);
2. 原生返回 b64_json(内嵌不可篡改 C2PA 鉴真元数据):官方原生接口直接返回 Base64 图片数据(单张约 1.5MB~6MB,PNG 格式),客户端解码写入本地文件即可,永久免除第三方临时直链过期失效或跨域受阻问题;请求体中无需且请勿传 response_format: "url"。

三、调用方式与完整代码示例

采用标准 OpenAI POST /v1/images/generations 同步端点,官方 SDK 与常用网络库零改造兼容:

1. Python 官方 SDK 完整脚本(推荐 · 生产可用)

以下为即插即用的 Python 完整脚本,演示从任务提交、多画幅尺寸指定、解码 Base64 自动保存到本地文件的完整流程:

import base64
import os
from openai import OpenAI

# 1. 初始化客户端
client = OpenAI(
    base_url="https://aihubcc.cc/v1",
    api_key="sk-你的API令牌"  # default 分组令牌或 Chatgpt 分组专属令牌
)

# 2. 支持的标准尺寸常量字典
SIZES = {
    "1k_square": "1024x1024",      # 1K 1:1 方屏
    "1k_landscape": "1536x1024",   # 1K 3:2 单反横版
    "1k_portrait": "1024x1536",    # 1K 2:3 竖版人像
    "2k_landscape": "2560x1440",   # 2K 16:9 宽屏高清
    "2k_portrait": "1440x2560",    # 2K 9:16 手机竖屏
    "4k_landscape": "3840x2160",   # 真 4K 16:9 影视超清
    "4k_portrait": "2160x3840",    # 真 4K 9:16 巨幅海报
    "4k_square": "2880x2880"       # 真 4K 1:1 方屏印刷
}

def generate_official_image(model: str, prompt: str, size: str, output_path: str):
    """
    调用 ChatGPT 官方线路生图接口生成图像并落盘为 PNG 文件
    """
    print(f"🚀 开始生成图片: 模型 [{model}], 尺寸 [{size}]...")
    try:
        response = client.images.generate(
            model=model,
            prompt=prompt,
            size=size
        )

        # 3. 提取官方原生内嵌 C2PA 鉴真的 Base64 图片数据
        b64_data = response.data[0].b64_json
        image_bytes = base64.b64decode(b64_data)

        with open(output_path, "wb") as f:
            f.write(image_bytes)

        file_size_kb = len(image_bytes) / 1024
        print(f"✅ 生成成功!图片已解码保存至: {output_path} ({file_size_kb:.1f} KB)")

    except Exception as e:
        print(f"❌ 生图失败: {e}")
        return None

if __name__ == "__main__":
    # 示例 A: 真实摄影 Flare 变体生成真 4K 宽屏风景大图
    generate_official_image(
        model="gpt-image-2.5-flare-token",
        prompt="a cinematic macro shot of a dewdrop on a fresh monstera leaf, early morning golden light, 8k professional photography",
        size=SIZES["4k_landscape"],
        output_path="monstera_leaf_4k.png"
    )

    # 示例 B: 概念艺术 Sunburst 变体生成 2K 手机竖屏概念插画
    generate_official_image(
        model="gpt-image-2.5-sunburst-token",
        prompt="a futuristic cyberpunk samurai standing on a neon rain rooftop, vibrant colors, artistic poster",
        size=SIZES["2k_portrait"],
        output_path="cyberpunk_samurai_2k.png"
    )

2. Python requests 库原生调用脚本

import requests
import base64

API_URL = "https://aihubcc.cc/v1/images/generations"
API_KEY = "sk-你的API令牌"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

payload = {
    "model": "gpt-image-2-token",
    "prompt": "minimalist aesthetic architecture in desert, warm sunlight, clean geometric lines",
    "size": "1536x1024"  # 1K 3:2 单反横版摄影
}

response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code == 200:
    data = response.json()
    b64_json = data["data"][0]["b64_json"]
    with open("desert_architecture.png", "wb") as f:
        f.write(base64.b64decode(b64_json))
    print("✅ 图片生成成功并落盘!")
else:
    print(f"❌ 失败 [{response.status_code}]: {response.text}")

3. cURL 命令行请求示例

# 1. 概念艺术 Sunburst 变体 · 1024x1024 方屏
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer sk-你的API令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-sunburst-token",
    "prompt": "futuristic flying car soaring through neon cloudy sky, colorful concept art",
    "size": "1024x1024"
  }'

# 2. 真实摄影 Flare 变体 · 3840x2160 真 4K 超高清
curl -X POST https://aihubcc.cc/v1/images/generations \
  -H "Authorization: Bearer sk-你的API令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare-token",
    "prompt": "breathtaking sunset over snow mountain peaks, golden sunlight, 8k wallpaper",
    "size": "3840x2160"
  }'

四、核心优势与版本选型指南

  • 官方真 4K 原生渲染:支持 size: "3840x2160"、"2160x3840" 与 "2880x2880" 原生真 4K 输出,画面微观细节与文字边缘锐利清晰,绝非低清后期超分插值拉伸;
  • 纯净交付与正版鉴真:全系生成图片默认无水印,保留完整色彩动态范围,且内嵌不可篡改的 C2PA 官方正版数字鉴真签名;
  • 业务版本选型建议:
    • 走量与日常高性价比场景:选用 gpt-fast 分组下的按次生图模型。
    • 高端商用、精细画面与版权鉴真场景:选用本系列 Chatgpt 分组下的 -token 官方线路版,使用官方原版画质并按 Token 实量计费。

反重力 Antigravity(Claude + Gemini 图文)

基于 Google Antigravity 免费额度的独立分组,提供 Claude(Opus / Sonnet 4.6)+ Gemini 文本 + 原生 4K 出图。标准 OpenAI 兼容接口,支持 function call。令牌分组 gemini-anti。

模型

模型类型
claude-opus-4-6-thinkingClaude 顶配·带思考
claude-sonnet-4-6Claude 均衡
gemini-3.1-pro-lowGemini Pro 文本
gemini-3-flashGemini Flash 文本
gemini-3.6-flash-highGemini Flash 高质
gemini-3.1-flash-image-4k原生 4K 出图(5632×3072)
以上为 gemini-anti 分组卖价(已含分组倍率)。实际以模型广场为准。

接口信息

项说明
请求POST /v1/chat/completions
Base URLhttps://aihubcc.cc
令牌分组gemini-anti
Function Call支持(tools / tool_choice)
流式支持("stream": true)

核心参数

参数类型必填说明
modelstring是见上表;Claude / Gemini / 4K 出图切换 model 即可
messagesarray是OpenAI 标准对话消息
streambool否true 开启流式
tools / tool_choicearray / string否Function Call(Claude / Gemini 均支持)
temperature / max_tokens 等否OpenAI 标准采样参数

提交方式

文本对话、Function Call、4K 出图全部走同一端点 POST /v1/chat/completions,切换 model 即可。4K 出图(gemini-3.1-flash-image-4k)的图片在响应 choices[0].message.images[].image_url.url(data:image/jpeg;base64)返回。

示例:Claude 对话

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role":"user","content":"用一句话解释量子纠缠"}]
  }'

示例:4K 出图

图像通过对话接口返回,结果在 choices[0].message.images[].image_url.url(data:image/jpeg;base64)。强制输出 4K(5632×3072)。

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-4k",
    "messages": [{"role":"user","content":"一只戴宇航头盔的柴犬,电影级布光"}]
  }'

示例:Function Call

curl https://aihubcc.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role":"user","content":"北京天气如何"}],
    "tools": [{"type":"function","function":{
      "name":"get_weather",
      "parameters":{"type":"object","properties":{"city":{"type":"string"}}}
    }}]
  }'

轮询取片

本分组均为同步对话接口(含 4K 出图,图片直接在对话响应里返回),无需轮询 task_id。

Python 完整请求

from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://aihubcc.cc/v1")
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

注意事项

  • 令牌需在 gemini-anti 分组下
  • gemini-3.1-flash-image-4k 固定输出 4K,按次计费(,失败不计费
  • Claude 与 Gemini 均走同一 /v1/chat/completions,切换 model 即可

建议

  • Claude 顶配用带思考版 claude-opus-4-6-thinking;日常均衡用 claude-sonnet-4-6。
  • 要 4K 出图用 gemini-3.1-flash-image-4k(固定 5632×3072,按次 ,图在 message.images[].image_url.url 取。
  • Claude 与 Gemini 同端点,用 OpenAI SDK 只换 model 即可无缝切换;支持 tools function call 与 stream。

Seedance 自定义线路

字节跳动 Seedance 系列的自定义线路,与「Seedance 官方直连」相互独立、单独维护。共 4 个模型:sd-2.0-mini / sd-2.0-fast / sd-2.0-standard 与新一代 sd-2.5。支持 480p / 720p 两档清晰度,使用 OpenAI 兼容的异步视频接口:提交任务后轮询,完成时读取 video_url 获取成片。各模型调用方式完全一致,切换只需改 model 字段。

本线路为 sd-videos 分组,与导航中另外两套 Seedance 服务是独立通道、独立模型;请勿跨线路混用模型名。

模型

模型480p720p时长
sd-2.0-mini固定 15 秒按次经济档,走量首选
sd-2.0-fast固定 15 秒按次快速出片,性价比高
sd-2.0-standard固定 15 秒按次标准质量,画质更佳
sd-2.5默认 15 秒 · 可自定义按秒新一代 2.5,按秒计费更灵活
用 resolution 选清晰度(480p / 720p,默认 720p),两档价格不同、见上表。sd-2.0-mini/fast/standard 为按次计费,单次固定 15 秒成片、与传入时长无关;sd-2.5 为按秒计费 = 单价 × duration(例:sd-2.5 720p 5 秒 = 、默认 15 秒 = )。失败不计费。

接口信息

项说明
提交任务POST /v1/videos(JSON)
轮询进度GET /v1/videos/{task_id}
下载成片完成后响应里的 video_url(可直接下载 / 嵌入的直链)
鉴权Authorization: Bearer sk-你的令牌
令牌分组sd-videos(智能 auto 分组亦可路由)

核心参数

参数类型必填说明
modelstring是sd-2.0-mini / sd-2.0-fast / sd-2.0-standard / sd-2.5 之一
promptstring是视频描述提示词(文生视频)
aspect_ratiostring否画幅:16:9(默认)、9:16、1:1;也接受 size(如 1280x720),系统就近吸附到这三种
resolutionstring否清晰度:480p / 720p(默认 720p),两档价格不同、见模型价格表
durationinteger否时长秒数,仅 sd-2.5 生效(默认 15 秒);sd-2.0-* 固定 15 秒、传入无效
referenceImagesarray否参考图(图生视频),元素为公网 URL 或 data:image/...;base64,;可传多张
referenceVideosarray否参考视频,公网 URL 或 base64
referenceAudiosarray否参考音频,公网 URL 或 base64
只传 prompt 即为文生视频;附带 referenceImages 即为图生视频。参考素材均支持公网 URL 或 base64。失败不计费。

示例请求

# 文生视频(sd-2.0-standard,固定 15 秒)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{"model":"sd-2.0-standard","prompt":"雨夜霓虹街道,镜头缓慢推进,电影感光影","aspect_ratio":"16:9"}'

# sd-2.5 按秒计费(自定义时长、480p 更省)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{"model":"sd-2.5","prompt":"海边日落,海浪轻拍礁石","resolution":"480p","aspect_ratio":"16:9","duration":10}'

# 图生视频(referenceImages 参考图)
curl -X POST https://aihubcc.cc/v1/videos \
  -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" \
  -d '{"model":"sd-2.0-fast","prompt":"让画面动起来","referenceImages":["https://cdn.example.com/photo.jpg"]}'

轮询取片

curl https://aihubcc.cc/v1/videos/TASK_ID -H "Authorization: Bearer sk-xxx"
# status=completed 后用响应里的 video_url 直链下载
curl -L "VIDEO_URL" -o result.mp4
轮询到 completed/failed 停止;video_url 为可直接下载 / 嵌入的直链;失败不计费。

Python 完整请求

import time, requests
BASE = "https://aihubcc.cc/v1"
H = {"Authorization": "Bearer sk-你的sd-videos令牌", "Content-Type": "application/json"}
task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "sd-2.0-standard",
    "prompt": "雨夜霓虹街道,镜头缓慢推进,电影感光影",
    "aspect_ratio": "16:9",
}).json()
tid = task["task_id"]
while True:
    r = requests.get(f"{BASE}/videos/{tid}", headers=H).json()
    if r["status"] in ("completed", "failed"):
        break
    time.sleep(5)
url = r.get("video_url") or (r.get("data") or [{}])[0].get("url")
open("seedance.mp4", "wb").write(requests.get(url).content)

注意事项

  • 清晰度:用 resolution 选 480p / 720p(默认 720p),两档价格不同、见模型价格表。
  • 时长:sd-2.0-mini/fast/standard 单次固定 15 秒(按次计费);sd-2.5 可用 duration 自定义时长(按秒计费)。
  • 画幅仅支持 16:9 / 9:16 / 1:1 三种,其它比例会就近吸附;竖屏传 aspect_ratio":"9:16"。
  • 下载 video_url 为直链,请及时转存。失败不计费。