kling-3-0
Kuaishou Kling 3.0 on reAPI — async multi-shot video, image-to-video, native multilingual audio, up to 4K, on one OpenAI-compatible endpoint.
Kuaishou's Kling 3.0 on reAPI — one async endpoint for text-to-video,
image-to-video (first/last frame), and multi-shot cinematic
sequences, with optional native multilingual audio and up to 4K.
Submit returns a task_id; poll until ready. See current pricing on the
model page.
Quick example
curl https://reapi.ai/api/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-3-0",
"prompt": "A soft anime-style girl in a field, warm sunset glow, smooth loop",
"duration": 6,
"aspect_ratio": "16:9",
"mode": "pro"
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/videos/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "kling-3-0",
"prompt": "A soft anime-style girl in a field, warm sunset glow, smooth loop",
"duration": 6,
"aspect_ratio": "16:9",
"mode": "pro",
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "kling-3-0",
prompt: "A soft anime-style girl in a field, warm sunset glow, smooth loop",
duration: 6,
aspect_ratio: "16:9",
mode: "pro",
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "kling-3-0",
"prompt": "A soft anime-style girl in a field, warm sunset glow, smooth loop",
"duration": 6,
"aspect_ratio": "16:9",
"mode": "pro",
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/videos/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "kling-3-0",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} (see the Tasks reference) until
status === "completed". The completed payload's output.video_urls holds the
generated video URL.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/videos/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; the task
endpoint returns the same envelope until completion. Polling does not consume
credits.
Modes
There is no separate model id per modality — the modality is implicit in the request shape:
- Text-to-video — no
image_urls.promptis required. - Image-to-video — pass
image_urls: index 0 is the start frame, index 1 (optional) is the end frame. Aspect ratio auto-adapts to the images. - Multi-shot — set
multi_shots: trueand providemulti_prompt(per-shot prompts + durations).
The resolution tier (std 720p / pro 1080p / 4K) is the mode field;
native audio is the sound toggle.
Request body
model — string, required
Must be kling-3-0.
prompt — string
Up to 2,500 characters. Required for single-shot; superseded by
multi_prompt in multi-shot mode.
image_urls — array, optional
First/last frame for image-to-video. Public HTTPS URLs only — base64 /
data: URIs are rejected at the gateway. Up to 2 (index 0 = first frame,
index 1 = last frame).
duration — integer, default 5
Total video length in seconds, range 3–15. Billed per second.
aspect_ratio — string, default 16:9
One of 16:9, 9:16, 1:1. Ignored (auto-adapted) when image_urls is
supplied.
mode — string, default pro
Resolution tier: std (720p), pro (1080p), or 4K.
sound — boolean, default false
Generate synchronized native audio (dialogue, lip sync, ambient sound). Audio tiers cost more per second.
multi_shots — boolean, default false
Enable multi-shot mode (a connected sequence of shots).
multi_prompt — array, optional (required when multi_shots: true)
Up to 5 shots; each item is { "prompt": string, "duration": int } where
per-shot duration is 1–12s and prompt is up to 500 chars.
{
"multi_shots": true,
"multi_prompt": [
{ "prompt": "a chef plating a dish, close-up", "duration": 4 },
{ "prompt": "pull back to a busy restaurant", "duration": 5 }
]
}kling_elements — array, optional
Up to 3 reusable @-referenced elements. Each item is
{ "name": string, "description"?: string, "element_input_urls": [string] }
with 2–4 image URLs (JPG/PNG). Reference an element in the prompt with
@name.
Multi-shot bills the sum of the per-shot durations; single-shot bills the
top-level duration.
Pricing
Kling 3.0 bills per second, by resolution tier (mode) and whether audio
is on (sound):
credits = ceil(per_second_usd × seconds × 1000)where 1 credit = $0.001 USD, and seconds is duration (single-shot) or the
sum of multi_prompt durations (multi-shot). Higher tiers and audio carry a
higher per-second rate. Failed and rejected requests are not charged.
The exact per-second credit cost for each tier surfaces on the model page and through the playground estimator before submit.
Response
The poll envelope returns the video URL in output.video_urls:
{
"id": "task_019dfd44b7fd74168541552a3260a623",
"model": "kling-3-0",
"status": "completed",
"output": {
"video_urls": [
"https://cdn.reapi.ai/...mp4"
]
}
}Generated URLs expire — mirror them to your own storage if you need long-term retention.
Errors
Failures return the standard reAPI envelope { error: { code, message, request_id } }. Common cases:
- Invalid input (prompt over 2500 chars, out-of-range
duration, a non-HTTPS media URL, more than 2image_urls, more than 5 shots) →400. - Insufficient credits →
402. - Rate limited →
429.
See the full catalog at /docs/api/errors.
Tips
- Use cinematic language in the prompt (shot type, camera move, lighting) — Kling 3.0 reads it; there is no dedicated camera-control parameter.
- For sequences, prefer multi-shot over stitching separate requests — characters stay consistent across cuts.
- For image-to-video, supply both a first and last frame to control the start and end of the motion.
- Reach for
mode: "4K"only when the destination needs it — the per-second rate is highest there.