Claude Opus 5.5 is live on SeedRouter
LogoSeedRouter

Search models by name, e.g. 'nano banana'

Search models by name, e.g. 'nano banana'

Video

Kling 3.0

View Markdown

Generate 3–15 second Kling 3.0 clips from text or from a first and last frame, with optional native sound, multi-shot prompts and reusable elements, delivered as a task.

Kling 3.0 is Kuaishou's video generation model. One request makes a 3–15 second clip from a prompt, or from a first frame and an optional last frame, at three quality modes (std, pro, 4K), with native sound when you ask for it. A clip can also be a sequence of up to five shots, each with its own prompt and length. Send the request, keep the returned task ID, and read the finished video from the task. Images go in as URLs.

Model IDs

Model IDInputsModesLength
kling-3-0text, first and last frame, elementsstd, pro, 4K3–15 seconds

See the model page for current prices.

Quick example

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-3-0",
    "prompt": "A red paper boat drifting on a calm pond at sunrise, soft mist on the water, slow push-in, no text, no logos.",
    "mode": "pro",
    "duration": 5,
    "aspect_ratio": "16:9"
  }'

Endpoint

POST https://api.seedrouter.ai/v1/videos/generations
HeaderValue
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

The response is a task ({"id": "task_...", "status": "processing"}), not the finished video. Poll GET /v1/tasks/{task_id} for the result. Keep API keys in server-side code.

Parameters

FieldTypeDefaultNotes
modelstringrequiredkling-3-0
promptstringrequired for a single shotUp to 2,500 characters. Optional in multi-shot mode.
image_urlsarray of URLsnoneUp to 2 images: the first is the first frame, the second the last frame. Without images the clip is text to video.
modeenumprostd, pro or 4K (uppercase K).
durationinteger53–15 seconds.
aspect_ratioenum16:916:9, 9:16 or 1:1.
soundbooleanfalseGenerate native sound with the video.
multi_shotsbooleanfalseMake the clip from the shots in multi_prompt.
multi_promptarraynoneUp to 5 shots, each {"prompt", "duration"}: a prompt of up to 500 characters and a whole number of seconds from 1 to 12. Required when multi_shots is true.
kling_elementsarraynoneUp to 3 elements, each {"name", "description", "element_input_urls"} with 2–4 image URLs.

The schema is strict: unknown fields are rejected rather than ignored. callback_url is not available; poll the task instead.

Multi-shot clips

Set multi_shots to true and describe each shot in multi_prompt. The shot durations must add up to 3–15 seconds; that sum is the clip length, and duration is not used. prompt can be left out or used for what every shot shares.

{
  "model": "kling-3-0",
  "mode": "pro",
  "multi_shots": true,
  "multi_prompt": [
    {"prompt": "A red paper boat on a calm pond at sunrise, wide shot", "duration": 3},
    {"prompt": "The boat drifts under a small wooden bridge, low angle", "duration": 3}
  ]
}

Elements

An element is a subject the model keeps consistent across the clip: a person, a product or a character. Give it a name, a short description and 2–4 images of it, then mention it by name in the prompt (for example @hero).

{
  "model": "kling-3-0",
  "prompt": "@hero slowly turns toward the camera in soft window light",
  "kling_elements": [
    {
      "name": "hero",
      "description": "a young woman with short black hair and a yellow raincoat",
      "element_input_urls": ["https://example.com/hero-front.png", "https://example.com/hero-side.png"]
    }
  ]
}

Media inputs

Every image is a public HTTP(S) URL. Base64 data URIs are not accepted: upload the file to your own storage and pass its URL. Use JPG or PNG images of 10 MB or less.

Pricing dimensions

Check the model pricing section for current rates. Kling 3.0 is billed per second of video, at a rate set by the mode and by whether sound is on:

billed seconds = duration                      (single shot)
billed seconds = Σ multi_prompt[].duration     (multi_shots: true)
cost = billed seconds × rate per second

The billed seconds are known when the request is accepted, so the amount reserved is the amount charged. View final charges in your account usage history. Failed tasks are not charged.

Output schema

Submission returns the task:

{"id": "task_...", "model": "kling-3-0", "status": "processing", "created_at": 1789689600}

Get the task

GET https://api.seedrouter.ai/v1/tasks/{task_id}

Poll every 10–20 seconds until status is completed or failed. A network timeout while polling does not mean generation failed: keep the task ID and resume checking it. Do not create another task to check progress.

Completed task

{
  "id": "task_...",
  "model": "kling-3-0",
  "status": "completed",
  "created_at": 1789689600,
  "finished_at": 1789689710,
  "output": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
  }
}

In our tests a 3-second std clip came back as MP4 (H.264) at 1280 × 720, and a 5-second pro clip with sound at 1920 × 1080 with an audio track, each in about two to three minutes.

Errors

Requests rejected before a task is created return an HTTP error with an error object and are not charged. A task that fails after acceptance returns HTTP 200 when queried, with status: "failed" and an error object.

See the shared error catalog for codes, HTTP statuses, and retry guidance.

{
  "id": "task_...",
  "model": "kling-3-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

If submission itself times out, check your tasks before submitting again: the first request may have been accepted.

Tips

  • Describe subject, place, camera move and light in one sentence each; Kling follows camera language such as "slow push-in" and "low angle".
  • Draft in std, then render the final shot in pro or 4K with the same request.
  • Use a first and a last frame to control where a shot starts and ends.
  • Split a scene into shots with multi_prompt instead of describing several cuts in one prompt.
  • Add no text, no logos to keep invented marks out.