Search

Search HiAPI models, tools, and resources.

Back to blog
Tutorial7 min read

Kling 3.0 Turbo API Guide: Text-to-Video and Image-to-Video

Both Kling 3.0 Turbo endpoints with curl and Python, real clips, what a clip costs, the always-on sound, and when to pick standard or Omni instead.

hiapiKlingVideo APITutorialText to Video

TL;DR

  • Kling 3.0 Turbo is the fast tier of Kling 3.0. On HiAPI it has two endpoints: kling-3.0-turbo/text-to-video and kling-3.0-turbo/image-to-video (one first frame). Both cost $0.13 per second at 720p and $0.16 at 1080p.
  • Every clip comes with sound, and there's no switch to turn it off. Clips run 3–15 seconds; a 5-second 720p clip is $0.65.
  • The request is one POST /v1/tasks and a poll. The curl and Python below run as-is. Open the text-to-video model page to try it; new accounts get 200 free credits.

Text-to-video or image-to-video

Text-to-videoImage-to-video
Model idkling-3.0-turbo/text-to-videokling-3.0-turbo/image-to-video
Requiredpromptprompt + image_urls (exactly 1 image)
Aspect ratio16:9 (default), 9:16, 1:1No field; the output follows the first frame
Length3–15 s (default 5)3–15 s (default 5)
Resolution720p (default) / 1080psame
Price per second$0.13 / $0.16$0.13 / $0.16

Live HiAPI prices, checked October 19, 2026. Failed tasks aren't charged.

Start from text when you're exploring an idea. Start from an image when the first frame has to be exact: your product, your character, your brand colors.

Clip720p1080p
4 s$0.52$0.64
5 s (default)$0.65$0.80
10 s$1.30$1.60
15 s$1.95$2.40

Text-to-video: real outputs

Low angle on rain-slicked cobblestones in an old harbor town at dusk, then one slow continuous crane up past mooring ropes and lantern-lit fishing boats, revealing the full marina glowing under a purple and orange sky. Single unbroken rising move, no cuts, stable cinematic camera, photoreal, reflections on wet stone.

Generate this prompt →

kling-3.0-turbo/text-to-video, 5 s, 720p, 16:9, $0.65.

Vertical works the same way; set aspect_ratio to 9:16:

kling-3.0-turbo/text-to-video, 5 s, 720p, 9:16, $0.65.

Longer clips can hold several beats in one shot:

kling-3.0-turbo/text-to-video, 12 s, 720p, 16:9, $1.56.

Image-to-video: real outputs

The first frame:

First frame: a ceramic pour-over coffee set in a studio

Slow smooth orbit around the coffee set, the camera circling a quarter turn to the right while keeping the carafe centered. Steam keeps rising and curling naturally, reflections slide across the glass as the angle changes. The product stays sharp and undistorted, studio lighting unchanged, no cuts.

kling-3.0-turbo/image-to-video, 5 s, 720p, $0.65.

There's no aspect_ratio on image-to-video. A 9:16 first frame gives a 9:16 clip with no cropping:

First frame: a woman in a red coat at the end of a pier, vertical

kling-3.0-turbo/image-to-video, 5 s, 720p, 9:16 from the frame, $0.65.

Write the prompt about what happens next, not a description of the frame. For a frozen action shot, say how the move finishes:

First frame: a skateboarder frozen mid-air above a concrete bowl

kling-3.0-turbo/image-to-video, 5 s, 720p, $0.65.

curl

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-3.0-turbo/text-to-video",
    "input": {
      "prompt": "A fluffy corgi puppy sprinting across a sunlit meadow in slow motion, golden hour backlight, cinematic tracking shot",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "16:9"
    }
  }'

You get a taskId back. Poll GET https://api.hiapi.ai/v1/tasks/{taskId} until data.status is success, then download data.output[0].url. The link expires, so save the file right away.

For image-to-video, change the model to kling-3.0-turbo/image-to-video, add "image_urls": ["https://your-cdn.example.com/frame.jpg"], and remove aspect_ratio.

Python: submit, poll, download

# pip install requests; export HIAPI_KEY=your-key first
import os, time, uuid, requests

API = "https://api.hiapi.ai/v1/tasks"
H = {"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"}

def generate(model, timeout_s=900, **inp):
    body = {"model": model, "input": inp}
    # Reuse the same Idempotency-Key if you retry a submit, so a retry never bills twice
    r = requests.post(API, json=body, headers={**H, "Idempotency-Key": str(uuid.uuid4())}, timeout=30)
    res = r.json()
    if res.get("code") != 200:
        raise RuntimeError(res)  # 400s list every invalid field
    task_id = res["data"]["taskId"]
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        d = requests.get(f"{API}/{task_id}", headers=H, timeout=30).json()["data"]
        if d["status"] == "success":
            return d["output"][0]["url"]
        if d["status"] == "fail":
            raise RuntimeError(d)
        time.sleep(10)
    raise TimeoutError(task_id)

# Text-to-video, vertical
t2v = generate("kling-3.0-turbo/text-to-video",
               prompt="A barista pours latte art in slow motion, steam rising, warm cafe light",
               duration=5, resolution="720p", aspect_ratio="9:16")

# Image-to-video: the frame sets the shape, so no aspect_ratio
i2v = generate("kling-3.0-turbo/image-to-video",
               prompt="Slow quarter-turn orbit around the product, steam keeps rising, no cuts",
               image_urls=["https://your-cdn.example.com/frame.jpg"], duration=5, resolution="1080p")

with open("clip.mp4", "wb") as f:
    f.write(requests.get(i2v).content)

Parameters

FieldRequiredValuesNotes
promptYesup to 2,500 charactersDialogue in quotes is lip-synced
image_urlsImage-to-video onlyexactly 1 URLjpeg or png, up to 10 MB, no SVG
durationNo3–15, default 5Billed per second
resolutionNo720p (default), 1080pNo 4K
aspect_ratioText-to-video only16:9 (default), 9:16, 1:1Image-to-video follows the frame

Errors you'll hit

All of these return HTTP 400 when you submit, so no task is created and nothing is billed:

  • additional properties 'sound' not allowed (or seed, negative_prompt): these fields don't exist on Turbo. Sound is always on.
  • additional properties 'aspect_ratio' not allowed: you sent it to image-to-video. Crop the first frame instead.
  • image_urls: maxItems: got 2, want 1: Turbo has no last frame. Standard Kling 3.0 takes a start and an end frame.
  • duration: minimum: got 2, want 3: clips start at 3 seconds.

When Turbo isn't the right tier

Per second, with sound720p1080pSilent option4K
Turbo$0.13$0.16NoNo
Kling 3.0 Omni$0.129$0.1645Yes, $0.10 / $0.129Yes
Kling 3.0 standard$0.143$0.193Yes, $0.10 / $0.129Yes
  • You need silent clips: standard or Omni with sound off is $0.10 per second at 720p.
  • You need 4K, a last frame or reference images: standard Kling 3.0 or Omni.
  • 1080p with sound: Turbo is the cheapest of the three.

Same-prompt clips from Turbo and standard: Kling 3.0 Turbo vs Kling 3.0. Full prices: Kling 3.0 Turbo API pricing.

FAQ

Can I turn the sound off?

No. There's no sound field and every clip comes with audio. Strip the track in editing, or use standard Kling 3.0 or Omni with sound off.

Can I set the aspect ratio for image-to-video?

No. The clip follows the first frame. Crop or pad the image to 16:9, 9:16 or 1:1 before you send it.

How do I keep costs down?

Iterate at 720p and 4–5 seconds, then render the keeper at 1080p. A 4-second 720p draft is $0.52.

Do prompts carry over from text-to-video?

Mostly. In image-to-video, drop the description of what's already in the frame and keep the motion, camera and sound cues.

More prompt patterns: Kling 3.0 prompt guide. For short-form workflows, see Kling 3.0 Turbo image-to-video for short-form video.

Generate it with HiAPI

Choose a model, enter your prompt, and see the result.

HiAPI Blog

Related articles

HiAPI

Generate it with HiAPI

Start generating