Skip to content

异步视频与 Flow 图片生成

词元 API 使用异步任务接口生成视频。部分 Flow 图片模型也通过同一接口提交,创建任务后需要轮询结果。

本文示例使用 https://code.ciyuanapi.xyzcode1code2code3 节点使用相同协议。

功能方法与路径
查询可用模型GET /v1/models
创建任务POST /v1/videos
查询任务GET /v1/videos/{task_id}
下载结果GET /v1/videos/{task_id}/content

所有请求都需要词元 API Key:

http
Authorization: Bearer $API_KEY

模型、规格与价格

公开模型名时长与价格参考素材
MiniMax-H34-15 秒;768P $0.18/秒,2K $0.25/秒图片最多 9 张,前 5 张免费,第 6-9 张 $0.10/张;参考视频最多 3 条、合计不超过 15 秒,768P $0.15/秒,2K $0.20/秒;参考音频最多 3 条免费
veo-3-1固定 8 秒,$0.56/次支持首尾帧和多图参考,最多 9 张图片
veo-omni-flash固定 10 秒,$0.70/次支持多图参考,最多 9 张图片
veo-omni-flash-video-edit固定 10 秒,$1.00/次必须提供 1 个最长 15 秒的参考视频,可附加最多 9 张参考图
nano-banana-pro-flow$0.03/次支持最多 8 张参考图,返回图片
nano-banana-2-flow$0.03/次支持最多 8 张参考图,返回图片

价格按请求参数计算。分组倍率、订阅或活动折扣会按账户实际规则应用。

MiniMax H3

MiniMax H3 支持 4-15 秒、768P/2K 输出以及图片、视频、音频参考素材。resolution 同时决定输出视频和参考视频的计费档位。

文生视频

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: h3-text-001" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "雨夜城市街道,电影感镜头缓慢向前推进",
    "duration": 8,
    "resolution": "768P",
    "aspect_ratio": "16:9"
  }'

多素材生成

参考视频必须同时提供对应的实际时长,数组顺序一一对应:

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: h3-reference-001" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "参考图片中的角色,采用参考视频的运镜并配合参考音频节奏",
    "duration": 10,
    "resolution": "2K",
    "aspect_ratio": "16:9",
    "reference_image_urls": [
      "https://cdn.example.com/character-1.jpg",
      "https://cdn.example.com/character-2.jpg"
    ],
    "reference_videos": [
      "https://cdn.example.com/camera.mp4"
    ],
    "reference_video_durations": [5.5],
    "reference_audios": [
      "https://cdn.example.com/music.mp3"
    ]
  }'
字段类型必填说明
modelstringMiniMax-H3
promptstring视频描述
durationinteger4-15,默认 4
resolutionstring768P2K,默认 768P
aspect_ratiostring例如 16:99:16;默认自适应
reference_image_urlsstring[]最多 9 张;第 6 张开始加收图片参考费
reference_videosstring[]最多 3 条,总时长不超过 15 秒
reference_video_durationsnumber[]条件必填有参考视频时必填,单位秒,顺序必须与 reference_videos 一致
reference_audiosstring[]最多 3 条,免费

计费示例:8 秒 2K 输出、6 张参考图、1 条 5 秒参考视频,总价为 8 × $0.25 + 1 × $0.10 + 5 × $0.20 = $3.10

VEO 3.1

veo-3-1 固定生成 8 秒视频。duration 可省略;如传入必须为 8

文生视频

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: veo31-text-001" \
  -d '{
    "model": "veo-3-1",
    "prompt": "产品在柔和灯光下缓慢旋转,电影级质感",
    "duration": 8,
    "aspect_ratio": "16:9"
  }'

首尾帧

首图和尾图按数组顺序传入,并指定 function_mode

json
{
  "model": "veo-3-1",
  "prompt": "从清晨平滑过渡到夜晚,保持镜头位置一致",
  "duration": 8,
  "aspect_ratio": "16:9",
  "images": [
    "https://cdn.example.com/first.jpg",
    "https://cdn.example.com/last.jpg"
  ],
  "metadata": {
    "function_mode": "first_last_frames"
  }
}

多图参考

json
{
  "model": "veo-3-1",
  "prompt": "组合这些参考素材生成统一风格的品牌短片",
  "duration": 8,
  "aspect_ratio": "9:16",
  "Ingredients_images": [
    "https://cdn.example.com/ref-1.jpg",
    "https://cdn.example.com/ref-2.jpg"
  ]
}

imagesIngredients_images 以及首尾帧图片去重后合计最多 9 张。

VEO Omni Flash

veo-omni-flash 固定生成 10 秒视频。duration 可省略;如传入必须为 10

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: omni-flash-001" \
  -d '{
    "model": "veo-omni-flash",
    "prompt": "把参考产品图组合成节奏明快的广告视频",
    "duration": 10,
    "aspect_ratio": "16:9",
    "Ingredients_images": [
      "https://cdn.example.com/product-1.jpg",
      "https://cdn.example.com/product-2.jpg"
    ]
  }'

参考图去重后最多 9 张。

VEO Omni Flash 视频编辑

veo-omni-flash-video-edit 固定输出 10 秒,必须传入一个参考视频。参考视频最长 15 秒,可同时传入最多 9 张参考图。

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: omni-edit-001" \
  -d '{
    "model": "veo-omni-flash-video-edit",
    "prompt": "保留原视频动作,把场景改成明亮的未来城市",
    "duration": 10,
    "video_url": "https://cdn.example.com/input.mp4",
    "reference_video_duration": 12.4,
    "Ingredients_images": [
      "https://cdn.example.com/style.jpg"
    ]
  }'
字段类型必填说明
video_urlstring唯一的参考视频 URL
reference_video_durationnumber建议参考视频实际时长,单位秒;超过 15 秒会被拒绝
Ingredients_imagesstring[]最多 9 张参考图
durationinteger固定为 10

Nano Banana Flow 图片

nano-banana-pro-flownano-banana-2-flow 通过异步任务接口生成图片,每次 $0.03。它们不是视频模型,计费不随 duration 增加。

bash
curl https://code.ciyuanapi.xyz/v1/videos \
  -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: banana-flow-001" \
  -d '{
    "model": "nano-banana-pro-flow",
    "prompt": "将参考图改成干净的产品摄影风格",
    "resolution": "2k",
    "aspect_ratio": "1:1",
    "images": [
      "https://cdn.example.com/reference.jpg"
    ]
  }'

公开模型名只使用 nano-banana-pro-flownano-banana-2-flow。每次最多 8 张参考图,完成任务的结果是图片。

查询任务

创建成功返回 HTTP 200 和公开任务 ID:

json
{
  "id": "task_0123456789abcdef",
  "object": "video",
  "status": "queued",
  "progress": 0,
  "model": "veo-3-1"
}

建议每 5-10 秒查询一次:

bash
curl https://code.ciyuanapi.xyz/v1/videos/task_0123456789abcdef \
  -H "Authorization: Bearer $API_KEY"
状态处理方式
queued继续轮询
in_progress继续轮询
completed使用 metadata.url 获取结果
failed停止轮询并读取 error.message
ambiguous停止轮询并联系平台核对

完成响应示例:

json
{
  "id": "task_0123456789abcdef",
  "object": "video",
  "model": "veo-3-1",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://code.ciyuanapi.xyz/v1/videos/task_0123456789abcdef/content"
  }
}

下载结果仍需鉴权:

bash
curl https://code.ciyuanapi.xyz/v1/videos/task_0123456789abcdef/content \
  -H "Authorization: Bearer $API_KEY" \
  -o result.bin

任务只能由所属用户查询和下载。请直接使用返回的完整 metadata.url

JavaScript 轮询示例

js
const baseURL = "https://code.ciyuanapi.xyz"
const apiKey = process.env.CIYUAN_API_KEY

const submitResponse = await fetch(`${baseURL}/v1/videos`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    model: "veo-3-1",
    prompt: "海面上的灯塔,云层快速流动",
    duration: 8,
    aspect_ratio: "16:9",
  }),
})

if (!submitResponse.ok) throw new Error(await submitResponse.text())
const task = await submitResponse.json()

while (true) {
  await new Promise((resolve) => setTimeout(resolve, 5000))
  const response = await fetch(`${baseURL}/v1/videos/${task.id}`, {
    headers: { Authorization: `Bearer ${apiKey}` },
  })
  if (!response.ok) throw new Error(await response.text())
  const result = await response.json()

  if (result.status === "completed") {
    console.log("结果地址", result.metadata.url)
    break
  }
  if (["failed", "ambiguous"].includes(result.status)) {
    throw new Error(result.error?.message || `任务结束:${result.status}`)
  }
}

幂等、重试与结算

  • 每个新任务使用唯一的 Idempotency-Key,最长 255 个字符。
  • 相同用户、令牌、幂等键和完全相同的请求会返回原任务,不会重复创建或重复预扣。
  • 同一幂等键对应不同请求时返回 HTTP 409idempotency_conflict
  • 网络错误或 HTTP 429502503 时,只用相同幂等键和完全相同的请求做有限重试。
  • HTTP 400401403451 以及内容审核失败不应原样重试,应先调整参数或素材。
  • 创建任务时预扣余额;明确失败会自动退款。
  • ambiguous 不会自动结算或退款,需要人工核对上游结果。

常见错误

HTTP/错误码说明
invalid_model模型不存在或未对当前令牌开放
invalid_duration模型时长不符合固定值或范围
invalid_request参考素材数量、视频数量、分辨率或其他参数不符合要求
insufficient_user_quota账户余额不足
idempotency_conflict / HTTP 409幂等键已用于另一份请求
PROMPT_BLOCKED / HTTP 451内容审核拒绝,需修改提示词或参考素材
HTTP 413请求体或素材过大