TL;DR: Resolution is a request field, not a picture quality slider, and it is not the same thing a pipeline finally delivers. Kling and Seedance 2.0 generate natively at 4K; Seedance 2.5, Veo 3.1 Lite, Runway Gen-4.5, Luma Ray 3.2 and Pika 2.5 don't, and where 4K shows up on those surfaces anyway, it came from a separate upscale call with its own billing, not the generation request.
Resolution and aspect ratio are different fields on every model checked here, and this page only covers resolution. If you need the ratio side of the equation, post 362 covers aspect ratio and platform specs for AI video in full, including the vendors where the two genuinely couple. This page also isn't about how long a clip runs; post 234 is the duration reference, and Kling's 15-second, 4K example specifically is its own page. Frame rate and motion strength are separate settings again, covered elsewhere in this cluster.
What's the Difference Between Generation Resolution and Delivery Resolution?
Generation resolution is the number the model actually renders at, set before the job starts. Delivery resolution is what lands in your hands afterward, and on several vendors those two numbers are produced by two entirely different systems, not one field with two settings.
Runway is the cleanest example, because its flagship gen4.5 model exposes no resolution field at all. Its text_to_video request takes only ratio, one of 1280:720 or 720:1280, described in Runway's own API reference as "The resolution of the output video." There is no 1080p option and no 4K option on that endpoint. The only way to get a 4K file out of Runway is a separate call, POST /v1/video_upscale, running a distinct model named magnific_video_upscaler_creative, whose own resolution field takes 720p, 1k, 2k or 4k, defaulting to 2k. Billing tracks that split exactly: generation runs a flat 12 credits per second regardless of ratio, while the upscaler is billed "per output frame, not per second of video": $0.007 per frame for 720p or 1k, $0.009 for 2k, and $0.012 for 4k, per Runway's own pricing page (accessed September 3, 2026).
MiniMax draws the same line even more explicitly. Its MiniMax-H3 create-task endpoint documents resolution as 768P or 2K, so 2K is available as a native generation setting. But MiniMax also publishes a second, separate endpoint, POST /v2/video_regeneration, whose own docs state it is built to "Regenerate a source video that meets the MiniMax-H3 768P output specifications into a 2K video." That endpoint is scoped narrowly: its own reference adds that it "only regenerates videos that meet the MiniMax-H3 768P output specifications to produce 2K output. It does not perform general-purpose processing of arbitrary videos" (platform.minimax.io, accessed September 3, 2026). It fails on anything that isn't already a qualifying MiniMax-H3 output.
Which Models Generate Natively at 4K?
Fewer than the marketing implies. Check the vendor's own resolution field on the generation call itself, not a separate feature page.
| Model | Native ceiling | 4K path |
|---|---|---|
| Kling 3.0 / 3.0 Omni | 4k | Native, same settings.resolution field as 720p/1080p |
| Dreamina Seedance 2.0 (base) | 4k | Native, same resolution field |
| Dreamina Seedance 2.5 | 1080p | Not available on this version |
| Veo 3.1 Standard & Fast | 4k | Native, forces durationSeconds: "8" |
| Veo 3.1 Lite | 1080p | Not supported at all |
| MiniMax-H3 | 2K (not labeled 4K) | 2K native, or via a separate video_regeneration task from a 768P source |
| Runway Gen-4.5 | 720p-equivalent | Separate POST /v1/video_upscale endpoint only |
LTX ltx-2-5-fast | 4K | Native, at reduced duration and frame-rate combinations |
LTX ltx-2-5-pro | 1080p | Not available on this variant |
| Luma Ray 3.2 | 1080p | No 4K or 1440p tier published at all |
| Sora 2 / Sora 2 Pro | 1080p (Pro only) | Not published |
| Wan 2.7 | 1080P | No 4K tier published |
| Pika 2.5 | 1080p | Only by switching models entirely, to a third-party Topaz upscaler |
Sources, all accessed September 2–3, 2026: kling.ai text-to-video API · BytePlus ModelArk video generation task reference · ai.google.dev Veo guide · MiniMax video generation v2 create and video regeneration · Runway API reference · docs.ltx.io/models/ltx-2-5 · Luma Agents video generation guide · OpenAI video generation guide and API reference · Alibaba Cloud Wan text-to-video reference.
Kling is the one model here where 4K costs nothing structurally. Its own settings.resolution field takes 720p, 1080p or 4k right next to settings.duration, with no clause coupling the two: the same request can ask for 4k and 15 seconds together. Post 245 covers that specific example, plus Kling's per-second cost at each resolution tier. Seedance splits by version instead of by field: BytePlus's own reference documents Seedance 2.5's resolution field as defaulting to 720p, with 480p, 720p and 1080p as its only supported values, while Seedance 2.0's equivalent entry adds 4k to that same list. The newer, more capable version of the model is the one that lost the top resolution tier, worth knowing before assuming a higher version number beats a lower one on every axis.
What Does Each Vendor's Resolution Field Actually Look Like?
The field name, and the exact case of every value, differ enough between vendors that copying one convention into another vendor's request is a real way to get a request rejected outright.
| Vendor | Field | Enum, exactly as documented |
|---|---|---|
| Google Veo 3.1 (Gemini API) | resolution | "720p" (default), "1080p", "4k", all lowercase |
| Kling 3.0 Omni | settings.resolution | 720p (default), 1080p, 4k, all lowercase |
| Dreamina Seedance (all versions) | resolution | 480p, 720p, 1080p, and 4k on 2.0 base only, all lowercase |
| OpenAI Sora | size | Pixel dimensions, e.g. "1280x720", not a resolution word at all |
| MiniMax-H3 | resolution | 480P, 768P, 2K, uppercase P and uppercase K |
| Alibaba Wan 2.7 | resolution | 720P, 1080P, uppercase P, no 480p tier |
| LTX 2.5 | resolution | Exact pixel string ("1280x720"), though docs label the tiers 720p/1080p/1440p/4K in prose |
| Luma Ray 3.2 | video.resolution | 360p, 540p, 720p (default), 1080p, all lowercase |
| Grok Imagine 1.5 (xAI) | resolution | 480p (default), 720p, 1080p, all lowercase |
| Runway Gen-4.5 | ratio (no resolution field) | 1280:720, 720:1280 for text-to-video |
Runway video_upscale | resolution | 720p, 1k, 2k, 4k, all lowercase, default 2k |
Does Resolution Change Anything Besides Sharpness?
On at least one model, yes, directly and by the vendor's own account. OpenAI's Sora 2 Prompting Guide states: "Video resolution directly influences visual fidelity and motion consistency in Sora. Higher resolutions generate detail, texture, and lighting transitions more accurately, while lower resolutions compress visual information, often introducing softness or artifacts" (cookbook.openai.com, accessed September 3, 2026). That's a narrower and more specific claim than a generic higher-resolution-looks-better line: it names lighting transitions specifically, which means a size choice on Sora is also a scene-composition decision, not purely a delivery-format one.
Seedance publishes a related but distinct effect: bit depth changes with resolution tier, not just pixel count. BytePlus's own reference states: "Dreamina Seedance 2.5 1080p output and Dreamina Seedance 2.0 4K output both use 10-bit color depth and H.265/HEVC encoding." Compared with the standard 8-bit depth at lower tiers, the same reference says 10-bit "preserves richer color gradations and smoother tonal transitions, making it suitable for professional video production and HDR content" (docs.byteplus.com/en/docs/ModelArk/1520757, accessed September 3, 2026). So on Seedance, the top resolution tier for each version is also the only one that ships a wider color range, not merely more pixels.
Grok Imagine documents the opposite kind of coupling: a mode that actively throws resolution away. xAI's own video-generation docs state that video editing "does not support custom resolution. The output resolution matches the input video's resolution, capped at 720p (e.g., a 1080p input will be downsized to 720p)" (docs.x.ai, accessed September 3, 2026). A 1080p source fed into the edit endpoint comes back at 720p, regardless of what text-to-video would generate at on the same model.
Where Do Vendors Contradict Themselves on Resolution?
Twice, on two different vendors, both confirmed by reading the same page twice rather than trusting either half alone.
Google's own Veo 3.1 documentation disagrees with itself on one page. The Parameters table lists resolution for the "Veo 3 & Veo 3 Fast" column as "720p" (default), "1080p" (only supports 8s duration), and "4k" (only supports 8s duration). 4K is included. The separate "Model features" table, further down the same URL, lists the resolution for that identical column as "720p & 1080p (16:9 only)" instead, with no 4K mentioned at all (ai.google.dev/gemini-api/docs/veo, accessed September 3, 2026). The Parameters table is the one that governs what the API actually accepts.
OpenAI's own Sora surfaces disagree with each other in the opposite direction: the API reference is the stale one. The live size parameter on POST /videos is documented as accepting exactly four values: "720x1280", "1280x720", "1024x1792", "1792x1024", with no 1080 sizes anywhere in that enum. But OpenAI's own Sora 2 Prompting Guide advertises: "Higher-resolution exports – Generate videos in 1920×1080 or 1080×1920." The pricing page separately lists a 1080p row at $0.70 per second for sora-2-pro, right alongside the four sizes the reference actually documents (all accessed September 3, 2026). Two OpenAI-owned pages sell a size the reference doesn't list; read the guide or the pricing page instead. None of it stays relevant for long regardless: the same API reference marks these video endpoints deprecated, scheduled to shut down on September 24, 2026, a date this page falls about three weeks before.
How Do You Set Resolution Correctly, Per Vendor?
By sending the exact field name and case shown above, for the vendor you're calling.
Veo 3.1, Gemini API, native 4K:
{ "instances": [{ "prompt": "..." }],
"parameters": { "resolution": "4k", "durationSeconds": "8" } }
Kling 3.0 Omni, native 4K, no duration penalty:
curl --location 'https://api-singapore.klingai.com/text-to-video/kling-3.0' \
--header 'Authorization: Bearer {apikey}' --header 'Content-Type: application/json' \
--data '{"prompt":"...","settings":{"resolution":"4k","duration":15}}'
Seedance 2.5, capped at 1080p (2.5 has no 4k value at all):
{ "model": "dreamina-seedance-2-5-260628",
"content": [{ "type": "text", "text": "..." }],
"resolution": "1080p", "duration": 10 }
Runway Gen-4.5, where resolution isn't a field you can set at generation time:
{ "model": "gen4.5", "promptText": "...", "ratio": "1280:720", "duration": 6 }
Runway's separate upscale call, the only way to reach 4K on a Gen-4.5 output:
{ "model": "magnific_video_upscaler_creative",
"videoUri": "https://...", "resolution": "4k" }
MiniMax-H3, native 2K:
{ "model": "MiniMax-H3",
"content": [{ "type": "text", "text": "..." }],
"resolution": "2K", "duration": 6 }
Sora, sizing correctly for the tier you're paying for:
curl -X POST https://api.openai.com/v1/videos \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F model="sora-2-pro" -F prompt="..." -F size="1920x1080" -F seconds="8"
Wan 2.7, where the resolution field replaced an older pixel-string field:
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" -H 'Content-Type: application/json' \
-d '{"model":"wan2.7-t2v-2026-06-12","input":{"prompt":"..."},"parameters":{"resolution":"1080P","ratio":"16:9"}}'
Luma Ray 3.2, at its actual ceiling (no 4K tier exists to ask for):
{ "model": "ray-3.2", "type": "video", "prompt": "...",
"aspect_ratio": "16:9",
"video": { "resolution": "1080p", "duration": "5s" } }
Grok Imagine 1.5, native 1080p on generation, not on editing:
response = client.video.generate(
prompt="...", model="grok-imagine-video-1.5",
resolution="1080p", aspect_ratio="16:9", duration=8,
)
Wan 2.7's change is worth naming on its own, because it's a field replacement rather than an addition. Alibaba's own reference states that "wan2.7 replaces the size field. Instead, it uses a combination of resolution (resolution tier) and ratio (aspect ratio) to define output resolution. Earlier models used the size field" (alibabacloud.com, accessed September 3, 2026). Code written against wan2.6 or earlier, using a single size string like 1920*1080, sends the wrong shape to 2.7.
Does Resolution Cost Scale the Way You'd Guess?
Not proportionally, and not always on the same billing axis, which a flat price sheet hides. Veo 3.1 Standard prices audio-on video at $0.40 per second for 720p and 1080p, then $0.60 for 4k: a 1.5x jump, not the 4x you'd expect from pixel count alone (ai.google.dev/gemini-api/docs/pricing, accessed September 3, 2026). Veo 3.1 Fast and Lite follow the same shape at lower prices, and Lite has no 4k row to price at all.
Runway's two-endpoint split from earlier in this piece shows up again here as two different billing units. Gen-4.5 generation is a flat 12 credits per second, regardless of which of its two ratios you pick. The separate upscale call is billed "per output frame, not per second of video." Runway's own formula is USD = rate × fps × duration_seconds, at $0.007 per frame for 720p or 1k, up to $0.012 for 4k (docs.dev.runwayml.com, accessed September 3, 2026). A ten-second clip at 30fps through that upscaler is 300 frames, so even the cheapest 720p tier there is 300 × $0.007 ≈ $2.10. Compare that to the flat per-second generation rate before assuming upscaling is the cheap part of the pipeline.
Stop rewriting prompts. Start shipping.
Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 4.8★ on the Chrome Web Store.
Create An AccountThe rule that survives this is smaller than the tables above: check whether the field you're setting is the one the model actually renders at, or a separate step bolted on afterward. Those two things are billed differently, documented differently, and in Google's own case, described two ways on the same page.