按能力
视频
视频都按任务处理:提交后查结果或等回调。时长越长、清晰度越高越贵。
#1. 选模型
doubao-seedance-2.5$0.216 / 次限制和状态
这个能力有 13 个在线模型,切换后下面的代码会跟着变。
#2. 复制请求
把 YOUR_API_KEY 换成你的密钥再运行。显示的选项都是这个模型支持的。
https://www.aisplice.store/v1/videosBearer API key异步任务选项这里只展示当前模型已公开支持的选项。
# Requires curl and jq
API_KEY="${API_KEY:-YOUR_API_KEY}"
# 1. Submit once
SUBMITTED=$(curl --fail-with-body -sS https://www.aisplice.store/v1/videos \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: model-docs-$(date +%s)-$$" \\
-d '{
"model": "Seedance 2.5",
"prompt": "A cinematic scene with careful composition",
"nsfw_check": false,
"duration": 5,
"resolution": "720p",
"metadata": {
"generate_audio": true,
"watermark": false,
"output_format": "mp4",
"return_last_frame": false
},
"size": "1:1"
}')
TASK_ID=$(printf '%s' "$SUBMITTED" | jq -r '.task_id // .id // empty')
if [ -z "$TASK_ID" ]; then
printf '%s\n' "$SUBMITTED" >&2
exit 1
fi
echo "task_id=$TASK_ID"
# 2. Poll until terminal
while true; do
STATUS_JSON=$(curl --fail-with-body -sS \
"https://www.aisplice.store/v1/videos/$TASK_ID" \
-H "Authorization: Bearer $API_KEY")
STATUS=$(printf '%s' "$STATUS_JSON" | jq -r '.status // empty' | tr '[:upper:]' '[:lower:]')
echo "status=$STATUS"
case "$STATUS" in
completed|succeeded|success) break ;;
failed|failure|cancelled|canceled)
printf '%s\n' "$STATUS_JSON" | jq .
exit 1
;;
esac
sleep 5
done
# 3. Fetch the final result
curl --fail-with-body -sS \
"https://www.aisplice.store/v1/videos/$TASK_ID/content" \
-H "Authorization: Bearer $API_KEY" | jq .生产环境推荐使用公网媒体地址。 先上传本地文件,再把 public_url 放入模型请求;避免发送大体积 Base64 请求体。
查看上传指南全部参数
这个模型支持的全部字段和可选值。
全部参数
这个模型支持的全部字段和可选值。
model本次请求使用的精确模型标识。
doubao-seedance-2.5prompt描述期望结果的指令。
durationOutput seconds; -1 lets Seedance choose automatically.
-1456789101112131415161718192021222324252627282930resolution请求的输出分辨率。
480p720p1080psizeFirst/last-frame and edit modes require adaptive.
adaptive21:916:94:31:13:49:16imagesUp to 30 image references. Use image_tail with exactly one first-frame image for first/last-frame mode.
metadata.video_urls公网 HTTP(S) 源视频地址。 最多 10 个。
响应流程
查看任务状态、终态和结果响应示例。
响应流程
查看任务状态、终态和结果响应示例。
{
"id": "task_xxx",
"task_id": "task_xxx",
"object": "video",
"model": "Seedance 2.5",
"status": "queued"
}等待中
queued · submitted · in_progress · processing
成功
completed · succeeded · success
失败
failed · failure · cancelled · canceled
#3. 拿到结果
提交后马上返回 task_id。每隔几秒查一次,直到 status 变成 completed;也可以传 webhook_url,完成后我们回调你。
GET https://www.aisplice.store/v1/videos/{task_id}
GET https://www.aisplice.store/v1/videos/{task_id}/content
时长和分辨率决定价格档位。运行中的任务可以取消,见 API 参考。
成功才扣费
#出错了怎么办
- 400 并提示某个字段:这个模型不支持该选项,用第 2 步列出的取值。
- 参考图或视频被拒:必须是模型能下载的公开地址。
- 内容被模型拒绝:换个说法重写提示词;被拒绝的请求不扣费。
- 402:余额不够这次请求,到「钱包」充值后重试。
- 429:请求太快,按 Retry-After 给的秒数等一下再试。
- 503 model_not_found:模型名写错了或模型暂时下线,从第 1 步重新选一个。
#首尾帧、参考图和参考视频
支持的模型会在第 2 步显示这些字段:首帧、尾帧、参考图或参考视频。填公开地址,本地文件先上传。
做进你的产品里先给你的用户放哪些选项,哪些以后再加。
先给用户放哪些选项先放提示词和一个影响价格的选项,基础流程跑通后再加其他的。+
创作意图
像 prompt 这样的字段应该出现在 UI 中,因为用户能直接理解它会改变什么结果。
成本倍率项
像 duration、resolution、size、count 这样的字段,只有在价格已经能被清楚解释时才应引入。
模式切换项
像 image、mask 或 continuation ID 这类字段会改变整个工作流本身,只应出现在专门模式中。
系统接线项
像 webhook_secret 这样的字段是给集成方用的,不是给日常创作者用的,所以应从默认 UI 中移除。
prompt- 何时暴露
- 始终暴露。它定义场景内容或运动方向。
- 推荐默认值
- 在 UI 中设为必填。
- 为什么重要
- 没有它,用户就无法控制视频意图。
image / images- 何时暴露
- 仅在参考素材驱动或图生视频产品中暴露。
- 推荐默认值
- 在纯 prompt 流程中隐藏。
- 为什么重要
- 它会改变创作模式,因此应是明确的产品决策,而不是默认暴露。
duration- 何时暴露
- 只有在基础异步流程稳定、价格展示清晰后再暴露。
- 推荐默认值
- 从模型支持的最短时长起步。
- 为什么重要
- 它是视频生成里最主要的成本和延迟放大项之一。
resolution- 何时暴露
- 只有当用户明确会比较 720p、1080p 或 4K 输出时再暴露。
- 推荐默认值
- 先在服务端固定一个推荐分辨率。
- 为什么重要
- 更高分辨率会提高成本、排队时间和失败敏感度。
webhook_url / webhook_secret- 何时暴露
- 只给后端集成方使用,不给普通终端用户暴露。
- 推荐默认值
- 在 UI 产品中优先采用轮询。
- 为什么重要
- 它们解决的是系统集成问题,不是终端用户创作问题,所以不应进入面向用户的控制区。
Phase 1
- prompt
- one size or one duration default
- submit -> poll -> content
Phase 2
- one quality or resolution selector
- clear pricing hint
Phase 3
- advanced controls such as reference media, continuation, webhook, or vendor-specific tuning结果只保留一个真源
还是没解决?
把请求 ID 或报错信息发给我们,我们来查。