# 视频生成（OpenAI 兼容）
> 用 OpenAI 风格的结构提交视频任务
> 字段由网关映射到上游原生格式
> 适合已有 OpenAI 调用链的项目快速接入
`POST /v1/video/generations`
## 认证
- `Authorization` (string / 必填) — 所有接口均使用 Bearer Token 进行认证。 Seedance 系列的接口需要在 [ark 站](https://ark.oairoute.com/) 单独获取 Key，与 api 站的 Key 不通用。 请求时在请求头中添加： ```http Authorization: Bearer YOUR_ARK_KEY ```
## 请求结构
`prompt`、`image`、`duration`、`size` 等字段全部平铺在请求体顶层，没有 `content` 数组，也没有 `metadata` 包装。图片放进 `image` 单字段，固定按首帧处理。其余参数（`fps`、`seed`、`response_format`、`callback_url`）同样在顶层。
与豆包原生的差异见下方「与原生结构的差异」。
## 支持的场景
| 场景 | 字段组合 |
|---|---|
| 文生视频 | `prompt` |
| 图生视频·首帧 | `prompt` + `image` |
| 图生视频·首尾帧 | 改用豆包原生通道，见[视频生成（豆包原生）](doubao.html) |
| 全模态参考 | 改用豆包原生通道，见[视频生成（豆包原生）](doubao.html) |
| 编辑视频 | 改用豆包原生通道，见[视频生成（豆包原生）](doubao.html) |
| 延长视频 | 改用豆包原生通道，见[视频生成（豆包原生）](doubao.html) |
OpenAI 兼容结构只有 `prompt` 与 `image` 两个创作字段，能表达的场景比豆包原生少。需要首尾帧、参考图、视频编辑或延长时，用豆包原生通道提交，任务查询仍然走同一个任务状态接口。
## 请求参数
> **Note:** 提交后拿到的只是任务 ID 与状态。轮询结果用任务状态接口，见[获取任务状态](../tasks/status.html)；需要鉴权下载成片时，走下载接口，支持 Bearer Token 与 Dashboard 登录 Cookie 两种鉴权。
- `model` (string / 必填) — 视频模型 ID。
- `prompt` (string / 必填) — 视频描述。写清主体动作、镜头运动与环境氛围。
- `image` (string / 可选) — 首帧图片地址，支持 HTTP(S) 与 Base64 data URI。传入后进入图生视频模式。
- `duration` (integer / 可选) — 时长，单位秒。不传时由模型按默认值处理。
- `size` (string / 可选) — 输出画幅，写成 `1280x720` 这类像素值，或直接用比例字符串。
- `fps` (integer / 可选) — 帧率。部分模型固定帧率，传了会被忽略。
- `seed` (integer / 可选) — 随机种子。
- `response_format` (string / 可选) — `url` 返回可访问地址，固定为默认值。
- `callback_url` (string / 可选) — 完成回调地址。不传则用任务状态接口轮询。
## 响应
- `id` (string) — 任务 ID。
- `object` (string) — 固定为 `video.generation`。
- `status` (string) — 任务状态。提交后为 `queued`。
- `created` (integer) — 创建时间戳。
- `model` (string) — 实际使用的模型。
> **Note:** 
> 这是同步受理、异步出片的接口。返回值里只有任务状态，没有视频本身。要拿成片，用返回的 `id` 去任务状态接口轮询，或配置 `callback_url`。
## 错误码
| HTTP | 含义 |
|---|---|
| 400 | 参数错误，type 为 invalid_request_error |
| 401 | Token 缺失或无效，type 为 authentication_error |
| 402 | 余额不足，type 为 permission_error |
| 429 | 触发限流 |
更多状态码与重试建议见[错误码与限流](../../support/errors.html)，常见报错的排查步骤见[常见问题](../../support/faq.html)。
## 与原生结构的差异
| 原生 | OpenAI 兼容 | 说明 |
|---|---|---|
| `content[].type = text` | `prompt` 字符串 | 文本被包装成 content 条目 |
| `content[].image_url` + role | `image` 单字段 | 固定按首帧处理 |
| `ratio` | `size` | 比例或像素都可 |
| `callback_url` | `callback_url` | 一致 |
## 用 multipart 上传本地文件
JSON 请求体不能直接携带二进制文件。首帧图如果要本地直传，改用 `multipart/form-data`：
```bash
curl --request POST   --url 'https://ark.oairoute.com/v1/video/generations'   --header 'Authorization: Bearer YOUR_ARK_KEY'   --form 'model=seedance-2.5'   --form 'prompt=海面日落，镜头缓慢前推'   --form 'image=@first-frame.png'   --form 'duration=5'   --form 'size=1280x720'
```
两个容易踩的坑：
- **数字要写成字符串。** multipart 里没有类型概念，`duration=5` 与 `duration="5"` 传输上一样，但部分客户端会把 `5` 序列化成 `5.0`，被判为非法整数
- **`image` 与 `image_url` 互斥。** 同时出现返回 400
multipart 的请求体比 JSON 大，10MB 以上的图片在慢网络下容易超时，建议改用先上传再引用。
## metadata 透传容器
`metadata` 是自由格式对象，服务端不校验内部键名，只做两件事：原样保存、在任务查询时原样返回。
```json
{
  "model": "seedance-2.5",
  "prompt": "海面日落",
  "metadata": {
    "order_id": "A20261030-001",
    "user_id": "u_88213"
  }
}
```
序列化后不超过 4KB，超限返回 400。
| 适合放 | 不适合放 |
|---|---|
| 订单号、工单号 | 密钥、Token |
| 用户标识 | 身份证号、银行卡号 |
| 批次编号 | 大段提示词 |
| 调用来源标记 | 二进制数据 |
`metadata` 不进入模型，写进去的「让画面更亮一点」不会影响生成结果。需要影响生成的内容一律放 `prompt`。
> **Note:** 
> `metadata` 会随任务持久化，也会出现在回调里。写进去的东西等于长期存在平台侧，敏感信息不要放这里。
## 支持的模型列表
以下视频模型均可通过本接口提交任务，清单只列各厂商最新一代，实际可用范围以你的账号分组为准：
:::models video
各型号的能力差异：
| 项目 | 2.0 家族 | 2.5 |
|---|---|---|
| 最长时长 | 15 秒 | 30 秒 |
| 分辨率 | 480p / 720p / 1080p / 4k | 480p / 720p / 1080p |
2.0 家族里 fast 与 mini 只支持 480p 与 720p，4K 仅 2.0 标准版可用。
> **Note:** 完整模型目录（含时长上限、音画能力）可读取 `GET https://ark.oairoute.com/api/pricing`。
## 使用示例
### 文生视频
OpenAI 兼容结构把文本放进 `prompt`，图片放进 `image`，比原生通道少一层 content 数组包装。提交返回 `task_id`，再轮询任务状态接口。
### 图生视频
`image` 固定按首帧处理。需要控制末帧请改用豆包原生通道。
### 指定时长与帧率
`duration` 单位是秒，`fps` 决定流畅度。时长越长、帧率越高，耗时和费用都会上去。
### 回调通知
大批量任务不要靠轮询，传 `callback_url`，任务完成时平台会主动 POST 结果过来。
**文生视频{Text to video}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "海面日落，镜头缓慢前推",
  "seconds": "5",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p"
  }
}'
```
**文生视频{Text to video}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "海面日落，镜头缓慢前推",
  "seconds": "5",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p"
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**文生视频{Text to video}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "海面日落，镜头缓慢前推",
  "seconds": "5",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p"
  }
}),
});
console.log(await res.json());
```
**首帧{First frame}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "女孩睁开眼，温柔地看向镜头",
  "image": "https://example.com/first.png",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p"
  }
}'
```
**首帧{First frame}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "女孩睁开眼，温柔地看向镜头",
  "image": "https://example.com/first.png",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p"
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**首帧{First frame}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "女孩睁开眼，温柔地看向镜头",
  "image": "https://example.com/first.png",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p"
  }
}),
});
console.log(await res.json());
```
**首尾帧{First and last frame}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "让人物从站立缓缓转身",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/first.png"
        },
        "role": "first_frame"
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/last.png"
        },
        "role": "last_frame"
      }
    ]
  }
}'
```
**首尾帧{First and last frame}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "让人物从站立缓缓转身",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/first.png"
        },
        "role": "first_frame"
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/last.png"
        },
        "role": "last_frame"
      }
    ]
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**首尾帧{First and last frame}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "让人物从站立缓缓转身",
  "seconds": "5",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/first.png"
        },
        "role": "first_frame"
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/last.png"
        },
        "role": "last_frame"
      }
    ]
  }
}),
});
console.log(await res.json());
```
**图片参考{Image reference}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "@图片1 的人物在海边行走，镜头跟随",
  "seconds": "8",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/ref.png"
        },
        "role": "reference_image"
      }
    ]
  }
}'
```
**图片参考{Image reference}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "@图片1 的人物在海边行走，镜头跟随",
  "seconds": "8",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/ref.png"
        },
        "role": "reference_image"
      }
    ]
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**图片参考{Image reference}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "@图片1 的人物在海边行走，镜头跟随",
  "seconds": "8",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/ref.png"
        },
        "role": "reference_image"
      }
    ]
  }
}),
});
console.log(await res.json());
```
**视频参考{Video reference}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "参考 @视频1 的运镜节奏，生成一段城市夜景",
  "seconds": "11",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "omni_reference_task_type": "reference",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/ref.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}'
```
**视频参考{Video reference}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "参考 @视频1 的运镜节奏，生成一段城市夜景",
  "seconds": "11",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "omni_reference_task_type": "reference",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/ref.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**视频参考{Video reference}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "参考 @视频1 的运镜节奏，生成一段城市夜景",
  "seconds": "11",
  "metadata": {
    "ratio": "16:9",
    "resolution": "1080p",
    "omni_reference_task_type": "reference",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/ref.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}),
});
console.log(await res.json());
```
**视频编辑{Video editing}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "视频编辑：删除 @视频1 中的行人，只保留主角",
  "seconds": "-1",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "edit",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}'
```
**视频编辑{Video editing}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "视频编辑：删除 @视频1 中的行人，只保留主角",
  "seconds": "-1",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "edit",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**视频编辑{Video editing}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "视频编辑：删除 @视频1 中的行人，只保留主角",
  "seconds": "-1",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "edit",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}),
});
console.log(await res.json());
```
**延长视频{Extend video}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_ARK_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "seedance-2.5",
  "prompt": "延长 @视频1，镜头继续向前推进，进入室内",
  "seconds": "11",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "extend",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}'
```
**延长视频{Extend video}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {
    "Authorization": "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
}
payload = {
  "model": "seedance-2.5",
  "prompt": "延长 @视频1，镜头继续向前推进，进入室内",
  "seconds": "11",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "extend",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**延长视频{Extend video}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_ARK_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "延长 @视频1，镜头继续向前推进，进入室内",
  "seconds": "11",
  "metadata": {
    "ratio": "adaptive",
    "resolution": "1080p",
    "omni_reference_task_type": "extend",
    "output_format": "mov",
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/source.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}),
});
console.log(await res.json());
```
**200 文生视频{Text to video}**
```
{
  "id": "task_abc123def456",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
**200 首帧{First frame}**
```
{
  "id": "task_abc123def457",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
**200 首尾帧{First and last frame}**
```
{
  "id": "task_abc123def458",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
**200 图片参考{Image reference}**
```
{
  "id": "task_abc123def459",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "8",
  "created_at": 1763088289
}
```
**200 视频参考{Video reference}**
```
{
  "id": "task_abc123def460",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "11",
  "created_at": 1763088289
}
```
**200 视频编辑{Video editing}**
```
{
  "id": "task_abc123def461",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "-1",
  "created_at": 1763088289
}
```
**200 延长视频{Extend video}**
```
{
  "id": "task_abc123def462",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "11",
  "created_at": 1763088289
}
```
**文生视频 示例{Text to video example}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_OAIRoute_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "seedance-2.5",
    "prompt": "城市夜景延时，车流拉出光轨",
    "duration": 5,
    "size": "1280x720"
  }'
```
**文生视频 示例{Text to video example}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {"Authorization": "Bearer YOUR_OAIRoute_KEY"}
payload = {
    "model": "seedance-2.5",
    "prompt": "城市夜景延时，车流拉出光轨",
    "duration": 5,
    "size": "1280x720"
  }
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**文生视频 示例{Text to video example}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_OAIRoute_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "seedance-2.5",
    "prompt": "城市夜景延时，车流拉出光轨",
    "duration": 5,
    "size": "1280x720"
  }),
});
console.log(await res.json());
```
**图生视频{Image to video}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_OAIRoute_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "seedance-2.5",
    "prompt": "镜头绕主体旋转一周",
    "image": "https://example.com/product.png",
    "duration": 5
  }'
```
**图生视频{Image to video}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {"Authorization": "Bearer YOUR_OAIRoute_KEY"}
payload = {
    "model": "seedance-2.5",
    "prompt": "镜头绕主体旋转一周",
    "image": "https://example.com/product.png",
    "duration": 5
  }
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**图生视频{Image to video}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_OAIRoute_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "seedance-2.5",
    "prompt": "镜头绕主体旋转一周",
    "image": "https://example.com/product.png",
    "duration": 5
  }),
});
console.log(await res.json());
```
**指定时长与帧率{Set duration and frame rate}::cURL**
```
curl --request POST \
  --url 'https://ark.oairoute.com/v1/video/generations' \
  --header 'Authorization: Bearer YOUR_OAIRoute_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "seedance-2.5",
    "prompt": "手写毛笔字在宣纸上逐渐显现",
    "duration": 8,
    "fps": 24,
    "size": "1280x720"
  }'
```
**指定时长与帧率{Set duration and frame rate}::Python**
```
import requests
url = "https://ark.oairoute.com/v1/video/generations"
headers = {"Authorization": "Bearer YOUR_OAIRoute_KEY"}
payload = {
    "model": "seedance-2.5",
    "prompt": "手写毛笔字在宣纸上逐渐显现",
    "duration": 8,
    "fps": 24,
    "size": "1280x720"
  }
res = requests.post(url, headers=headers, json=payload)
print(res.json())
```
**指定时长与帧率{Set duration and frame rate}::JavaScript**
```
const res = await fetch("https://ark.oairoute.com/v1/video/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_OAIRoute_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "seedance-2.5",
    "prompt": "手写毛笔字在宣纸上逐渐显现",
    "duration": 8,
    "fps": 24,
    "size": "1280x720"
  }),
});
console.log(await res.json());
```
**200 文生视频 示例{Text to video example}**
```
{
  "id": "task_abc123def456",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
**200 图生视频{Image to video}**
```
{
  "id": "task_abc123def456",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
**200 指定时长与帧率{Set duration and frame rate}**
```
{
  "id": "task_abc123def456",
  "object": "video",
  "model": "seedance-2.5",
  "status": "queued",
  "progress": 0,
  "seconds": "5",
  "created_at": 1763088289
}
```
