API DOCS

视频模型

通过异步任务生成视频,并使用素材库稳定地传入参考图片或视频。

调用流程

视频生成是异步接口,一次完整调用包含以下步骤:

  1. 调用 GET /v1/models 获取当前可用的视频模型 ID。
  2. 可选:将本地图片或视频上传到素材库,取得 assetUrl
  3. 调用 POST /v1/generation/tasks 创建视频生成任务。
  4. 保存响应中的 idtask_id,每隔 3~5 秒查询一次任务状态。
  5. 任务成功后读取响应中的视频地址;任务失败时记录错误信息并按需重试。

选择模型

先查询模型列表,并将返回的完整模型 ID 原样用作 model。不要根据展示名称自行拼接模型 ID;模型支持的时长、比例、分辨率和输入类型以实时返回结果及账户权限为准。

查询可用模型
curl https://api.mindon.fun/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

创建视频任务

调用 POST /v1/generation/tasks 创建任务。content 是按顺序排列的内容数组:文本提示词使用 text,参考图片使用 image_url,参考视频使用 video_url

文生视频
curl https://api.mindon.fun/v1/generation/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao/doubao-seedance-2-0-260128",
    "content": [
      {
        "type": "text",
        "text": "海边日落,电影感镜头,海浪缓慢拍打礁石"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "watermark": false
  }'
字段必填说明
model通过 GET /v1/models 获取的完整模型 ID。
content提示词及参考素材数组,至少包含一个有效内容项。
duration输出视频时长,单位为秒;可选值由模型决定。
resolution例如 480p720p1080p;仅传模型支持的值。
ratio画面比例,例如 16:99:161:14:33:4
generate_audio是否生成音频,仅在当前模型支持时传入。
watermark是否添加水印,仅在当前模型支持时生效。
input_video_duration_sec视频输入时建议参考视频的实际时长,单位为秒,用于准确估算视频输入用量。

创建成功通常会立即返回任务信息,而不会等待视频生成完成:

创建响应示例
{
  "id": "task_xxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao/doubao-seedance-2-0-260128",
  "status": "queued",
  "progress": 0,
  "created_at": 1785729600
}

不同任务可能只返回 idtask_id。客户端应兼容两者,并在收到响应后立即保存任务 ID。即使初始状态为 queued,也不代表任务异常。

轮询任务状态

使用创建响应中的任务 ID 请求 GET /v1/generation/tasks/{task_id}。推荐每隔 3~5 秒查询一次;发生临时网络错误时使用递增等待时间,不要同时对同一个任务发起大量查询。

查询任务
curl https://api.mindon.fun/v1/generation/tasks/TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
状态含义客户端处理
queued任务已接收,等待处理。继续轮询,不要重复创建相同任务。
running任务正在生成。继续轮询,可显示 progress(如果响应提供)。
succeeded任务生成成功。停止轮询,读取响应中的视频 URL 并及时保存。
failed任务生成失败。停止轮询,记录 error 后决定是否重试。

为兼容不同模型返回格式,也建议将 successcompleted 视为成功终态,将 error 视为失败终态。不要假设任务一定在固定时间内完成。

Node.js 轮询示例
const apiKey = process.env.MINDON_API_KEY;
const taskId = "TASK_ID";

while (true) {
  const response = await fetch(
    `https://api.mindon.fun/v1/generation/tasks/${taskId}`,
    { headers: { Authorization: `Bearer ${apiKey}` } },
  );

  const task = await response.json();
  if (!response.ok) throw new Error(task.error?.message ?? "查询任务失败");

  if (["succeeded", "success", "completed"].includes(task.status)) {
    console.log("生成成功", task);
    break;
  }
  if (["failed", "error"].includes(task.status)) {
    throw new Error(task.error?.message ?? "视频生成失败");
  }

  await new Promise((resolve) => setTimeout(resolve, 4000));
}

素材库调用说明

Seedance 2.0 支持使用图片和视频作为参考素材。对于本地文件,推荐先调用 POST /v1/assets/upload 素材上传接口取得 assetUrl,再创建视频任务。上传完成后即可使用返回值,无需另外查询素材处理状态。

素材格式大小限制引用方式
图片PNG、JPEG、WebP最大 10MBimage_url + reference_image
视频MP4最大 50MBvideo_url + reference_video

当前素材上传接口暂不支持音频。上传和创建任务时应使用相同的模型 ID。

1. 上传本地素材

上传参考图片
curl https://api.mindon.fun/v1/assets/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=doubao/doubao-seedance-2-0-260128" \
  -F "file=@./reference.png"
上传响应
{
  "assetUrl": "asset://asset-xxxxxxxx"
}

assetUrl 是完整的素材引用地址。请将其视为不透明字符串并原样使用,不要提取、修改或自行拼接其中的素材 ID。

2. 使用图片素材创建任务

图生视频
curl https://api.mindon.fun/v1/generation/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao/doubao-seedance-2-0-260128",
    "content": [
      {
        "type": "text",
        "text": "让参考图中的人物自然转身,镜头缓慢向前推进"
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "asset://asset-xxxxxxxx"
        },
        "role": "reference_image"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9"
  }'

3. 使用视频参考素材

上传 MP4 文件后,将返回的 assetUrl 放入 video_url.url

视频参考生成
{
  "model": "doubao/doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "参考输入视频的动作节奏,生成新的电影感画面"
    },
    {
      "type": "video_url",
      "video_url": {
        "url": "asset://asset-xxxxxxxx"
      },
      "role": "reference_video"
    }
  ],
  "input_video_duration_sec": 5,
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9"
}

4. 直接使用公网素材 URL

如果素材已经托管在公网,可以跳过上传步骤,直接把 HTTPS URL 放入 image_url.urlvideo_url.url。系统会自动处理素材,客户端仍使用创建任务时返回的同一个任务 ID 轮询。

公网图片 URL
{
  "type": "image_url",
  "image_url": {
    "url": "https://example.com/reference.png"
  },
  "role": "reference_image"
}
  • URL 必须使用 HTTPS,并允许从公网直接下载。
  • 不能依赖登录状态、Cookie、临时请求头或防盗链配置。
  • 地址应直接返回素材文件,不能返回 HTML 页面。
  • 正式生产环境推荐使用素材上传接口,避免外部 URL 失效。

5. 多素材引用

需要多个参考素材时,可以在 content 中继续添加 image_urlvideo_url 内容项。素材数量、类型组合和时长限制以模型当前能力为准。

常见状态码

状态码含义处理方式
400请求字段、素材格式、模型或分辨率不支持。检查模型 ID、content、文件格式和可选参数。
401API Key 缺失、无效或已停用。检查 Authorization: Bearer 请求头。
402账户额度不足。补充额度后重新创建任务。
404任务不存在或不属于当前账户。确认任务 ID 和所使用的 API Key。
502素材处理或生成服务暂时异常。确认公网素材可访问,稍后重试;持续失败时联系技术支持。
503当前模型暂时不可用。稍后重试或通过 GET /v1/models 选择其他可用模型。

使用建议

  • 上传素材和创建任务时使用同一个完整模型 ID。
  • 在业务侧保存已上传素材的 assetUrl,避免重复上传相同文件。
  • 不要自行构造素材地址,也不要把素材库当作永久文件存储服务。
  • 生产环境不要使用 Base64 传递大文件,优先使用素材上传接口。
  • 创建任务请求超时前不要盲目重试;应先确认是否已经取得任务 ID,避免重复计费。
  • 视频生成成功后应及时将输出文件保存到自己的存储服务。