Kling V3.0 4K is available on Novita AI as two dedicated API endpoints: kling-v3.0-4k-t2v for text-to-video and kling-v3.0-4k-i2v for image-to-video. Both produce native 3840×2160 output, support 3–15 second durations, and follow the same asynchronous task pattern used across all Novita video APIs. If you already have Kling V3.0 Standard or Pro in your pipeline, switching to the 4K tier is a one-line model ID change.
This guide covers the 4K-specific endpoints only. For native audio generation, multi-shot composition, or per-second Standard/Pro pricing, see the Kling 3.0 launch overview on Novita AI.
When to Use Kling V3.0 4K vs Standard and Pro
The 4K tier makes sense when output resolution is the constraint — print-quality assets, large-screen display, or downstream workflows that require high-resolution source frames for compositing or cropping.
It does not replace Standard or Pro for every use case. Iteration and prompt testing are cheaper at lower resolutions, and 4K generation takes longer per task. A practical workflow is to iterate with Standard, then switch to kling-v3.0-4k-t2v or kling-v3.0-4k-i2v for the final accepted prompt.
Use kling-v3.0-4k-t2v when:
- The scene is fully describable in a prompt
- No reference image exists or matters
Use kling-v3.0-4k-i2v when:
- A specific first frame should anchor the generated clip
- You need consistent subject appearance from a source image
Step 1: Get Your Novita AI API Key
Sign up at novita.ai and generate an API key from the dashboard. New accounts include free credits. Store the key as an environment variable — do not hard-code it in source files.
export NOVITA_API_KEY="your_api_key_here"
Step 2: Model IDs and Endpoints
| Mode | Model ID | Endpoint |
|---|---|---|
| Text-to-Video | kling-v3.0-4k-t2v | POST https://api.novita.ai/v3/async/kling-v3.0-4k-t2v |
| Image-to-Video | kling-v3.0-4k-i2v | POST https://api.novita.ai/v3/async/kling-v3.0-4k-i2v |
| Result retrieval | — | GET https://api.novita.ai/v3/async/task-result?task_id=<id> |
Both endpoints accept JSON, require a Bearer token in the Authorization header, and return a task_id immediately. The actual video is retrieved separately from the task result endpoint.
Official API references:
Step 3: Send Your First Request
curl -X POST https://api.novita.ai/v3/async/kling-v3.0-4k-t2v \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A lone lighthouse on a rocky coast at golden hour, cinematic wide shot, waves crashing",
"negative_prompt": "blurry, low quality, distorted",
"duration": 5,
"aspect_ratio": "16:9",
"cfg_scale": 0.5
}'
The response returns a task_id:
{
"task_id": "t2v-kling-4k-abc123"
}
Store that ID — you need it to retrieve the result.
Step 4: Poll for the Video Result
curl "https://api.novita.ai/v3/async/task-result?task_id=t2v-kling-4k-abc123" \
-H "Authorization: Bearer $NOVITA_API_KEY"
A completed task returns a task object with status: "TASK_STATUS_SUCCEED" and a videos array:
{
"task": {
"task_id": "t2v-kling-4k-abc123",
"status": "TASK_STATUS_SUCCEED"
},
"videos": [
{
"video_url": "https://...",
"video_url_ttl": 3600,
"video_type": "mp4"
}
]
}
Typical status values: TASK_STATUS_QUEUED, TASK_STATUS_PROCESSING, TASK_STATUS_SUCCEED, TASK_STATUS_FAILED. Build your polling loop around these — do not assume a fixed wait time, since 4K generation takes longer than 1080P.
Step 5: Image-to-Video Request
The image-to-video endpoint requires an image_url in addition to prompt. The image defines the first frame; the model generates motion from it.
curl -X POST https://api.novita.ai/v3/async/kling-v3.0-4k-i2v \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "The lighthouse beam sweeps across the fog, slow dramatic movement",
"negative_prompt": "fast cuts, shake, low quality",
"image_url": "https://your-storage.example.com/lighthouse-frame.jpg",
"duration": 5,
"aspect_ratio": "16:9",
"cfg_scale": 0.5
}'
Image requirements (verify current limits in the Novita API reference):
- Formats:
.jpg,.jpeg,.png - Maximum file size: 10 MB
- Minimum dimensions: 300×300 pixels
The result retrieval step is identical to T2V — poll /v3/async/task-result with the returned task_id.
Python Examples
T2V — text to 4K video
import os
import time
import requests
API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
def submit_t2v(prompt: str, duration: int = 5, aspect_ratio: str = "16:9") -> str:
payload = {
"prompt": prompt,
"negative_prompt": "blurry, low quality",
"duration": duration,
"aspect_ratio": aspect_ratio,
"cfg_scale": 0.5,
}
resp = requests.post(
f"{BASE_URL}/v3/async/kling-v3.0-4k-t2v",
headers=HEADERS,
json=payload,
timeout=30,
)
resp.raise_for_status()
return resp.json()["task_id"]
def poll_result(task_id: str, interval: int = 10, max_wait: int = 600) -> dict:
deadline = time.time() + max_wait
while time.time() < deadline:
resp = requests.get(
f"{BASE_URL}/v3/async/task-result",
headers=HEADERS,
params={"task_id": task_id},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
status = data.get("task", {}).get("status", "")
if status == "TASK_STATUS_SUCCEED":
return data
if status == "TASK_STATUS_FAILED":
raise RuntimeError(f"Task failed: {data}")
time.sleep(interval)
raise TimeoutError(f"Task {task_id} did not complete within {max_wait}s")
if __name__ == "__main__":
task_id = submit_t2v(
prompt="A lone lighthouse on a rocky coast at golden hour, cinematic wide shot",
duration=5,
aspect_ratio="16:9",
)
print(f"Task submitted: {task_id}")
result = poll_result(task_id)
video_url = result["videos"][0]["video_url"]
print(f"Video ready: {video_url}")
I2V — image to 4K video
def submit_i2v(
prompt: str,
image_url: str,
duration: int = 5,
aspect_ratio: str = "16:9",
) -> str:
payload = {
"prompt": prompt,
"negative_prompt": "blurry, low quality",
"image_url": image_url,
"duration": duration,
"aspect_ratio": aspect_ratio,
"cfg_scale": 0.5,
}
resp = requests.post(
f"{BASE_URL}/v3/async/kling-v3.0-4k-i2v",
headers=HEADERS,
json=payload,
timeout=30,
)
resp.raise_for_status()
return resp.json()["task_id"]
Use the same poll_result function to retrieve the generated video.
Key Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
prompt | string | Yes | Scene description. Keep it specific: subject, motion, camera angle, lighting. |
negative_prompt | string | No | What to suppress: blur, shake, artefacts, unwanted styles. |
duration | integer | No | Seconds of video. Range: 3–15. Default varies — check docs. |
aspect_ratio | string | No | "16:9", "9:16", "1:1". Default: "16:9". |
cfg_scale | float | No | Prompt adherence strength. 0.5 is a safe starting value. |
image_url | string | I2V only | First-frame image. Must be a publicly accessible URL. |
Resolution and duration vs. cost
4K generation costs more per second than Standard or Pro. Before committing to a full batch:
- Test prompts with
kling-v3.0-std-t2vatduration: 3 - Switch to
kling-v3.0-4k-t2vfor accepted prompts only - Use
duration: 5for most outputs; reserve 10–15 seconds for hero clips
Pricing and Cost Estimates
Novita AI uses per-second billing for Kling V3.0 4K. Pricing for the 4K tier is higher than Standard or Pro — check novita.ai/models/kling/kling-v3.0-4k-t2v and novita.ai/models/kling/kling-v3.0-4k-i2v for current per-second rates before running production batches.
For context on the Standard and Pro tiers, the Kling 3.0 launch overview documents per-second rates for those tiers. The 4K tier is priced separately.
Cost estimation pattern for any per-second model:
- Determine duration per clip (e.g. 5 seconds)
- Multiply by rate per second
- Multiply by expected number of accepted clips
- Add a retry buffer (10–20% for prompt failures)
Troubleshooting
task_id received but result never succeeds
4K tasks take longer than 1080P equivalents. Extend your polling timeout to at least 10 minutes (max_wait=600). If the task stays in TASK_STATUS_PROCESSING beyond that, check the Novita status page or retry the request.
TASK_STATUS_FAILED with no detail
The most common causes are: prompt containing disallowed content, an invalid or unreachable image_url in I2V mode, or a duration value outside the supported range. Validate inputs and retry with a simpler prompt.
I2V image rejected
Verify the image is publicly accessible via a direct URL (no redirect or auth wall), the format is .jpg/.jpeg/.png, the file is under 10 MB, and dimensions are at least 300×300 pixels.
Unexpected output resolution The 4K endpoints target 3840×2160. If your player or downstream tool is reporting a lower resolution, check whether it is decoding the file correctly. The encoded output from the API should be native 4K.
Rate limit errors Novita AI applies rate limits per API key. For high-throughput batch workloads, check rate limit documentation and consider submitting tasks sequentially or with a small delay between requests.
FAQ
What resolution does kling-v3.0-4k-t2v produce?
Both 4K endpoints target native 3840×2160 (4K UHD) output. This is a hardware render — not an upscale from a lower resolution.
How does Kling V3.0 4K differ from V3.0 Standard and Pro?
Standard and Pro generate 1080P output. The 4K endpoints add native 3840×2160 resolution. Standard is the fastest and cheapest; Pro adds higher visual quality at moderate cost; 4K is the highest-resolution option and priced accordingly. Duration (3–15 seconds) and the async API shape are the same across all three tiers.
Can I use the 4K endpoints with the same API key as Standard and Pro?
Yes. All Kling V3.0 endpoints on Novita AI use the same Bearer token authentication. The only change between tiers is the model ID and endpoint path.
Does Kling V3.0 4K support native audio generation?
The standard audio co-generation flag available on V3.0 Standard and Pro endpoints may also be supported on the 4K tier. Check the T2V and I2V API reference pages for the current parameter list including any with_audio field.
How long does a 4K generation task take?
4K generation takes longer than 1080P. Expect at least 60–180 seconds for a 5-second clip, depending on queue load. Design your polling logic with a timeout of at least 10 minutes and handle TASK_STATUS_PROCESSING as a normal intermediate state.
Is the I2V endpoint useful for product or brand footage?
Yes, when the input image is clean and well-lit. The I2V endpoint preserves the first-frame composition well for stationary subjects. For complex camera movement or multi-character scenes, run a small test batch before a full production run.
