视频生成
Vidu Q3 系列
生数科技 Vidu Q3 — 参考生 / 文生 / 图生,智能镜头切换,1-16 秒任意整数
POST
/
v1
/
tasks
Vidu Q3 系列
curl --request POST \
--url https://www.qingbo.dev/v1/tasks \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"resolution": "<string>",
"duration": 123,
"image_urls": [
"<string>"
],
"callback_url": "<string>",
"callback_events": [
"<string>"
]
}
'import requests
url = "https://www.qingbo.dev/v1/tasks"
payload = {
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"resolution": "<string>",
"duration": 123,
"image_urls": ["<string>"],
"callback_url": "<string>",
"callback_events": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
action: '<string>',
prompt: '<string>',
resolution: '<string>',
duration: 123,
image_urls: ['<string>'],
callback_url: '<string>',
callback_events: ['<string>']
})
};
fetch('https://www.qingbo.dev/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.qingbo.dev/v1/tasks"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"image_urls\": [\n \"<string>\"\n ],\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.qingbo.dev/v1/tasks")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"image_urls\": [\n \"<string>\"\n ],\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ]\n}")
.asString();{
"task_id": "task-wave1775285160b950328499",
"model": "vidu-q3",
"action": "generate",
"status": "queued",
"created_at": 1775285160040,
"progress": 0
}
生数科技 Vidu Q3 系列视频生成模型,参考生视频(R2V) 是看家本事 — 接受公网图作为主体 / 风格参考,prompt 负责描述动作与镜头,人物外观由参考图决定,适合 角色一致性 / 风格延续 / 多机位切换 三类场景。
两档可选:
实际费用 = 单价 / 秒 ×
提交后用
vidu-q3— 标准档,日常默认首选,镜头切换更聪明,540p / 720p / 1080p,1-16 秒。比例由参考图决定,不接受aspect_ratio参数vidu-q3-mix— 混剪档,支持多图混剪生成连贯视频,540p / 720p / 1080p,1-16 秒,支持aspect_ratio,适合短剧分镜重组、广告素材二创
定价
| 模型 | 540p | 720p | 1080p |
|---|---|---|---|
vidu-q3 | $0.045 / 秒 | $0.09 / 秒 | $0.1125 / 秒 |
vidu-q3-mix | $0.1125 / 秒 | $0.1125 / 秒 | $0.135 / 秒 |
duration。例:vidu-q3 1080p 5 秒 = $0.1125 × 5 = $0.5625。
调用示例
curl -X POST https://www.qingbo.dev/v1/tasks \
-H "Authorization: Bearer $WAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q3",
"prompt": "黄昏的海滩,女孩迎着夕阳奔跑,长发飞扬,电影感光影",
"duration": 5,
"resolution": "1080p"
}'
curl -X POST https://www.qingbo.dev/v1/tasks \
-H "Authorization: Bearer $WAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q3",
"prompt": "人物缓缓转身,镜头推近",
"image_urls": ["https://cdn.example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p"
}'
curl -X POST https://www.qingbo.dev/v1/tasks \
-H "Authorization: Bearer $WAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q3",
"prompt": "保持角色形象,在森林中奔跑,镜头跟随",
"image_urls": [
"https://cdn.example.com/char-1.jpg",
"https://cdn.example.com/style-ref.jpg"
],
"duration": 6,
"resolution": "1080p"
}'
curl -X POST https://www.qingbo.dev/v1/tasks \
-H "Authorization: Bearer $WAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q3-mix",
"prompt": "镜头在多个场景间平滑切换,氛围连贯",
"image_urls": [
"https://cdn.example.com/scene-1.jpg",
"https://cdn.example.com/scene-2.jpg",
"https://cdn.example.com/scene-3.jpg"
],
"duration": 8,
"resolution": "1080p",
"aspect_ratio": "16:9"
}'
{
"task_id": "task-wave1775285160b950328499",
"model": "vidu-q3",
"action": "generate",
"status": "queued",
"created_at": 1775285160040,
"progress": 0
}
GET /v1/tasks/{task_id} 轮询状态,详见 任务系统。
可用模型
| 模型 ID | 分辨率 | 时长(秒) | Actions | aspect_ratio | 备注 |
|---|---|---|---|---|---|
vidu-q3 | 540p / 720p / 1080p | 1-16 | generate | 不支持 | 标准档,日常首选,比例由参考图决定 |
vidu-q3-mix | 540p / 720p / 1080p | 1-16 | generate | 支持 | 混剪档,多素材连贯生成 |
通用参数
string
必填
模型 ID,可选值:
vidu-q3vidu-q3-mix
string
默认值:"generate"
操作类型,固定为
generate。传入 image_urls 即自动走 参考生 / 图生视频,否则为文生视频string
必填
视频描述文本,建议描述 动作 / 镜头 / 氛围,人物外观由
image_urls 决定string
默认值:"720p"
输出分辨率,可选值:
540p720p1080p
integer
默认值:"5"
视频时长(秒),范围 1-16 任意整数
string[]
参考图片 URL 数组,作为主体 / 风格参考(R2V),或作为首帧 / 混剪素材
string[]
订阅的回调事件,默认订阅终态(
succeeded / failed / cancelled)模型特定参数
- vidu-q3
- vidu-q3-mix
资源限制
| 项目 | 限制 |
|---|---|
参考图片(image_urls) | JPG / PNG / WEBP,需公网可下载链接 |
| Prompt 长度 | 建议 ≤ 2000 字符 |
| 视频时长 | 1-16 秒任意整数 |
| 输出 | MP4,链接 24 小时有效 |
相关文档
⌘I
Vidu Q3 系列
curl --request POST \
--url https://www.qingbo.dev/v1/tasks \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"resolution": "<string>",
"duration": 123,
"image_urls": [
"<string>"
],
"callback_url": "<string>",
"callback_events": [
"<string>"
]
}
'import requests
url = "https://www.qingbo.dev/v1/tasks"
payload = {
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"resolution": "<string>",
"duration": 123,
"image_urls": ["<string>"],
"callback_url": "<string>",
"callback_events": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
action: '<string>',
prompt: '<string>',
resolution: '<string>',
duration: 123,
image_urls: ['<string>'],
callback_url: '<string>',
callback_events: ['<string>']
})
};
fetch('https://www.qingbo.dev/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.qingbo.dev/v1/tasks"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"image_urls\": [\n \"<string>\"\n ],\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.qingbo.dev/v1/tasks")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"image_urls\": [\n \"<string>\"\n ],\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ]\n}")
.asString();{
"task_id": "task-wave1775285160b950328499",
"model": "vidu-q3",
"action": "generate",
"status": "queued",
"created_at": 1775285160040,
"progress": 0
}