视频生成

POST /v1/videos。提交成功只返回 id,再查询,completed 后下载。

Base URLhttps://api.oiovideo.com鉴权Authorization: Bearer YOUR_API_KEY轮询间隔建议 ≥ 4 秒成片时效转存 24 小时,请尽快下载

提交和查询的 JSON 都没有成片地址。不要打 /signed_url。成片用 GET /v1/videos/{id}/content 下载(带 Key,302 到对象存储直链),见 任务查询与下载。

提交

POST /v1/videos
curl -X POST https://api.oiovideo.com/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "清晨山路,镜头缓慢前推,薄雾从林间散开",
    "seconds": 5,
    "resolution": "720p",
    "image_urls": [
      "https://mdn.github.io/shared-assets/images/examples/rhino.jpg"
    ]
  }'

成功响应

{
  "id": "TASK_ID",
  "object": "video",
  "model": "seedance-2.0",
  "status": "queued",
  "progress": 0,
  "created_at": 1764347090
}

参考图

先 上传素材,把返回的公网 HTTPS 写入 image_urls。不要 Data URI、不要随请求文件、不要 /v1/files、不要 image_ids(内联一律 413)。

模型resolution参考视频
seedance-2.0480p / 720p / 1080p不支持(只开参考图+参考音频)
seedance-2.0-fast480p / 720p最多 3 条
seedance-2.0-mini480p / 720p最多 3 条
seedance-2.5480p / 720p / 1080p不支持(只开参考图+参考音频)

参考视频写入 video_urls,有无参考视频决定计费档;未定价的档位会被拒绝,旧的 sd2.0-* 拆条名已作废,提交会失败。

curl -X POST https://api.oiovideo.com/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "xm2.0-15",
    "prompt": "保持人物和服装一致,让镜头向前推进",
    "duration": 5,
    "ratio": "16:9",
    "image_urls": [
      "https://mdn.github.io/shared-assets/images/examples/rhino.jpg"
    ]
  }'

Body

字段类型必填说明
modelstring是seedance-2.0、seedance-2.5、seedance-2.0-fast 或 seedance-2.0-mini;旧 sd2.0-* 拆条名已作废
promptstring是提示词
durationnumber否时长(秒),与 seconds 二选一;Seedance 2.0 支持 4 到 15 秒,seedance-2.5 支持 4 到 30 秒,默认 5 秒
secondsnumber/string否与 duration 二选一
ratiostring否画幅(推荐;aspect_ratio 为兼容别名)
image_urlsstring[]否参考图:公网 HTTPS,先上传图床;不要 Data URI。xm2.0-15、xm2.5-30、seedance_v2.5 至少一张
resolutionstring否Seedance 2.0 / 2.5 满血支持 480p/720p/1080p(最大 1080p),fast/mini 支持 480p/720p,默认 720p;只接受有现价的档
sizestring否可选 WxH,会映射为 resolution;不能绕过模型分辨率白名单
video_urlsstring[]否参考视频:公网 HTTPS;Seedance 满血 2.0/2.5 暂不支持参考视频(只开参考图+参考音频),其余模型按各自上限;有视频参考时按有参考视频档计费
audio_urlsstring[]否参考音频:公网 HTTPS;可继续传,不单独开价

计费单位与队列优先级

项说明
计费单位视频生成按秒计费:传 duration 或 seconds(同一含义,二选一)。超分 video-upscale 按输入视频时长计费,必须传 seconds 且等于输入视频的实际秒数。
质量档位按 resolution 分档计价(如 480p / 720p / 768p / 1080p / 2k / 4k)。某档是否开放,以广场该模型页面展示为准。
队列优先级priority: 0=标准(默认);priority: 1=速度(插队,单价更高,是否开放见广场)。请求体顶层 priority 与 metadata.priority 等效。该档未开放时,带 priority: 1 的请求自动按标准档处理,不额外收费、不拒单。
未开放档位广场未列出的档位即未开放。除优先级会自动降级为标准档外,其它未开放档位(例如未定价的分辨率)会在转发上游前被拒绝(model_price_error),不扣费、不占上游配额。

以广场模型页面展示的可用参数与价格为唯一依据:广场列出的档位才可下单;文档中的档位范围仅说明能力上限。

超分(video-upscale)

把一条已有成片放大到更高分辨率。恰好 1 条输入视频;不读提示词,不支持参考图 / 参考音频。

curl -X POST https://api.oiovideo.com/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "video-upscale",
    "video_urls": [
      "https://mdn.github.io/shared-assets/videos/flower.mp4"
    ],
    "seconds": 5,
    "resolution": "1080p"
  }'
字段必填说明
model是固定 video-upscale
video_urls是输入视频:公网 HTTPS 直链,恰好 1 条(先 上传素材)。别名 videos / video / video_url / input_video
seconds是输入视频实际秒数(整数 1–3600)。服务端会探测源视频真实时长,偏差超过 1 秒直接拒单,不扣费
resolution否720p(默认)/ 1080p / 2k / 4k;请用小写形式(4k、1080p;大写 4K 会被平台校验拒绝);只接受有现价的档
priority否见上文「计费单位与队列优先级」;未开放时自动按标准档处理

计费:按输入视频时长 × 分辨率单价(以定价页 / 广场展示为准)。输入视频内网地址、localhost、Data URI 一律拒绝。

完整参数表与链路示例见 视频超分。

查询与下载见 任务查询与下载。

完整链路示例(上传素材 → 提交 → 轮询 → 下载)
# 1) 换预签名(本地 ref.png)
curl -X POST https://api.oiovideo.com/api/media/presign \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "ref.png", "size": 245760}'

# 2) 用返回的 upload_url 直传(headers 原样带上)
curl -X PUT "<upload_url>" -H "Content-Type: image/png" --data-binary @ref.png
# → 公网地址 https://img.oiovideo.com/samples/ref-character.jpg

# 3) 提交视频任务
curl -X POST https://api.oiovideo.com/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "xm2.0-15", "prompt": "人物向前行走", "duration": 5,
       "aspect_ratio": "16:9", "image_urls": ["https://img.oiovideo.com/samples/ref-character.jpg"]}'
# → {"id": "TASK_ID", "status": "queued"}

# 4) 轮询(间隔建议 4 秒以上)
curl https://api.oiovideo.com/v1/videos/TASK_ID -H "Authorization: Bearer YOUR_API_KEY"
# → status 变为 completed 后下载

# 5) 下载(首选,带 Key;-L 跟随跳转)
curl -L https://api.oiovideo.com/v1/videos/TASK_ID/content \
  -H "Authorization: Bearer YOUR_API_KEY" -o result.mp4