Operation
Generate Video
Generate a video with Cannon Studio's supported video models, including prompt-only and image-guided flows.
Operation: video.generate
Submit via POST /api/v1/requests
Credits: dynamic
Seedance 2.0Seedance 2.0 FastWan 3.0Veo 3.1Sora 2GrokNano Banana
Request fields
promptmodeldurationimage_urlfirst_frame_urlsource_video_urlfirst_clip_urlreference_image_urlsend_image_urllast_frame_urlaspect_ratioresolutionaudio_urlnegative_promptprompt_extendwatermarkseednsfw_checker
Example request
{
"operation": "video.generate",
"input": {
"prompt": "A handheld chase through a crowded market at blue hour.",
"model": "wan27video",
"duration": 10,
"aspect_ratio": "16:9",
"resolution": "1080p",
"image_url": "https://example.com/start-frame.jpg",
"audio_url": "https://example.com/drive-track.mp3",
"negative_prompt": "distorted faces, warping, text overlays"
}
}curl -X POST https://www.cannonstudio.app/api/v1/requests \
-H "Content-Type: application/json" \
-H "x-api-key: $CANNON_API_KEY" \
-H "x-idempotency-key: video-generate-001" \
-d @- <<'JSON'
{
"operation": "video.generate",
"input": {
"prompt": "A handheld chase through a crowded market at blue hour.",
"model": "wan27video",
"duration": 10,
"aspect_ratio": "16:9",
"resolution": "1080p",
"image_url": "https://example.com/start-frame.jpg",
"audio_url": "https://example.com/drive-track.mp3",
"negative_prompt": "distorted faces, warping, text overlays"
}
}
JSONNotes
- Uses the same standalone video generation stack as the Cannon Studio app.
- Supports prompt-first and image-guided flows depending on the selected model.
- Wan 3.0 supports prompt-only renders, first-frame guidance, first-and-last-frame guidance, and multimodal reference-video runs.
- Wan 3.0 accepts `audio_url` as a reference for prompt-first or reference-video runs; frame-guided runs cannot combine frames with reference audio.
- Sora 2 uses 4s, 8s, 12s, 16s, or 20s durations plus portrait or landscape output sizes. Sora 2 Pro can request 1080p native sizes.
- The request object tracks the downstream video task and returns the final hosted video URL on success.
Success output
{
"task_id": "vid_123",
"asset_type": "video",
"status": "succeeded",
"video_url": "https://storage.googleapis.com/.../video.mp4",
"provider": "seedance",
"model": "seedance2",
"duration": 5,
"aspect_ratio": "16:9"
}