跳至文档内容
本页目录

Kling 4.0

使用 Kling 4.0,通过文本、首尾帧图片或多模态素材来生成视频。本页详细介绍了该模型从发起请求到获取结果的完整工作流。

API 模型 ID: kling-4-0

视频生成采用异步模式。请保存创建任务时返回的 taskId,后续用于查询状态或接收 Webhook 回调。

模型能力

功能支持的取值
输出分辨率720p · 1080p
输出时长3–30 s
画面比例auto, 16:9, 9:16, 1:1, 21:9
参考图片最多 10 张图片
参考视频最多 5 个视频
参考音频最多 3 个音频文件
素材总数合计最多 15 个参考素材文件
参考视频 (Σ)30 秒
seed不支持

价格与积分

视频生成按计费时长扣除积分,时长以秒为单位。没有视频输入时,按输出时长计费;有视频输入时,还需加上参考视频的时长。

下表列出的是每秒需要消耗的积分,并非整个任务的总费用。每秒单价取决于所选模型、输出分辨率,以及是否在参考视频生成模式中传入视频素材。具体计算方式和示例见表格下方。

输出分辨率无视频输入有视频输入
720p13 积分/秒8 积分/秒
1080p20 积分/秒13 积分/秒
  • 无视频输入:输出视频秒数 × 无视频单价。
  • 有视频输入时,T 为服务端实测的参考视频总秒数。仅对最终积分向上取整。 ceil((duration + max(duration, T)) × rate)
  • 仅上传图片或音频参考时,仍按“无视频单价”计费。“有视频单价”仅在“参考视频生成”模式且确实上传了视频素材时适用。

计费案例

5 秒 720p 文字生成视频:5 × 13 = 65 积分。

5 秒 720p 输出(附带 5 秒参考视频):(5 + 5) × 8 = 80 积分。

积分将在提交任务时预扣,并在任务成功后实际扣除。失败或超时的任务将进入退款流程。若计费状态显示为 refund_failed,代表自动退款未成功,请检查 API 日志或联系客服支持。

身份验证

请在控制台中创建 API 密钥。完整的密钥仅会显示一次,请妥善保存在您的服务器上,并在每次发起 API 请求时将其作为 Bearer 令牌携带于请求头中。

基础 URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

在运行示例代码前,请先设置 SEEVIO_API_KEY 环境变量。JavaScript 示例适用于 Node.js 服务端环境;Python 示例需使用 requests 库。

快速开始

提交这个最简请求并保存返回的 taskId,随后使用下方的查询接口获取结果。创建响应中返回的积分(credits)为该任务冻结的预扣积分。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

创建任务的响应示例

上方请求被成功接收后,接口会返回以下 JSON。taskId 是任务标识,用于后续查询任务状态;credits 是本次任务预扣的积分数量。此响应仅表示任务已创建,不代表视频已生成完成。你需要使用轮询查询任务状态,或通过 Webhook 来接收视频结果。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

创建任务

POST https://api.seevio.ai/v1/videos/generations

发送包含 model 和 input 的 JSON 对象,也可根据需要提供 callback_url。请务必指定本页面显示的 model ID;若不指定,将默认选择 seedance-2-0。

请求体

字段类型是否必填说明及约束
model
string是

模型 ID。使用 Kling 4.0 时,请填写 kling-4-0。

callback_url
string否

用于接收任务完成或失败回调的公网 HTTPS 接口。不支持私有网络或本地 localhost。

示例: https://example.com/webhooks/seevio
input
object是

输入参数

输入参数

字段类型默认值说明及约束
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—最多 8000 个字符。图生视频可省略提示词,其他模式必填。参考素材按类型及数组顺序编号,从 @Image1、@Video1、@Audio1 开始。
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostring按生成模式
支持的取值auto16:99:161:121:9

指定固定比例时,输出视频使用该比例。省略此字段或选择 auto 时,文生视频使用 16:9,图生视频沿用首帧比例,多素材参考模式根据参考图或参考视频确定比例。

input.image_urlsstring[][]图生模式按顺序传入首帧和可选尾帧。参考模式最多传入 10 张参考图。
input.keyframe_urlsstring[][]按播放顺序传入中间关键帧,仅用于图生模式。无尾帧时最多 9 张,有尾帧时最多 8 张。
input.video_urlsstring[][]仅用于多素材参考模式。传入参考视频的 HTTPS 链接,可用来参考动作或镜头运动。最多 5 段,每段 2 至 30 秒,所有视频合计最多 30 秒。
input.audio_urlsstring[][]仅用于多素材参考模式。传入参考音频的 HTTPS 链接,为生成的人声或音效提供参考。最多 3 段,每段 5 至 30 秒。
input.keep_original_soundbooleanfalse仅在 video_urls 中传入参考视频时生效。true 保留参考视频的原声,false(默认)由模型生成新声音。未传参考视频时,接口会忽略此参数。

创建任务响应

HTTP 200 返回 taskId(字符串)和 credits(数字)。这仅代表任务已成功接收,不代表生成完成。下方显示的积分对应 5 秒 720p 快速入门示例的预扣积分。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

生成模式与示例

请将示例中的 example.com 媒体链接替换为您自己公网可直接访问的 HTTPS 文件地址。示例中的 URL 仅用于展示请求的数据格式,并非可下载的静态资源。

文字生成视频

仅根据文字提示词生成视频。在此模式下,传入的媒体 URL 会被忽略。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

首帧参考

提供一张图片作为视频的首帧,并在提示词中描述您期望的动态画面。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg"
    ]
  }
}'

首尾帧参考

图生模式按顺序传入首帧和可选尾帧。参考模式最多传入 10 张参考图。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ]
  }
}'

用关键帧生成视频:玫瑰绽放

用同一机位拍摄的四张照片,生成一段 8 秒的玫瑰开花延时视频。在 image_urls 中,第一张放闭合的花苞,第二张放完全盛开的花朵,分别作为首帧和尾帧。在 keyframe_urls 中,先放花瓣刚展开的照片,再放半开的照片。这样,画面按“花苞 → 初绽 → 半开 → 盛开”的顺序过渡。中间帧按数组顺序使用,具体出现的秒数由模型安排。

请将示例中的 example.com 媒体链接替换为您自己公网可直接访问的 HTTPS 文件地址。示例中的 URL 仅用于展示请求的数据格式,并非可下载的静态资源。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/rose-bud.jpg",
      "https://example.com/rose-full-bloom.jpg"
    ],
    "keyframe_urls": [
      "https://example.com/rose-opening.jpg",
      "https://example.com/rose-half-open.jpg"
    ]
  }
}'

多模态参考

将图片、视频和音频参考素材组合使用。提示词仍为必填项。由于包含了参考视频,扣费将应用有视频输入的计费公式。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/motion.mp4"
    ],
    "audio_urls": [
      "https://example.com/surf.mp3"
    ],
    "keep_original_sound": false
  }
}'

查询任务状态

GET https://api.seevio.ai/v1/tasks/{taskId}

请将示例中的 ID 替换为创建任务时返回的 taskId。查询接口仅支持查询当前 API 密钥所属用户的任务;若 ID 无权访问或不存在,将返回 HTTP 404 错误。

建议每 10–20 秒轮询一次,遇到 HTTP 429 时请增加重试间隔(退避),并在状态为 completed 或 failed 时停止轮询。生产环境中推荐使用 Webhook。下方的代码示例均只执行单次查询。

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
状态说明及约束
queued任务已接收,正在排队等待调度。
generating视频正在生成中。
completed生成成功。请在视频链接过期前下载 data.results 中的文件。
failed生成失败。可以通过 failed_reason 和 billing_status 排查原因。
字段类型说明及约束
idstring
任务唯一标识。即创建任务响应中返回的 taskId。
created_atnumber
任务创建的 Unix 时间戳(秒)。
modelstring
执行该任务所调用的公共模型 ID。
billing_statusstring
计费状态:reserved(已预扣)、charged(已扣除)、refunded(已退款)或 refund_failed(退款失败)。
creditsnumber
该任务预扣的积分。发生退款后,此数值仍会保留;请通过 billing_status 判断最终的实际扣费结果。
failed_reasonstring | null
任务失败时的具体原因;任务未失败时为 null。失败任务的查询响应中会省略 data 字段。
dataobject
任务成功生成或处于处理中时存在。包含输出内容和处理详情。
data.resultsstring[]
生成的视频 URL 数组。在任务完成前或视频过期后,该数组为空。
data.video_expires_atstring | null
视频过期时间,格式为 ISO 8601 时间戳;暂不可用时为 null。请在此时间前下载并保存结果。
data.last_frame_urlstring | null
请求了最后一帧且成功获取时返回其 URL,否则为 null。
data.processing_timenumber | null
任务处理耗时(单位:秒),若不可用则为 null。

任务已完成:查询响应与视频结果

查询返回 status 为 completed 时,表示视频已生成完成。你可以从 data.results 获取视频地址,并在 data.video_expires_at 指定的过期时间前下载保存。billing_status 为 charged 表示本次任务已按预扣积分完成扣费。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

任务已失败:查询响应与退款状态

查询返回 status 为 failed 时,表示视频生成未成功。请通过 failed_reason 查看失败原因,通过 billing_status 确认退款结果。以下示例中的 refunded 表示积分已退还;credits 仍保留原预扣积分数量,失败响应不包含 data 字段。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed"
}

Webhook

在创建任务的请求中设置 callback_url,当任务完成或失败时,系统将向该地址发送 JSON POST 请求。接收端需在 15 秒内返回 2xx 响应。若推送失败系统会重试,请根据任务 ID(id)在您的接收端做好幂等处理。

你的回调接口需支持接收 POST 请求及 JSON 格式的请求体(Content-Type: application/json)。

创建带有 Webhook 回调的任务

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

任务完成回调:返回生成的视频结果

视频生成成功后,系统会发送 status 为 completed 的回调。你可以通过 id 关联对应任务,从 data.results 获取视频地址,并在 data.video_expires_at 指定的过期时间前下载并保存视频。

created_at 为回调事件创建时间,task_created_at 为任务创建时间,均为 Unix 秒级时间戳。示例展示推荐使用的字段,实际响应可能包含额外字段。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

任务失败回调:返回失败原因和退款信息

视频生成失败后,系统会发送 status 为 failed 的回调。你可以通过 id 关联对应任务,从 failed_reason 查看失败原因,从 credits_refunded 查看已退还的积分数量。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed",
  "credits_refunded": 65
}

接收端代码示例

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

此 Next.js 示例直接读取回调的 JSON 请求体,分别处理任务完成和失败两种状态。实际接入时,请补充数据存储及按任务 ID 去重的逻辑;耗时操作建议先放入队列,再及时返回响应。

媒体文件要求与限制

  • 所有媒体和回调 URL 必须使用公网可访问的 HTTPS 协议。请勿使用 localhost、局域网 IP 以及需要 Cookie 或登录权限的链接。参考视频或音频的 URL 必须能直接读取到媒体流文件。
  • 单个视频不得超过 100 MB。
  • 单个音频文件不得超过 15 MB。
  • 合计最多 15 个参考素材文件