Appearance
Seedance2.0 OpenAI 兼容视频接口文档
支持的模型
sec-seedance-2.0-480psec-seedance-2.0-480p-fastsec-seedance-2.0-480p-tjsec-seedance-2.0-480p-fast-tjsec-seedance-2.0-720psec-seedance-2.0-720p-fastsec-seedance-2.0-720p-tjsec-seedance-2.0-720p-fast-tjsec-seedance-2.0-1080p-tjsec-seedance-2.0-1080psec-seedance-2.0-4k-tjsec-seedance-2.0-4kseedance-2.0-720p-tjseedance-2.0-720p-fast-tjseedance-2.0-720pseedance-2.0-720p-fastsec-seedance-2.5-480psec-seedance-2.5-720p
BaseUrl:
baseUrl
https://apiok.cc重要说明
该接口面向需要接入 OpenAI / Sora 风格视频协议的平台,例如 NewAPI 等聚合平台。接口使用平台 API Key 鉴权。
/v1/videos 是异步生成入口:传入视频模型时创建视频任务,传入图片模型时创建图片任务。
通用说明
所有接口均需要通过请求头传递 API Key:
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| Authorization | Header | String | Y | 固定格式:Bearer {apiKey} |
- API Key 与平台账号绑定,仅能访问该账号下的任务和资源。
- 模型、线路、价格和能力会随运营策略调整
- OpenAI 兼容视频接口路径为
/v1/videos。 - OpenAI 兼容模型列表接口路径为
/v1/models。 - 图片任务完成后的图片 URL 同样放在
metadata.url。
推荐调用流程
- 调用
GET BaseUrl/v1/models获取当前可用模型列表。 - 从模型列表中选择选择合适的模型原样传入
model。 - 调用
POST BaseUrl/v1/videos创建生成任务;传视频模型生成视频,传图片模型生成图片。 - 使用创建接口返回的
id调用GET BaseUrl/v1/videos/{video_id}轮询任务状态。 - 任务
status=completed后,可读取metadata.url,或调用GET BaseUrl/v1/videos/{video_id}/content获取 302 下载跳转。
任务状态
| 状态值 | 说明 |
|---|---|
| queued | 已创建,等待执行 |
| in_progress | 执行中 |
| completed | 任务成功完成 |
| failed | 任务执行失败 |
错误响应
接口失败时返回 OpenAI / NewAPI 兼容错误结构:
json
{
"code": "错误代码",
"message": "错误原因",
"statusCode": "状态码"
}- 常见错误码:
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | invalid_request | 请求体缺失或字段格式不合法 |
| 400 | model_ambiguous | model 未使用模型列表返回的完整 ID,或无法匹配当前可用模型 |
| 400 | invalid_metadata | metadata 字段格式不合法,或传入不支持的扩展字段 |
| 400 | unsupported_parameter | 当前参数值暂不支持,例如 n 不为 1、variant 不为 video 或 image |
| 400 | video_not_completed | 内容下载接口请求的任务尚未完成 |
| 400 | content_not_available | 任务已完成但内容地址不可用 |
| 401 | invalid_api_key | API Key 缺失、格式错误、已禁用或不存在 |
| 404 | not_found | 任务不存在,或不属于当前 API Key 对应账号 |
| 500 | internal_error | 服务内部异常 |
获取模型列表
作用:获取当前可用于兼容接口的模型列表,包含图片模型和视频模型。 提交方式:GET BaseUrl/v1/models 编码:UTF-8
输入参数
无。
返回参数
HTTP 200:
| 属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| object | String | Y | 固定为 list |
| data | List<ModelItem> | Y | 当前可用模型列表 |
ModelItem
| 属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | String | Y | 创建任务时使用的模型 ID,必须原样传入 model |
| object | String | Y | 固定为 model |
| created | Long | Y | 创建时间戳;暂无创建时间时为 0 |
| owned_by | String | Y | 模型归属方 |
返回示例
json
{
"object": "list",
"data": [
{
"id": "12:example-video-model",
"object": "model",
"created": 0,
"owned_by": "aistarslab"
}
]
}创建生成任务
作用:创建异步生成任务,并返回 OpenAI 风格视频对象。传入视频模型时生成视频,传入图片模型时生成图片。 提交方式:POST BaseUrl/v1/videos 编码:UTF-8 Content-Type:application/json
输入参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | String | Y | 模型列表接口返回的 data[].id,必须原样传入 |
| prompt | String | Y | 生成提示词 |
| image | String | N | 单张参考图片 URL;会作为参考图片列表的第一张 |
| seconds | String | N | 视频任务时长,单位:秒;优先级高于 duration;图片任务忽略 |
| duration | Integer | N | 视频任务时长,单位:秒;未传 seconds 时生效;图片任务忽略 |
| size | String | N | 画幅比例,如 16:9、9:16、1:1;图片任务直接使用该字段作为图片比例,未传时自动选择默认比例 |
| width | Integer | N | 期望宽度;未传 size 和 metadata.size 时会与 height 一起换算画幅比例 |
| height | Integer | N | 期望高度;未传 size 和 metadata.size 时会与 width 一起换算画幅比例 |
| n | Integer | N | 生成数量;当前仅支持 1 |
| metadata | Object | N | 平台扩展参数 |
metadata 扩展参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| resolution | String | N | 分辨率或质量档位,如 720p、1080p、1K;图片任务未传时自动选择模型默认值 |
| size | String | N | 画面比例,如 16:9、9:16;优先级高于 width / height |
| mode_type | String | N | 视频生成模式:text2video、image2video、frames2video;图片任务忽略 |
| images | List<String> | N | 参考图片 URL 列表;会追加在顶层 image 之后 |
| videos | List<String> | N | 视频任务参考视频 URL 列表;图片任务忽略 |
| audios | List<String> | N | 视频任务参考音频 URL 列表;图片任务忽略 |
mode_type 规则
| 模式 | 说明 | 素材要求 |
|---|---|---|
| text2video | 文生视频 | 不允许传入参考图片 |
| image2video | 全能参考 | 至少传入 1 张参考图片;可按线路能力组合参考视频、参考音频 |
| frames2video | 首尾帧生视频 | 必须正好传入 2 张参考图片,顺序为首帧、尾帧 |
mode_type必须被所选模型和线路支持。- 未显式传入
mode_type时:存在参考图片则按image2video(全能参考)处理,否则按text2video处理。 - 部分线路对参考图片、视频、音频数量或组合方式有额外限制,具体以创建接口实时校验为准。
请求示例
json
{
"model": "12:example-video-model",
"prompt": "海边日落,镜头缓慢向前推进",
"seconds": "10",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "720p",
"mode_type": "image2video",
"images": [
"https://example.com/reference.jpg"
],
"audios": [
"https://example.com/music.mp3"
]
}
}图片模型请求示例
json
{
"model": "21:example-image-model",
"prompt": "一只白色陶瓷杯放在木桌上,柔和自然光,产品摄影",
"size": "1:1",
"n": 1,
"metadata": {
"resolution": "1K"
}
}返回参数
HTTP 200:
| 属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | String | Y | 任务 ID,用于查询任务和获取内容 |
| task_id | String | Y | 任务 ID,用于查询任务和获取内容 |
| object | String | Y | 固定为 video |
| model | String | N | 创建任务时使用的模型 |
| status | String | Y | 任务状态,见“任务状态” |
| progress | Integer | N | 任务进度,范围 0-100 |
| seconds | String | N | 视频时长,单位:秒;图片任务为空 |
| size | String | N | 视频或图片画幅比例 |
| created_at | Long | N | 创建时间,Unix 秒 |
| completed_at | Long | N | 完成时间,Unix 秒;未完成时为空 |
| error | Object | N | 任务失败时的错误信息 |
返回示例
json
{
"id": "task_xxxxx",
"object": "video",
"model": "example-video-model",
"status": "queued",
"progress": 0,
"seconds": "10",
"size": "16:9",
"created_at": 1781539200
}查询生成任务
作用:查询生成任务状态和结果。 提交方式:GET BaseUrl/v1/videos/{task_id} 编码:UTF-8
输入参数
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| task_id | Path | String | Y | 创建接口返回的 id |
返回参数
HTTP 200:
| 属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | String | Y | 任务 ID,用于查询任务和获取内容 |
| model | String | N | 创建任务时使用的模型 |
| status | String | Y | 任务状态,见“任务状态” |
| progress | Integer | N | 任务进度,范围 0-100 |
| created_at | Long | N | 创建时间,Unix 秒 |
| completed_at | Long | N | 完成时间,Unix 秒;未完成时为空 |
| error | Object | N | 任务失败时的错误信息 |
返回示例:处理中
json
{
"id": "task_xxxxx",
"object": "video",
"model": "example-video-model",
"status": "in_progress",
"progress": 45,
"seconds": "10",
"size": "16:9",
"created_at": 1781539200
}返回示例:已完成
json
{
"id": "task_xxxxx",
"object": "video",
"model": "example-video-model",
"status": "completed",
"progress": 100,
"seconds": "10",
"size": "16:9",
"created_at": 1781539200,
"completed_at": 1781539260,
"metadata": {
"result_url": "https://example.com/result.mp4"
}
}返回示例:失败
json
{
"id": "task_xxxxx",
"object": "video",
"model": "example-video-model",
"status": "failed",
"progress": 100,
"seconds": "10",
"size": "16:9",
"created_at": 1781539200,
"completed_at": 1781539260,
"error": {
"code": "task_failed",
"message": "生成失败,请检查文案或素材"
}
}获取生成内容
作用:获取生成完成后的内容地址。接口返回 302 重定向,客户端应跟随 Location 下载或播放真实文件。 提交方式:GET BaseUrl/v1/videos/{video_id}/content 编码:UTF-8
输入参数
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| task_id | Path | String | Y | 创建接口返回的 id |
成功响应
返回视频数据流
请求示例
bash
curl -L 'https://apiok.cc/v1/videos/task_xxxxx/content' \
-H 'Authorization: Bearer sk-xxxxxx'