接口概览
video-v1 使用异步任务模式。创建任务时返回 task_...,客户端按间隔查询状态,状态为 completed 后再下载视频内容。
https://api.zgbhwzj.cn/v1
/v1/videos 请求都使用 Authorization: Bearer YOUR_API_KEY。不要把真实 key 写进浏览器前端代码,生产环境应由后端服务代发请求。
duration=5、duration=10、duration=15。
POST /v1/videos,请求体使用 UTF-8 JSON,核心字段为 prompt、duration、seconds、size。
POST /v1/videos,请求体使用 multipart/form-data,参考图通过 file 字段上传,时长只传 seconds。
快速开始
一次完整调用包含创建、轮询、下载三步。创建请求体必须使用 UTF-8 JSON,并带上 Content-Type: application/json; charset=utf-8。时长只能选择 5、10、15 秒。
向 /videos 提交 model、prompt、duration、seconds 和 size,响应里的 id 或 task_id 就是后续查询用的任务 ID。
向 /videos/{task_id} 发起 GET。queued、running、processing 继续等待;completed 进入下载;failed 读取错误信息并停止。
任务完成后访问 /videos/{task_id}/content,把响应体保存为 .mp4 文件。
https://api.zgbhwzj.cn/v1/videos
https://api.zgbhwzj.cn/v1/videos/{task_id}
https://api.zgbhwzj.cn/v1/videos/{task_id}/content
文生视频
文生视频使用 POST /v1/videos,请求方式为 application/json; charset=utf-8。下面是已验证通过的参数组合,真实测试显示上游目前只接受 5、10、15 秒。
model、prompt、duration、seconds 和 size。
| 字段 | 类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
model |
string | 是 | video-v1 |
视频生成模型名。 |
prompt |
string | 是 | 城市黄昏街头,电影级动态运镜... |
视频描述。中文提示词需要按 UTF-8 JSON 提交。 |
duration |
number | 推荐 | 5 / 10 / 15 |
视频时长,单位秒。4、6、7、8、9、11、12、13、14 秒会被上游拒绝。 |
seconds |
string | 推荐 | "5" / "10" / "15" |
上游兼容字段。和 duration 同时传时保持一致。 |
size |
string | 推荐 | 3840x2160 |
目标分辨率。4K 使用 3840x2160。 |
图生视频
图生视频使用同一个 POST /v1/videos 入口,但请求方式改为 multipart/form-data,把参考图作为 file 文件字段上传。实测可用时长仍然只有 5、10、15 秒。
seconds,不要传 duration。表单里的 duration=10 会被解析为字符串,可能触发上游类型错误:duration of type int。
https://api.zgbhwzj.cn/v1/videos
| 字段 | 类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
model |
form field | 是 | video-v1 |
视频模型名。 |
prompt |
form field | 是 | 让小狗自然向前走... |
图生视频提示词。建议描述保持参考图主体、环境和动作幅度。 |
file |
file | 是 | @reference.png |
参考图文件字段。已验证 PNG 可用。 |
seconds |
form field | 是 | 5 / 10 / 15 |
图生视频时长。4、6、7、8、9、11、12、13、14 秒会被上游拒绝。 |
aspect_ratio |
form field | 推荐 | 16:9 |
参考 seedance2test 文档参数,作为上游生成比例传入。 |
size |
form field | 推荐 | 1920x1080 |
中转侧会根据尺寸推导比例;和 aspect_ratio 保持一致。 |
curl 图生视频示例
curl -X POST "https://api.zgbhwzj.cn/v1/videos" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=video-v1" \
-F "prompt=以参考图为首帧,生成10秒写实自然风格宠物视频。保持主体一致,动作自然流畅,无畸变。" \
-F "seconds=10" \
-F "aspect_ratio=16:9" \
-F "size=1920x1080" \
-F "file=@reference.png;type=image/png"
PowerShell 图生视频示例
$base = "https://api.zgbhwzj.cn/v1"
$key = "YOUR_API_KEY"
$image = "C:\path\to\reference.png"
curl.exe -X POST "$base/videos" `
-H "Authorization: Bearer $key" `
-F "model=video-v1" `
-F "prompt=以参考图为首帧,生成10秒写实自然风格宠物视频。保持主体一致,动作自然流畅,无畸变。" `
-F "seconds=10" `
-F "aspect_ratio=16:9" `
-F "size=1920x1080" `
-F "file=@$image;type=image/png"
/v1/media/upload 和 /v1/media/generate,这两条路径实测返回 HTTP 404。对外调用图生视频请使用 /v1/videos multipart。
文生视频代码示例
下面的示例用于文生视频 JSON 调用。示例中的 YOUR_API_KEY 需要替换为你的真实 key。静态网页里只放占位符,不存放真实密钥。
请求体 payload.json
{
"model": "video-v1",
"prompt": "时长 15 秒,4K 60fps,电影级动态运镜,城市黄昏街头场景,地面积水镜面反光,车流动态光轨,霓虹灯光持续闪烁。",
"duration": 15,
"seconds": "15",
"size": "3840x2160"
}
curl
curl -X POST "https://api.zgbhwzj.cn/v1/videos" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Accept: application/json" \
--data-binary @payload.json
Windows PowerShell
$base = "https://api.zgbhwzj.cn/v1"
$key = "YOUR_API_KEY"
$payloadPath = ".\payload.json"
$body = @{
model = "video-v1"
prompt = "时长 15 秒,4K 60fps,电影级动态运镜,城市黄昏街头场景。"
duration = 15
seconds = "15"
size = "3840x2160"
} | ConvertTo-Json -Depth 5
$utf8NoBom = [System.Text.UTF8Encoding]::new($false)
[System.IO.File]::WriteAllText($payloadPath, $body, $utf8NoBom)
curl.exe -X POST "$base/videos" `
-H "Authorization: Bearer $key" `
-H "Content-Type: application/json; charset=utf-8" `
-H "Accept: application/json" `
--data-binary "@$payloadPath"
JavaScript fetch
const base = "https://api.zgbhwzj.cn/v1";
const apiKey = process.env.NEWAPI_API_KEY;
const create = await fetch(`${base}/videos`, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json; charset=utf-8",
"Accept": "application/json"
},
body: JSON.stringify({
model: "video-v1",
prompt: "时长 15 秒,4K 60fps,电影级动态运镜,城市黄昏街头场景。",
duration: 15,
seconds: "15",
size: "3840x2160"
})
});
if (!create.ok) {
throw new Error(await create.text());
}
const job = await create.json();
console.log(job.id || job.task_id);
轮询与下载
创建响应只表示任务已进入队列,不表示视频已经完成。建议服务端保存任务 ID,并使用后台任务轮询。
curl "https://api.zgbhwzj.cn/v1/videos/task_xxx" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
curl "https://api.zgbhwzj.cn/v1/videos/task_xxx/content" \
-H "Authorization: Bearer YOUR_API_KEY" \
--output video-v1-output.mp4
queued、running、processing 表示任务仍在生成,保持轮询。
completed 表示任务完成,可使用 /content 下载。
failed、error、cancelled 表示任务失败,读取响应里的错误字段。
刚创建后如果上游暂时查不到任务,等待 15-30 秒后再查,不要立即重复创建。
中文编码
中文提示词乱码通常不是模型参数问题,而是请求体编码或请求头不一致。按下面两点处理。
- 请求头固定使用
Content-Type: application/json; charset=utf-8。 - Windows PowerShell 中优先把 JSON 写成 UTF-8 文件,再用
curl.exe --data-binary @payload.json提交。 - 不要用浏览器前端直连真实 key。中文请求可以在后端统一编码、记录和重试。
计费
当前 video-v1 按每次创建视频任务固定 100 USD 的计费标准处理。业务侧应在创建任务前确认用户余额,避免用户重复点击造成多次创建。
验证结果
本页参数已在 2026-07-06 使用真实 key 对 https://api.zgbhwzj.cn/v1/videos 做创建、轮询和下载验证。创建返回 HTTP 200,最终状态为 completed,下载文件为有效 MP4。
| 检查项 | 结果 |
|---|---|
model |
video-v1 已通过 |
duration |
5、10、15 已通过 |
seconds |
"5"、"10"、"15" 已通过 |
size |
3840x2160 已通过 |
| 请求编码 | application/json; charset=utf-8 已通过 |
| 状态查询 | GET /videos/{task_id} 已通过,最终 progress=100 |
| 视频下载 | GET /videos/{task_id}/content 已通过,样例文件 sample-video-v1.mp4 |
| 文生视频入口 | POST /v1/videos JSON 已通过,5、10、15 秒均可生成并下载。 |
| 时长范围 | 4-15 秒真实测试中,只有 5、10、15 秒成功;其他秒数创建阶段返回 HTTP 400,上游提示“视频时长必须是5、10、15秒之一”。 |
| 图生视频入口 | POST /v1/videos multipart 已通过。文件字段使用 file,时长字段使用 seconds。 |
| 图生视频时长 | 5、10、15 秒均已完成并下载 MP4;其他 4-15 秒内的时长创建阶段返回 HTTP 400。 |
| 图生视频限制 | multipart 请求不要传 duration;外部 /v1/media/upload 和 /v1/media/generate 当前返回 HTTP 404。 |