kling-3-0-turbo
Kuaishou Kling 3.0 Turbo on reAPI — fast async text-to-video and image-to-video at 720p / 1080p, billed per second on one OpenAI-compatible endpoint.
Kuaishou's Kling 3.0 Turbo on reAPI — the fast tier of Kling 3.0 for
text-to-video and image-to-video (first frame), at 720p or
1080p. One async endpoint: 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-turbo",
"prompt": "a corgi running on the beach, cinematic, golden hour",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 5
}'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-turbo",
"prompt": "a corgi running on the beach, cinematic, golden hour",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 5,
},
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-turbo",
prompt: "a corgi running on the beach, cinematic, golden hour",
resolution: "1080p",
aspect_ratio: "16:9",
duration: 5,
}),
});
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-turbo",
"prompt": "a corgi running on the beach, cinematic, golden hour",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 5,
})
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-turbo",
"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
first_frame_image.promptis required, andaspect_ratioapplies. - Image-to-video — pass
first_frame_image(a public HTTPS URL). The clip starts from that frame,promptis optional, andaspect_ratiois ignored (the frame fixes the ratio).
Multi-shot direction is expressed inside the prompt (describe each shot);
there is no dedicated multi-shot field.
Request body
model — string, required
Must be kling-3-0-turbo.
prompt — string
Up to 3,072 characters (recommended ≤ 2,500). Required for text-to-video; optional in image-to-video (omit it to animate purely from the first frame).
first_frame_image — string, optional
Start frame for image-to-video. Public HTTPS URL only — base64 / data:
URIs are rejected at the gateway. JPG / JPEG / PNG, ≤ 50 MB, ≥ 300 px, with an
aspect ratio between 1:2.5 and 2.5:1.
resolution — string, default 720p
Output clarity tier: 720p or 1080p. Billed per second at the tier's rate.
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. Text-to-video only. When first_frame_image
is supplied (image-to-video), this field has no effect — the output ratio is
determined by the first frame. Set it only for text-to-video.
watermark — boolean, optional
Add a watermark to the output video. Omitted by default (no watermark).
Modality is auto-detected: supply first_frame_image for image-to-video, omit
it for text-to-video. You never set a mode flag.
Pricing
Kling 3.0 Turbo bills per second, by resolution tier (resolution):
credits = ceil(per_second_usd × seconds × 1000)where 1 credit = $0.001 USD and seconds is duration. The 1080p tier
carries a higher per-second rate than 720p. 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-turbo",
"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 3072 chars, out-of-range
duration, a non-HTTPSfirst_frame_image, an invalidresolutionoraspect_ratio) →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 Turbo reads it; there is no dedicated camera-control parameter.
- Draft at
720pto iterate cheaply, then re-run the winner at1080pfor delivery — same call, one parameter change. - For image-to-video, the first frame fixes the aspect ratio, so you can skip
aspect_ratioin that mode. - Reach for the full Kling 3.0 when you need multi-shot control, native audio, or 4K; Kling 3.0 Turbo trades those for speed and a lower per-second cost.