veo3_fasttext-to-videoimage-to-videoreference-to-videooutputs videodocs.kie.aipast runsSupports reference-to-video, which renders 8-second clips only. Non-unified transport: POSTs a FLAT body to /api/v1/veo/generate and polls /api/v1/veo/record-info, which reports successFlag (0 generating, 1 success, 2 and 3 failed) instead of a state string. DOC CONFLICT: enableTranslation is documented as "Default value is true" in prose and `default: false` in the schema; the schema is transcribed. The page`s example block shows a `seeds` field that does not exist in `properties` and is deliberately absent here. Kie reports no creditsConsumed on this transport. Companion endpoints /veo/get-1080p-video, /veo/get-4k-video and /veo/extend act on a finished task and are not wired up.720p/1080p/4k · 4/6/8s · takes image
aspect_ratio vs ratio vs image_size — the same idea, two names67 modelsCopying a payload between these models silently drops the field, because the receiving model has never heard of that key. uses aspect_ratio: kling-2.6/text-to-video, kling/v2-5-turbo-text-to-video-pro, kling/v2-1-master-text-to-video +52 — uses ratio: wan/2-7-text-to-video — uses image_size: bytedance/seedream, bytedance/seedream-v4-text-to-image, bytedance/seedream-v4-edit +10. google/nano-banana and google/nano-banana-edit declare more than one of these spellings, so setting two of them on the same request sets one idea twice — check which the docs mark current.
resolution accepts different values on different models57 modelsA value that works on one of these is rejected on another. accepts 1080p,720p: kling/v3-turbo-text-to-video, kling/v3-turbo-image-to-video, bytedance/v1-pro-fast-image-to-video +12 — accepts 1080p,4k,720p: kling-3.0-omni/text-to-video, kling-3.0-omni/image-to-video, kling-3.0-omni/reference-to-video +5 — accepts 1080p,480p,4k,720p: bytedance/seedance-2 — accepts 480p,720p: bytedance/seedance-2-fast, bytedance/seedance-2-mini, wan/2-2-a14b-text-to-video-turbo +1 — accepts 1080p,480p,720p: bytedance/seedance-2-5, bytedance/seedance-1.5-pro, bytedance/v1-pro-text-to-video +3 — accepts 480p,580p,720p: wan/2-2-a14b-speech-to-video-turbo, wan/2-2-animate-move, wan/2-2-animate-replace — accepts 1080P,480P,720P: wan/3-0-video, wan/3-0-video-prime — accepts 1K,2K,4K: wan/2-7-image, wan/2-7-image-pro, nano-banana-2 +8 — accepts 1080p,360p,4k,720p: google/gemini-omni-flash-1-1 — accepts 1K,2K: qwen2-1/text-to-image, qwen2-1/image-to-image, qwen3/text-to-image +3.
aspect_ratio accepts different values on different models55 modelsA value that works on one of these is rejected on another. accepts 16:9,1:1,9:16: kling-2.6/text-to-video, kling/v2-5-turbo-text-to-video-pro, kling/v2-1-master-text-to-video +4 — accepts 16:9,1:1,9:16,auto: kling-3.0-omni/image-to-video, kling-3.0-omni/reference-to-video, kling-3.0-omni/transformation — accepts 16:9,1:1,21:9,3:4,4:3,9:16,adaptive: bytedance/seedance-2, bytedance/seedance-2-fast, bytedance/seedance-2-mini +1 — accepts 16:9,1:1,21:9,3:4,4:3,9:16: bytedance/seedance-1.5-pro, bytedance/v1-pro-text-to-video — accepts 16:9,1:1,3:4,4:3,9:16,9:21: bytedance/v1-lite-text-to-video — accepts 16:9,1:1,21:9,2:3,3:2,3:4,4:3,9:16: seedream/4.5-text-to-image, seedream/4.5-edit, seedream/5-lite-text-to-image +4 — accepts 16:9,9:16: wan/2-2-a14b-text-to-video-turbo, gemini-omni-video, google/gemini-omni-flash-1-1 — accepts 16:9,1:1,3:4,4:3,9:16: wan/2-7-videoedit, wan/2-7-r2v — accepts 16:9,1:1,3:4,4:3,9:16,adaptive: wan/3-0-video, wan/3-0-video-prime — accepts 16:9,1:1,1:8,21:9,3:4,4:3,8:1,9:16: wan/2-7-image, wan/2-7-image-pro — accepts 16:9,1:1,3:4,4:3,9:16,auto: google/imagen4, google/imagen4-fast, google/imagen4-ultra — accepts 16:9,1:1,21:9,2:3,3:2,3:4,4:3,4:5,5:4,9:16,auto: google/nano-banana, google/nano-banana-edit, nano-banana-pro — accepts 16:9,1:1,1:4,1:8,21:9,2:3,3:2,3:4,4:1,4:3,4:5,5:4,8:1,9:16,auto: nano-banana-2, nano-banana-2-1, nano-banana-2-lite — accepts 16:9,9:16,Auto: veo3, veo3_fast, veo3_lite — accepts 1:1,2:3,3:2: gpt-image/1.5-text-to-image, gpt-image/1.5-image-to-image — accepts 16:9,1:1,1:2,1:3,21:9,2:1,2:3,3:1,3:2,3:4,4:3,4:5,5:4,9:16,9:21,auto: gpt-image-2-text-to-image, gpt-image-2-image-to-image — accepts 16:27,16:9,1:1,21:9,27:16,2:3,3:2,3:4,4:3,8:9,9:16,9:8,auto: gpt-image-2-5-flare-text-to-image, gpt-image-2-5-flare-image-to-image, gpt-image-2-5-sunburst-text-to-image +1 — accepts 16:9,1:1,21:9,2:3,3:2,3:4,4:3,9:16,9:21: qwen2-1/text-to-image — accepts 16:9,1:1,21:9,2:3,3:2,3:4,4:3,9:16,9:21,auto: qwen2-1/image-to-image.
image vs image_url vs image_urls vs image_input vs input_urls vs imageUrls — the same idea, two names55 modelsCopying a payload between these models silently drops the field, because the receiving model has never heard of that key. uses image: recraft/crisp-upscale, recraft/remove-background — uses image_url: kling/v2-5-turbo-image-to-video-pro, kling/v2-1-master-image-to-video, kling/v2-1-pro +16 — uses image_urls: kling-2.6/image-to-video, kling-3.0/video, kling/v3-turbo-image-to-video +16 — uses image_input: nano-banana-2, nano-banana-2-1, nano-banana-pro — uses input_urls: kling-2.6/motion-control, kling-3.0/motion-control, bytedance/seedance-1.5-pro +6 — uses imageUrls: veo3, veo3_fast, veo3_lite.
duration is not the same type on every model43 modelsSending the wrong JSON type is rejected as a 422 that names the field but not the reason. as string: kling-2.6/text-to-video, kling-2.6/image-to-video, kling/v2-5-turbo-text-to-video-pro +23 — as number: kling-3.0-omni/text-to-video, kling-3.0-omni/image-to-video, kling-3.0-omni/reference-to-video +14.
duration accepts different values on different models26 modelsA value that works on one of these is rejected on another. accepts 10,5: kling-2.6/text-to-video, kling-2.6/image-to-video, kling/v2-5-turbo-text-to-video-pro +14 — accepts 10,11,12,13,14,15,3,4,5,6,7,8,9: kling-3.0/video — accepts 10,15,5: wan/2-6-text-to-video, wan/2-6-image-to-video, wan/2-6-flash-image-to-video — accepts 10,4,6,8: gemini-omni-video, google/gemini-omni-flash-1-1 — accepts 4,6,8: veo3, veo3_fast, veo3_lite.
watermark is not the same type on every model9 modelsSending the wrong JSON type is rejected as a 422 that names the field but not the reason. as boolean: wan/2-7-text-to-video, wan/2-7-image-to-video, wan/2-7-videoedit +3 — as string: veo3, veo3_fast, veo3_lite.
Supports reference-to-video, which renders 8-second clips only. Non-unified transport: POSTs a FLAT body to /api/v1/veo/generate and polls /api/v1/veo/record-info, which reports successFlag (0 generating, 1 success, 2 and 3 failed) instead of a state string. DOC CONFLICT: enableTranslation is documented as "Default value is true" in prose and `default: false` in the schema; the schema is transcribed. The page`s example block shows a `seeds` field that does not exist in `properties` and is deliberately absent here. Kie reports no creditsConsumed on this transport. Companion endpoints /veo/get-1080p-video, /veo/get-4k-video and /veo/extend act on a finished task and are not wired up.
The form enforces these up front — it disables the conflicting control rather than letting you submit and reading back a 422.
allowedValuesWhendurationReference-to-video renders 8-second clips only.
| Field | Type | Accepts | Default |
|---|---|---|---|
promptrequiredRequired in every mode. For image-to-video, describe how the image should come alive. | text | — | — |
imageUrlscamelCase, unlike every other field in the catalog. 1 image: the video unfolds around it. 2 images: first and last frame. Reference mode: 1–3 images. | url[] | 0…3 items, image | — |
generationTypeLeave unset and Kie infers the mode from whether images are supplied. | enum | TEXT_2_VIDEO | FIRST_AND_LAST_FRAMES_2_VIDEO | REFERENCE_2_VIDEO | — |
aspect_ratioCapital "Auto" here — every other model writes it lowercase. Auto centre-crops to whichever of 16:9 or 9:16 your image is closer to. | enum | 16:9 | 9:16 | Auto | "16:9" |
resolutionHigher is slower and costs more. | enum | 720p | 1080p | 4k | "720p" |
durationSeconds, as bare numbers. Reference-to-video supports only 8. | enum | 4 | 6 | 8 | 8 |
watermarkText to burn into the generated video. | string | — | — |
enableTranslationAuto-translates the prompt to English before generating. camelCase, like imageUrls. | boolean | — | false |
enableFallbackSuperseded — the docs say to remove it. Fell back to a backup model on content-policy and upload errors; forces 16:9 at 1080p, and those results cannot be fetched at 1080p afterwards. | boolean | — | false |
The models most easily confused with this one.