Raw schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "The shot: subject + motion + scene (video needs motion language, e.g. \"slow push-in\")."
},
"model": {
"type": "string",
"description": "Model id from list_video_models (e.g. kling-v3, seedance-2.0-t2v, wan-2.7-t2v, topaz). Or prefer option_id from list_video_models."
},
"mode": {
"type": "string",
"enum": [
"text-to-video",
"image-to-video",
"reference-to-video",
"frame-to-frame",
"motion",
"omni",
"video-edit",
"upscale"
],
"description": "Video mode. Must be supported by the chosen model (see list_video_models)."
},
"character_orientation": {
"type": "string",
"enum": [
"image",
"video"
],
"description": "Motion mode only: follow the character image (default) or the reference video."
},
"option_id": {
"type": "string",
"description": "Optional catalog id from list_video_models (e.g. \"kling-image\"); use instead of model+mode."
},
"image_url": {
"type": "string",
"description": "Required for image-to-video / frame-to-frame / motion. Accepts EITHER a Switch asset id (from show_media / list_my_assets / upload_media) OR a public https url. An asset id is resolved server-side, so just pass the id you have โ no need to fetch a url first."
},
"end_image_url": {
"type": "string",
"description": "End frame for frame-to-frame mode."
},
"video_url": {
"type": "string",
"description": "Required for video-edit and upscale (the source clip). Must be a publicly downloadable https URL."
},
"reference_image_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "GENERIC reference images (products, scenery, outfits, style). Each entry accepts EITHER a Switch asset id (from show_media / list_my_assets / upload_media / get_my_active_references) OR a public https url โ asset ids are resolved server-side. Seedance reference/omni accepts up to 9; Kling Omni up to 7. For Seedance, at least one image or video reference is required. For a person's face/likeness use face_reference_ids instead."
},
"face_reference_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Face reference asset ids from upload_reference_asset (frame_type \"face\") โ the ONLY way to use a face/likeness reference in video. Each id is verified server-side (your own untouched original + identity verification) before the shot fires or is charged; URLs and generic uploads here are rejected."
},
"reference_video_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Seedance reference/omni only: up to 3 reference video clips for motion/style guidance. A Seedance video ref can satisfy the required visual anchor. NOTE: the AUDIO track of these clips is IGNORED โ never extracted or preserved."
},
"reference_audio_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Seedance reference/omni only: up to 3 reference audio files to drive synthesized audio. Requires at least one reference image or video."
},
"audio": {
"type": "boolean",
"description": "Omni / Seedance refs: generate audio. Omni is ON by default; set false for a silent clip. Other models ignore this. See list_video_models for which models generate audio and the max seconds with vs without audio."
},
"duration": {
"type": "string",
"description": "Clip length in seconds. Default 5. Seedance does 4-15s; Switch Video (WAN) does 5/10/15; Kling/Switch Video Edit cap at 10 โ see each model's durations in list_video_models."
},
"aspect_ratio": {
"type": "string",
"description": "e.g. 9:16, 16:9, 1:1. Must be allowed for the model (see list_video_models)."
},
"resolution": {
"type": "string",
"enum": [
"480p",
"720p",
"1080p",
"4k"
],
"description": "Output resolution. Defaults to 1080p where the model supports it. 720p is cheaper and faster. 480p is the cheapest, only on Seedance 2.0 Mini (budget tier). 4K is only on Kling v3 text/image and Kling Omni; Seedance text-to-video is 720p only. Each model lists its available resolutions in list_video_models."
},
"shots": {
"type": "array",
"description": "A storyboard of 1-10 DISTINCT shots. Each item takes the same fields as a single shot (subject, model, mode, image_url, etc.).",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "The shot: subject + motion + scene (video needs motion language, e.g. \"slow push-in\")."
},
"model": {
"type": "string",
"description": "Model id from list_video_models (e.g. kling-v3, seedance-2.0-t2v, wan-2.7-t2v, topaz). Or prefer option_id from list_video_models."
},
"mode": {
"type": "string",
"enum": [
"text-to-video",
"image-to-video",
"reference-to-video",
"frame-to-frame",
"motion",
"omni",
"video-edit",
"upscale"
],
"description": "Video mode. Must be supported by the chosen model (see list_video_models)."
},
"character_orientation": {
"type": "string",
"enum": [
"image",
"video"
],
"description": "Motion mode only: follow the character image (default) or the reference video."
},
"option_id": {
"type": "string",
"description": "Optional catalog id from list_video_models (e.g. \"kling-image\"); use instead of model+mode."
},
"image_url": {
"type": "string",
"description": "Required for image-to-video / frame-to-frame / motion. Accepts EITHER a Switch asset id (from show_media / list_my_assets / upload_media) OR a public https url. An asset id is resolved server-side, so just pass the id you have โ no need to fetch a url first."
},
"end_image_url": {
"type": "string",
"description": "End frame for frame-to-frame mode."
},
"video_url": {
"type": "string",
"description": "Required for video-edit and upscale (the source clip). Must be a publicly downloadable https URL."
},
"reference_image_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "GENERIC reference images (products, scenery, outfits, style). Each entry accepts EITHER a Switch asset id (from show_media / list_my_assets / upload_media / get_my_active_references) OR a public https url โ asset ids are resolved server-side. Seedance reference/omni accepts up to 9; Kling Omni up to 7. For Seedance, at least one image or video reference is required. For a person's face/likeness use face_reference_ids instead."
},
"face_reference_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Face reference asset ids from upload_reference_asset (frame_type \"face\") โ the ONLY way to use a face/likeness reference in video. Each id is verified server-side (your own untouched original + identity verification) before the shot fires or is charged; URLs and generic uploads here are rejected."
},
"reference_video_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Seedance reference/omni only: up to 3 reference video clips for motion/style guidance. A Seedance video ref can satisfy the required visual anchor. NOTE: the AUDIO track of these clips is IGNORED โ never extracted or preserved."
},
"reference_audio_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Seedance reference/omni only: up to 3 reference audio files to drive synthesized audio. Requires at least one reference image or video."
},
"audio": {
"type": "boolean",
"description": "Omni / Seedance refs: generate audio. Omni is ON by default; set false for a silent clip. Other models ignore this. See list_video_models for which models generate audio and the max seconds with vs without audio."
},
"duration": {
"type": "string",
"description": "Clip length in seconds. Default 5. Seedance does 4-15s; Switch Video (WAN) does 5/10/15; Kling/Switch Video Edit cap at 10 โ see each model's durations in list_video_models."
},
"aspect_ratio": {
"type": "string",
"description": "e.g. 9:16, 16:9, 1:1. Must be allowed for the model (see list_video_models)."
},
"resolution": {
"type": "string",
"enum": [
"480p",
"720p",
"1080p",
"4k"
],
"description": "Output resolution. Defaults to 1080p where the model supports it. 720p is cheaper and faster. 480p is the cheapest, only on Seedance 2.0 Mini (budget tier). 4K is only on Kling v3 text/image and Kling Omni; Seedance text-to-video is 720p only. Each model lists its available resolutions in list_video_models."
}
}
}
}
}
}