- 异步处理模式,返回任务 ID 用于后续查询
- 统一入口:文生视频 / 图生视频 / 视频续写 / 草稿两段式
- 输出 H.264 + AAC,自带同步音频,时长 5~20 秒
- 分辨率 hd / fhd,支持 7 种宽高比
请求示例
bash
curl --request POST \
--url https://api.openveer.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-3-video",
"prompt": "一只橘猫跳上洒满阳光的木桌,尾巴扫过一只玻璃杯,杯子晃了晃没有倒。电影感,浅景深。",
"duration": 5,
"resolution": "hd",
"aspect_ratio": "16:9"
}'
```python
import requests
url = "https://api.openveer.com/v1/videos/generations"
payload = {
"model": "flux-3-video",
"prompt": "一只橘猫跳上洒满阳光的木桌,尾巴扫过一只玻璃杯,杯子晃了晃没有倒。电影感,浅景深。",
"duration": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
}
headers = {
"Authorization": "Bearer
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
```
```javascript
const url = "https://api.openveer.com/v1/videos/generations";
const payload = {
model: "flux-3-video",
prompt: "一只橘猫跳上洒满阳光的木桌,尾巴扫过一只玻璃杯,杯子晃了晃没有倒。电影感,浅景深。",
duration: 5,
resolution: "hd",
aspect_ratio: "16:9",
};
const headers = {
Authorization: "Bearer
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
```
```go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.openveer.com/v1/videos/generations"
payload := map[string]interface{}{
"model": "flux-3-video",
"prompt": "一只橘猫跳上洒满阳光的木桌,尾巴扫过一只玻璃杯",
"duration": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
```
响应示例
json
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
json
{
"error": {
"code": 400,
"message": "请求参数无效",
"type": "invalid_request_error"
}
}
json
{
"error": {
"code": 401,
"message": "身份验证失败,请检查您的API密钥",
"type": "authentication_error"
}
}
json
{
"error": {
"code": 402,
"message": "账户余额不足,请充值后再试",
"type": "payment_required"
}
}
json
{
"error": {
"code": 422,
"message": "参数互斥或取值非法",
"type": "invalid_request_error"
}
}
json
{
"error": {
"code": 429,
"message": "请求过于频繁,请稍后再试",
"type": "rate_limit_error"
}
}
认证
Authorization string生成模式
flux-3-video 为统一入口:按传参自动判定模式,也可 mode 显式指定。
| 模式 | 触发条件 | 说明 |
|---|---|---|
| 文生视频(t2v) | 只传 prompt |
纯文本驱动 |
| 图生视频(i2v) | 传 image_urls |
关键帧控制,见下方 |
| 视频续写(v2v) | 传 video_url / video_urls |
单价更高;同时有图和视频时按续写处理 |
| 草稿 → 正片 | draft:true 或 draft_from_task_id |
先低价预览,再全价出片 |
mode 可选值:t2v / i2v / v2v / draft_enhance,或官方拼写 text-to-video / image-continuation / video-continuation。显式 mode 优先级最高。
图生视频关键帧语义
image_urls 中图片的顺序即语义,不要排序或去重:
| 张数 | 含义 |
|---|---|
| 1 张 | 起始帧 |
| 2 张 | 第一张起始、第二张结束帧 |
| 3\~10 张 | 首张起始、末张结束,中间关键帧均匀分布(建议显式指定 duration) |
请求参数
model stringprompt stringduration integerresolution stringaspect_ratio stringimage_urls string[]video_url stringvideo_urls string[]audio booleandraft booleandraft_from_task_id stringsafety_tolerance integermode string草稿模式
视频生成较贵时,可用两段式试稿:
第一段 draft:true → 约 1/3 价出低质预览
第二段 draft_from_task_id → 满意后再按全价出正片(画面与草稿一致)
出草稿
{
"model": "flux-3-video",
"prompt": "一只橘猫跳上洒满阳光的木桌",
"duration": 5,
"draft": true
}
草稿转正片
{
"model": "flux-3-video",
"draft_from_task_id": "task_01K_DRAFT...",
"resolution": "fhd"
}
草稿转正片会使用草稿保存的原始参数(模式 / 提示词 / 种子 / 素材)进行全质量渲染。视频续写草稿转正片按续写正片单价计费。
请求示例
文生视频(竖屏)
{
"model": "flux-3-video",
"prompt": "雨夜的东京街头,霓虹倒映在积水里。一个人撑伞走过。",
"duration": 8,
"resolution": "fhd",
"aspect_ratio": "9:16"
}
图生视频(首尾帧)
{
"model": "flux-3-video",
"prompt": "镜头缓缓推近,花朵从含苞到盛开",
"image_urls": [
"https://example.com/bud.jpg",
"https://example.com/bloom.jpg"
],
"duration": 5
}
视频续写
{
"model": "flux-3-video",
"prompt": "镜头继续跟随,主角转身走向远处的灯塔",
"video_url": "https://example.com/clip.mp4",
"duration": 5
}
无声视频
{
"model": "flux-3-video",
"prompt": "...",
"audio": false
}
参数约束
| 限制 | 值 |
|---|---|
| 时长 | 5\~20 秒整数(不支持 auto;21 会被拒绝) |
| 关键帧 | 1\~10 张 |
| 分辨率 | 仅 hd / fhd;草稿仅 hd |
| 比例 | 仅 7 种或 auto |
safety_tolerance |
0\~4 |
常见提交错误(通常不扣费)
| 场景 | 说明 |
|---|---|
缺少 prompt |
非转正片场景必填 |
非法 resolution / aspect_ratio / duration |
取值不在支持范围 |
| 关键帧 > 10 | 超出上限 |
显式 i2v 无图 / v2v 无视频 |
模式与素材不匹配 |
draft:true + fhd |
草稿只能 hd |
draft_from_task_id 无效 / 非草稿 / 未成功 |
转正片前置条件不满足 |
| 转正片时改 prompt / duration 等 | 仅允许改 resolution |
draft 与 draft_from_task_id 同时传 |
互斥 |
内容审核拒绝会进入 failed 终态并全额退款。
能力覆盖
| 能力 | 状态 |
|---|---|
| t2v / i2v / v2v | ✅ 自动判定或 mode 指定 |
| 草稿 / 草稿转正片 | ✅ draft / draft_from_task_id |
| 同步音频 | ✅ 默认开,audio:false 关(不降价) |
时间点关键帧 [秒数, 图片] |
❌ 目前仅均匀分布关键帧数组 |
duration: "auto" |
❌ 不支持 |
Response
code integerdata arraytask_id string