Generate video
POST /api/v1/generate — the API picks text-to-video or image-to-video from the body.
- Text-to-video:
promptonly - Image-to-video:
prompt+image_url - Multi-image (Veo 3.1 and models with reference mode):
reference_image_urls
| Parameter | Required | Notes |
|---|---|---|
| model | No | flux-3, higgsfield_v1, kling-3, kling-4, kling-4-flash, seedance-25, wan-3, gemini-omni, veo3, veo-31, grok-imagine-1-5, seedance-2, nanobanana-video, ltxv-2, ltxv-13b, veo2, minimax-h3, seedance-2-mini, wan-25 |
| prompt | Yes | Max 1000 characters |
| image_url | No | jpg, png, gif, webp — enables I2V |
| reference_image_urls | No | 1–5 URLs for supported models |
| duration | No | Seconds; model- and plan-dependent |
| resolution | No | 480p, 720p, 1080p, 4K if supported |
| upscale | No | 1080p or 4k: the finished clip is upscaled (Lanczos + sharpening, H.264) before delivery, usually in 10 to 60 seconds. 4K is part of the Unlimited plan. Status stays in_progress until the upscaled file is ready. Automatic when resolution is 1080p (or 4k); send "upscale": "none" to turn it off. |
| aspect_ratio | No | 16:9, 4:3, 1:1, 9:16 — T2V |
| seed | No | -1 for random |
| camera_fixed | No | boolean |
| add_audio | No | AI SFX overlay when supported |
| audio_prompt | No | Guides SFX if add_audio is true |
curl -X POST "https://videogenapi.com/api/v1/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kling-3","prompt":"A cat playing with a ball in a sunny garden","duration":5}'
Upscale to 1080p or 4K
Ask for "resolution": "1080p" and the clip is delivered in 1080p, upscaled when the model renders it smaller. You can also send "upscale": "1080p" (or "4k" on the Unlimited plan) with any model, or "upscale": "none" to keep the native output. When the clip is ready it is upscaled, then status turns completed with the same video_url, now in the higher resolution, and an upscale object (target, status, width, height). Clips already at or above the target are delivered as they are. If the upscale cannot finish, the original clip is delivered with upscale.status: "failed".
curl -X POST "https://videogenapi.com/api/v1/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"seedance-25","prompt":"Slow dolly in on a ceramic mug, morning light","image_url":"https://example.com/mug.jpg","upscale":"1080p"}'
Poll status with the returned id. Hubs: text-to-video, image-to-video.