"Video to anime" and "video to cartoon" are two of the most-searched video effects on the web — and unlike a one-tap filter, doing them well means keeping every frame of the original motion while completely repainting the look. That is exactly what a video-to-video restyle model does. On hiapi you get one through kling-3.0-omni/transformation: hand it a single source clip and a style prompt, and it returns the same shot — same camera move, same timing, same action — rendered as anime, as a cartoon, or in any style you can describe.
This is a video-to-video workflow, not an image filter. If you want to restyle a still photo instead, see how to restyle images with AI; this guide is about temporally-consistent restyling across a moving clip, which has its own concerns: a single input video, a resolution tier, and per-second billing.
Everything below was run on the live endpoint. The source clip, the anime version, and the cartoon version are the actual files the model returned — same four-second take, three different looks.
The source clip we restyle
Start with any MP4 the platform can reach over a public URL — a phone recording, a screen capture, or a rendered clip. For a clean side-by-side we use one short, photorealistic clip of a person turning toward the camera with a soft smile. Here is the untouched original:
The job of kling-3.0-omni/transformation is to keep that head-turn, the hair movement, the blink, and the framing exactly, and change only the rendering. The lever for "keep the motion, change the look" is not a strength slider — it is one sentence in your prompt. Every recipe below ends with a preservation clause that tells the model to hold the action and restyle only the visuals.
If you just want the raw request/response mechanics — auth, the /v1/tasks body, polling, and a full Python client — read the companion kling-3.0-omni/transformation API guide. Here we focus on the styles and the prompts.
Video to anime
Anime has a specific visual grammar: clean ink outlines, large expressive eyes, flat cel-shaded color fills with hard-edged shadows, and a limited, slightly nostalgic palette. Name those traits explicitly — "make it anime" alone is too vague and tends to drift toward generic illustration.
This is the exact prompt we sent, copy-paste ready:
Restyle this clip as 2D Japanese anime: clean hand-inked outlines, large
expressive eyes, flat cel-shaded color fills with hard-edged shadows, soft
anime skin tones, a bright 1990s TV-anime palette, and a faint paper grain.
Keep the exact camera motion, framing, timing, and the woman's head-turn,
blink, and breathing from the source completely unchanged — restyle only the
look, never the action.
The result — note how the smile, the head angle, and the hair all survive, but the shading, eyes, and palette are pure cel animation:
Why each part of the prompt matters:
- "clean hand-inked outlines" + "large expressive eyes" are the single most recognizable anime cues; drop them and you often get a painterly, non-anime illustration.
- "flat cel-shaded color fills with hard-edged shadows" forces the signature two-tone shading instead of smooth photographic gradients.
- "1990s TV-anime palette" anchors a period look so colors land warm and slightly desaturated rather than hyper-saturated.
- The preservation clause is non-negotiable. Without it the model is free to re-pose the subject or re-time the motion, which breaks the illusion that it is your footage, just animated.
Video to cartoon
A Western cartoon is a different target from anime, and the prompt has to say so. Where anime leans on flat cel shading and fine linework, a modern cartoon look wants thicker outlines, rounder and slightly exaggerated features, and bright, glossy color with smooth gradient shading. Swapping the word "anime" for "cartoon" is not enough — you rebuild the style block.
Restyle this clip as a modern Western animated cartoon: thick bold black
outlines, simplified and slightly exaggerated features, bright saturated flat
colors with smooth gradient shading, rounded shapes, and a glossy
Saturday-morning-cartoon finish. Preserve the original camera movement,
framing, timing, and the subject's exact motion — change only the rendering
style, not what happens.
Put the anime and cartoon versions side by side and the difference is obvious even though they came from the identical source: the anime pass has sharper cel edges, flatter fills, and larger eyes; the cartoon pass has warmer, rounder, more three-dimensional shading and a chunkier outline. That contrast is the whole reason to control the style with a descriptive block rather than a single keyword — the model renders what you specify.
Custom restyle: one formula for any look
Anime and cartoon are just two points in a huge space. The same endpoint will push your clip toward watercolor, oil painting, claymation, pixel art, cyberpunk neon, or an inked comic — and you drive all of them with the same two-part formula:
- A style block — three to six concrete visual traits (line, shading, palette, texture, era/mood). Be specific; adjectives like "beautiful" or "stylish" do nothing.
- A preservation clause — "keep the exact camera motion, framing, timing, and subject movement from the source unchanged; restyle only the look."
To show the formula generalizes, here is a third pass on the same clip aimed at an inked graphic-novel comic:
Restyle this clip as an inked graphic-novel comic panel: heavy black ink
linework, cross-hatched shadows, a limited duotone palette of deep teal and
warm cream, visible halftone dot shading, and a printed-paper texture. Keep
the camera motion, framing, timing, and the woman's movement identical to the
source — restyle the visuals only.
Three completely different looks, one source take, one formula. When you adapt it, change only the style block and leave the preservation clause intact. The same prompt-engineering idea applies to still images — the image restyle guide walks through building style blocks for single-frame i2i transfer if you want to practice on photos first.
Resolution, duration and per-second cost
Three things decide what a restyle costs and how it behaves. All three were confirmed against the live schema and the current hiapi pricing.
Resolution is the only quality/price tier, and the field accepts exactly three lowercase values: 720p, 1080p, or 4k. Pricing is per second of output:
| Resolution | Price per second | ~4-second clip |
|---|---|---|
720p | $0.143 | ≈ $0.57 |
1080p | $0.193 | ≈ $0.77 |
4k | $0.479 | ≈ $1.92 |
For social clips, QA passes, and style exploration, 720p is the right default — all three examples above were rendered at 720p, and inline on a web page you would be hard-pressed to justify the 3.3× jump to 4K. Step up to 1080p or 4k only for a final hero cut.
Duration is set by your source, not by a parameter. There is no duration field on this endpoint — the output length matches the input clip. The practical consequence: trim your source before you submit. A four-second clip costs a fraction of a twenty-second one at the same resolution, so cut to the beat you actually need rather than restyling dead frames.
Input is a single video. The schema takes exactly one URL in video_urls (more than one is rejected), and that URL has to be publicly reachable so the platform can fetch it. One clip in, one restyled clip out.
Batch restyle in Python
Because restyle is prompt-driven, running "video to anime" across a whole folder is just the same request in a loop. Submit every task first — they render in parallel on the platform — then poll each one and download the result immediately, since output URLs are short-lived signed links.
import os, time, requests
BASE = "https://api.hiapi.ai/v1/tasks"
HEAD = {"Authorization": f"Bearer {os.environ['HIAPI_KEY']}",
"Content-Type": "application/json"}
ANIME = (
"Restyle this clip as 2D Japanese anime: clean hand-inked outlines, large "
"expressive eyes, flat cel-shaded color fills with hard-edged shadows, a "
"bright 1990s TV-anime palette. Keep the exact camera motion, framing, "
"timing, and subject movement from the source unchanged — restyle only the look."
)
clips = [
"https://example.com/clips/take01.mp4",
"https://example.com/clips/take02.mp4",
]
# 1) Fire off every restyle task.
task_ids = []
for url in clips:
body = {"model": "kling-3.0-omni/transformation",
"input": {"prompt": ANIME, "video_urls": [url], "resolution": "720p"}}
r = requests.post(BASE, headers=HEAD, json=body, timeout=60).json()
task_ids.append(r["data"]["taskId"])
# 2) Poll each task to a terminal state, then grab the output URL.
for tid in task_ids:
while True:
task = requests.get(f"{BASE}/{tid}", headers=HEAD, timeout=30).json()["data"]
if task["status"] == "success":
out = task["output"][0]["url"] # download this now — it expires
print(tid, "->", out)
break
if task["status"] == "fail":
print(tid, "FAILED", task.get("error"))
break
time.sleep(5)
Change ANIME to your cartoon or custom style block and the same loop restyles the batch into that look instead. If your goal is to give a whole short-form feed one consistent style — the "look preset" pattern — the transformation short-form workflow goes deeper on applying one preset across a clip library, and the broader Kling 3.0 Omni API guide covers the model's other endpoints (text-to-video, image-to-video, reference-to-video). For the exact async request/response contract and error handling, the async tasks docs are the reference.
FAQ
How do I turn a video into anime? Upload the clip to a public URL, call kling-3.0-omni/transformation with a prompt that names concrete anime traits (cel shading, ink outlines, large eyes) plus a clause telling the model to keep the original motion, and set resolution to 720p, 1080p, or 4k. The copy-paste anime prompt above works as-is.
What's the difference between video-to-anime and video-to-cartoon here? Only the style block in your prompt. The model, the endpoint, and the input are identical — anime asks for flat cel shading and fine linework, a cartoon asks for thick outlines and glossy rounded shading. The outputs differ because the prompts describe genuinely different looks, not because you flipped a mode.
Is there a free way to do this? No — restyle is billed per second of output ($0.143/s at 720p), so even a short clip costs a few cents to under a dollar. There is no free tier for this model, but a four-second 720p test is roughly $0.57.
How long can the source clip be? The output length follows your input, and cost scales with it. Keep source clips short and trimmed; long inputs cost proportionally more and take longer to render.
Does it keep the original audio? This endpoint restyles the visuals; treat the output as a silent restyled clip and re-attach or replace audio in your editor afterward.
Can I restyle a still photo the same way? For a single image, use an image-to-image model instead — see the image restyle guide. Use kling-3.0-omni/transformation when you need the style applied consistently across a moving clip.
Takeaways
Pick your look, describe it concretely, and let one source clip become anime, cartoon, or anything else you can specify — then scale it with a short loop.
Ready to turn your own footage into anime or a cartoon? Grab a short clip and run the prompts above on the kling-3.0-omni/transformation model page.




