Kling 4.0 Flash

通过 POST /v1/videos/generations 生成 720p、3–20 秒的视频。

生成方式模型 ID输入
文生视频kling-4.0-flash-text-to-video在 input.prompt 描述画面、动作和声音
首帧图生视频kling-4.0-flash-image-to-video在 input.contents 传一张首帧图,可附提示词
Omni 参考与编辑kling-4.0-flash-omni在 input.contents 组合图片、视频和已有主体,支持视频编辑

计费规则

720p 输入类型单价(积分/计费秒)计费秒数
无视频输入,包括仅使用图片主体23.44O
有输入视频,包括视频角色主体15.62O + max(I, O)

O 是输出计费时长。显式指定 input.settings.duration 时按指定秒数收费,视频文件时长的细微偏差不影响金额。省略时长时按模型最终采用的目标时长结算。模型优先识别提示词中的时长,Omni 编辑其次采用待编辑视频时长四舍五入后的整数,其他情况默认 10 秒。I 为参考视频、待编辑视频和视频角色主体的输入总时长。

账号倍率为 1、输出计费时长为 10 秒时,无视频输入收费 234.40 积分。若输入 8 秒视频,按 20 秒收费 312.40 积分。若输入 15 秒视频,按 25 秒收费 390.50 积分。计费单价和基础金额均保留两位小数,再应用账号倍率并四舍五入到两位小数。

创建时预扣积分。显式指定时长就按该时长预留输出,省略则按最多 20 秒预留。有视频或主体时,另按输入上限 20 秒预留,以覆盖可能的视频主体。倍率为 1、自动时长时,无视频且无主体预扣 468.80 积分,有视频或主体预扣 624.80 积分。可用相同的 model 和 input 调用 POST /v1/estimate 查看预扣,携带 API Key 可计入账号倍率。

生成成功后退还未用的预扣差额。最终金额见完成任务的 credits_consumed。若返回 usage.output_seconds,它表示视频文件实际时长,可能与计费时长不同。计费用量暂缺时,平台会继续查询后再结算。明确失败后退还预扣。

提交结束后,若平台查询正常但未找到任务,且尚无成功记录,会将任务标记为失败并自动退还预扣。查询暂时异常时继续恢复。

接口与认证

向 POST /v1/videos/generations 发送 JSON,并在 Authorization 请求头中使用 Bearer YOUR_API_KEY。可选的 callback_url 与 model、input 同级。三个模型均输出 720p,可通过 input.settings.duration 指定 3–20 秒的整数时长。

文生视频

使用 kling-4.0-flash-text-to-video,在必填的 input.prompt 中描述要生成的画面和动作。只传提示词即可生成视频。可选的 input.settings.aspect_ratio 支持 16:9(默认)、9:16、1:1 和 21:9。

下面的请求生成一段 10 秒的竖屏视频。账号倍率为 1 时,费用为 234.40 积分。

curl -X POST 'https://api.aivideoapi.ai/v1/videos/generations' \
  -H "Authorization: Bearer ${API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "kling-4.0-flash-text-to-video",
    "input": {
      "prompt": "夜间列车驶过城市,镜头从站台平移至亮起的车窗。",
      "settings": { "duration": 10, "aspect_ratio": "9:16" }
    },
    "callback_url": "https://app.example.com/webhooks/video"
  }'

纯英文提示词最多 26,000 个字符,纯非英文最多 11,000 个字符。混合输入须满足 英文字符数 / 26000 + 非英文字符数 / 11000 ≤ 1。

首帧图生视频

contents 传一项 first_frame,可附一项 prompt。首帧只需 type 和 url,画面比例由图片决定。以下 JSON 发往同一个生成接口,请将素材地址换成可下载的文件。

{
  "model": "kling-4.0-flash-image-to-video",
  "input": {
    "contents": [
      { "type": "first_frame", "url": "https://media.example.com/platform.jpg" },
      { "type": "prompt", "text": "保持相机固定,让站台上的旗子随风飘动。" }
    ],
    "settings": { "duration": 6 },
    "options": { "watermark_info": { "enabled": true } }
  }
}

Omni 多素材参考和编辑

contents 可含一项 prompt,素材类型为 first_frame、refer_image、feature_video、base_video 和 element。素材的自定义 id 在任务内唯一,可通过 @id 在提示词中引用。使用已有主体时同时提供 element_id 和自定义 id。

{
  "model": "kling-4.0-flash-omni",
  "input": {
    "contents": [
      { "type": "base_video", "id": "clip", "url": "https://media.example.com/train.mp4" },
      { "type": "refer_image", "id": "sky", "url": "https://media.example.com/sunset.jpg" },
      { "type": "prompt", "text": "把 @clip 中的天空替换成 @sky 的日落色调,保留列车和原声。" }
    ],
    "settings": { "duration": 10, "audio": "original" }
  }
}

settings.audio 默认为 native,生成与画面匹配的声音。保留原声可选 original,需要至少一段 base_video 或 feature_video。有待编辑视频时使用其原声,否则使用第一段特征参考视频的原声。Omni 的画面比例可用文生视频的四种固定比例,或使用默认的 adaptive,由提示词和输入素材确定。

素材要求
图片JPEG/PNG,HTTP(S) 地址或 Base64。每张最多 30 MB,两边至少 300 px,宽高比 2:5 至 5:2。Omni 最多 10 张,其中首帧最多 1 张。
视频HTTP(S) 地址,MP4/MOV,每段最多 300 MB。单段及输入视频总时长均为 3–20 秒。每边 700–4553 px,总像素最多 8,294,400,宽高比 2:5 至 5:2,24–60 fps。
主体和总数主体最多 7 个,其中视频角色主体最多 3 个。视频角色主体与输入视频合计最多 5 个,待编辑视频最多 1 个。图片、视频和主体合计最多 15 个。

查询结果与回调

创建成功返回平台任务 ID。

{
  "code": 200,
  "msg": "success",
  "data": { "taskId": "29bd04f8-3c15-4374-a364-4b484782d235" }
}

使用同一账号的 API Key 查询任务。

curl 'https://api.aivideoapi.ai/v1/tasks/29bd04f8-3c15-4374-a364-4b484782d235' \
  -H "Authorization: Bearer ${API_KEY}"

三个 Flash 模型使用相同的查询和回调格式。创建响应中的 data.taskId 对应查询和回调正文的 id。查询直接返回任务对象,时间戳均为 Unix 秒。

等待提交和生成中

刚创建的任务可能返回 pending。estimated_seconds 是预估等待时间。

{
  "id": "29bd04f8-3c15-4374-a364-4b484782d235",
  "status": "pending",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 0,
  "created_at": 1794096000,
  "estimated_seconds": 300
}

开始生成后会返回 processing。progress 为 null 时可继续用同一任务 ID 查询。这两种状态下,credits_consumed 为 0,创建时的预扣已从可用余额中扣除。

{
  "id": "29bd04f8-3c15-4374-a364-4b484782d235",
  "status": "processing",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 0,
  "created_at": 1794096000,
  "progress": null
}

查询成功结果

以上面的 10 秒文生视频请求为例,output.urls[0] 是可下载的视频。文件实际长 10.041 秒,账号倍率为 1 时仍按指定的 10 秒结算,credits_consumed 为 234.40。

{
  "id": "29bd04f8-3c15-4374-a364-4b484782d235",
  "status": "completed",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 234.40,
  "created_at": 1794096000,
  "completed_at": 1794096065,
  "output": {
    "urls": [
      "https://media.example.com/results/night-train.mp4?token=example"
    ]
  },
  "usage": {
    "output_seconds": 10.041
  }
}

默认返回供应商的视频 URL,请保留签名参数并在链接过期前下载。请求水印且有水印版本时,其地址在 output.metadata.watermark_urls。usage 按可用数据返回,output_seconds 表示文件实际时长,有视频输入时还可能返回 input_seconds。

查询失败结果

另一个任务生成失败时,查询仍返回 HTTP 200。读取 status 和 error 判断生成结果。下例中预扣已退还,最终消耗为 0。

{
  "id": "b853d103-0feb-49f8-b238-ae6bf935aca2",
  "status": "failed",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 0,
  "created_at": 1794096120,
  "error": {
    "code": "upstream_error",
    "message": "Video generation failed. Please try again."
  }
}

接收终态回调

在创建请求的顶层传入 callback_url。平台在成功结算或失败退款后向该地址发送 JSON POST。以下展示接收端收到的请求,正文与对应的终态查询示例一致。

成功回调

POST /webhooks/video HTTP/1.1
Host: app.example.com
Content-Type: application/json
X-Task-Id: 29bd04f8-3c15-4374-a364-4b484782d235
X-Event: task.completed
X-Event-ID: 29bd04f8-3c15-4374-a364-4b484782d235:task.completed
X-Timestamp: 1794096066

{
  "id": "29bd04f8-3c15-4374-a364-4b484782d235",
  "status": "completed",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 234.40,
  "created_at": 1794096000,
  "completed_at": 1794096065,
  "output": {
    "urls": [
      "https://media.example.com/results/night-train.mp4?token=example"
    ]
  },
  "usage": {
    "output_seconds": 10.041
  }
}

失败回调

POST /webhooks/video HTTP/1.1
Host: app.example.com
Content-Type: application/json
X-Task-Id: b853d103-0feb-49f8-b238-ae6bf935aca2
X-Event: task.failed
X-Event-ID: b853d103-0feb-49f8-b238-ae6bf935aca2:task.failed
X-Timestamp: 1794096135

{
  "id": "b853d103-0feb-49f8-b238-ae6bf935aca2",
  "status": "failed",
  "model": "kling-4.0-flash-text-to-video",
  "credits_consumed": 0,
  "created_at": 1794096120,
  "error": {
    "code": "upstream_error",
    "message": "Video generation failed. Please try again."
  }
}

按 X-Event-ID 对回调去重。同一事件重试时此值保持不变,X-Timestamp 表示本次发送的 Unix 秒。接收端应在 10 秒内返回 HTTP 2xx,已处理过的事件也返回 2xx。投递失败后最多重试两次。需要核对终态时,可使用自己的 API Key 查询 X-Task-Id 对应的任务。