Make a video from an image (async)
Submits a video job from an image you own — a generation or an upload — plus a prompt. Every model the app's own video modal offers is here, with the same dials. Async — the response carries a task_id; poll GET /v1/videos/{task_id} until completed.
Models
| model | length | mode | sound | takes |
|---|---|---|---|---|
| kling-v3 (default) | 3-15s | std / pro / 4k | optional | end_frame_id — about 2 minutes |
| kling-v3-omni | 3-15s | std / pro / 4k | optional, never with a clip | up to 6 reference_image_ids, or 3 beside one reference_video_id (3-10s) whose acting and motion to keep — about 5 minutes |
| kling-video-o1 | 3-10s | std / pro | none | the same references, cheaper with a clip |
| kling-motion-control | the clip's (3-30s) | std / pro | none | reference_video_id = the movement to copy; character_orientation picks whose face |
| veo-3.1-lite-generate-preview | 4, 6 or 8s | std = 720p / pro = 1080p | always | end_frame_id |
| gemini-omni-1.1-flash | 3-10s, chosen by the model (a length in the prompt is honoured) | std = 720p native / pro, 4k upscaled | always | end_frame_id, up to 3 reference_image_ids, or reference_video_id = a clip to edit by describing the change |
| dreamina-seedance-2-5-260628 | 4-30s | lite = 480p / std = 720p / pro = 1080p | always, dialogue in sync | end_frame_id, OR up to 6 reference_image_ids and up to 10 reference_video_ids (clips to follow, 30 s in all). generation_id is optional: without it the clip follows only its references, or the prompt alone, in aspect_ratio. clip_task edits or extends reference_video_id. draft: true makes a 480p draft; finalize_draft_id renders it at 1080p — about 2-4 minutes |
Names work as well as ids: kling-3.0, kling-3.0-omni, kling-o1, veo-3.1-lite, gemini-omni-flash, seedance-2.5. GET /v1/meta returns the same table as data, and says which models are switched off for now: available: false with unavailable_reason ("Back soon", "Unavailable for technical reasons"). A request naming one answers 503 model_unavailable; with no model, the default is used while it is on, else the first open model in this table. A model asked for something it cannot do — an end frame on O1, 4K on Veo, audio with a reference clip — answers 400 validation_error with the reason in words.
Cost — read before calling
The most expensive operation on the platform, priced per second of output: the video_*_sec_* rows in GET /v1/pricing times the clip's seconds (Motion Control: the reference clip's seconds; Veo 3.1 Lite: fixed video_veo_lite_* rows). The 202 response states the exact credits_cost and the pricing_key it came from. Credits are deducted only when the video completes — a failed video costs nothing. Video requires purchased credits; trial credits return 402 video_requires_purchase.
Quote first. Send the same body with dry_run: true: every check and the planner run and the response is a 200 with status: quote and the same fields the 202 would carry, but no job exists and nothing is charged. A model asked for a dial it lacks answers the quote with the same 400 the real call would.
Request
- Base URL: https://nanostudiopro.com/api
- URL: https://nanostudiopro.com/api/v1/videos
- Auth: HTTP bearer
Request body
Response
Quote (dry_run: true): the plan and its exact price. Nothing was submitted or charged.
Changes
No recorded changes to this operation across all 2 revisions of this API.