wan/2-2-a14b-speech-to-video-turbospeech-to-videooutputs videodocs.kie.aipast runsThe only in-scope model exposing raw diffusion controls. Output length is num_frames / frames_per_second — the form should show the derived seconds live, since neither field is in seconds.480p/580p/720p · takes image+audio
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.
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.
seed is not the same type on every model36 modelsSending the wrong JSON type is rejected as a 422 that names the field but not the reason. as number: bytedance/v1-pro-text-to-video, bytedance/v1-pro-image-to-video, bytedance/v1-lite-text-to-video +31 — as string: google/imagen4, google/imagen4-ultra.
The only in-scope model exposing raw diffusion controls. Output length is num_frames / frames_per_second — the form should show the derived seconds live, since neither field is in seconds.
| Field | Type | Accepts | Default |
|---|---|---|---|
promptrequiredGuides video generation. | text | 0…5000 chars | — |
image_urlrequiredjpeg/png/webp, up to 10MB. | url | image | — |
audio_urlrequiredmp3/wav/ogg/m4a/flac/aac/wma/mpeg, up to 10MB. | url | audio | — |
num_framesMust be a multiple of 4. Output length is frames divided by fps. | number | 40…120, step 4 | 80 |
frames_per_secondFinal fps may shift with interpolation. | number | 4…60, step 1 | 16 |
resolutionOutput resolution tier. | enum | 480p | 580p | 720p | "480p" |
negative_promptContent that should not appear in the video. | text | 0…500 chars | — |
seedRandom seed for reproducibility. | seed | 0…2147483647, step 1 | — |
num_inference_stepsHigher gives better quality but takes longer. | number | 2…40, step 1 | 27 |
guidance_scaleHigher follows the prompt more closely but may cost quality. | number | 1…10, step 0.1 | 3.5 |
shiftShift value for the video. | number | 1…10, step 0.1 | 5 |
nsfw_checkerWhen off, results are returned directly by the model without filtering. | boolean | — | false |