All models / Video / kling-video-v3
kling-video-v3
model id: kling-v3/{host_id}
Text in → Video out
Hosts
Don’t know how to select a host? Check Provider selection.
| Host | 720p | 1080p | 2160p |
|---|---|---|---|
| Tencent TokenHub | $0.084 / s | $0.112 / s | $0.42 / s |
| MachGen | $0.067 / s | $0.09 / s | $0.336 / s |
| Pika | $0.068 / s | $0.09 / s | — |
| kie.ai | $0.07 / s | $0.09 / s | $0.335 / s |
| Novita | $0.084 / s | $0.112 / s | $0.42 / s |
| WaveSpeedAI | $0.084 / s | $0.112 / s | $0.42 / s |
| TOAPIS | $0.084 / s | $0.112 / s | — |
| SandBase | $0.0882 / s | $0.1176 / s | $0.294 / s |
| OpenRouter | $0.14 / s | — | — |
0% additional markup beyond our 2% platform fee.
Playground
Only one of these two tabs is sent — a model can't take both a start/end image and reference files in the same call.
Output
Nothing generated yet
# create
import requests
resp = requests.post(
"https://videorouter.sh/api/v1/videos",
headers={"Authorization": "Bearer llmr_sk_...", "Content-Type": "application/json"},
json={"model": "kling-v3", "prompt": "A drone shot flying over snowy mountains", "duration_secs": 5},
)
job = resp.json()
# poll
status = requests.get(
f"https://videorouter.sh/api/v1/videos/{job['id']}",
headers={"Authorization": "Bearer llmr_sk_..."},
).json()
print(status["status"]) # pending -> in_progress -> completed