fix(seedance2): avoid sending first_frame with reference images
Kie rejects the call when both reference_image_urls and first_frame_url
(or last_frame_url) are populated — the API treats them as mutually
exclusive scene modes. Two changes:
1. kie.ts submit: skip the legacy image fallback whenever any
schema-driven image key was already handled via dynamicInputs. The
executor passes both `images` and `dynamicInputs`, so the fallback
was duplicating user-provided references into first_frame_url.
2. seedance2 I2V schema: mark first_frame_url optional and note the
mutual exclusivity in the handle descriptions so users see it in
the node UI.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
{name:"first_frame_url",type:"image",required: true,label:"First Frame",description:"Starting frame of the generated video."},
{name:"first_frame_url",type:"image",required: false,label:"First Frame",description:"Starting frame. Mutually exclusive with Reference Images."},
{name:"last_frame_url",type:"image",required: false,label:"Last Frame",description:"Optional end frame — the video interpolates between first and last."},
{name:"last_frame_url",type:"image",required: false,label:"Last Frame",description:"Optional end frame — interpolates from First to Last. Mutually exclusive with Reference Images."},
{name:"reference_image_urls",type:"image",required: false,isArray: true,label:"Reference Images",description:"Up to 9 supplementary reference images for style/subject guidance."},
{name:"reference_image_urls",type:"image",required: false,isArray: true,label:"Reference Images",description:"Up to 9 reference images for style/subject guidance. Mutually exclusive with First/Last Frame."},
{name:"reference_video_urls",type:"image",required: false,isArray: true,label:"Reference Videos",description:"Up to 3 reference videos (uses image handle; accepts video data URLs)."},
{name:"reference_video_urls",type:"image",required: false,isArray: true,label:"Reference Videos",description:"Up to 3 reference videos (accepts video data URLs over the image handle)."},
{name:"reference_audio_urls",type:"audio",required: false,isArray: true,label:"Reference Audio",description:"Up to 3 reference audio clips."},
{name:"reference_audio_urls",type:"audio",required: false,isArray: true,label:"Reference Audio",description:"Up to 3 reference audio clips."},
],
],
},
},
@ -910,10 +910,10 @@ function getKieSchema(modelId: string): ExtractedSchema {
{name:"first_frame_url",type:"image",required: true,label:"First Frame",description:"Starting frame of the generated video."},
{name:"first_frame_url",type:"image",required: false,label:"First Frame",description:"Starting frame. Mutually exclusive with Reference Images."},
{name:"last_frame_url",type:"image",required: false,label:"Last Frame",description:"Optional end frame — the video interpolates between first and last."},
{name:"last_frame_url",type:"image",required: false,label:"Last Frame",description:"Optional end frame — interpolates from First to Last. Mutually exclusive with Reference Images."},
{name:"reference_image_urls",type:"image",required: false,isArray: true,label:"Reference Images",description:"Up to 9 supplementary reference images for style/subject guidance."},
{name:"reference_image_urls",type:"image",required: false,isArray: true,label:"Reference Images",description:"Up to 9 reference images for style/subject guidance. Mutually exclusive with First/Last Frame."},
{name:"reference_video_urls",type:"image",required: false,isArray: true,label:"Reference Videos",description:"Up to 3 reference videos (uses image handle; accepts video data URLs)."},
{name:"reference_video_urls",type:"image",required: false,isArray: true,label:"Reference Videos",description:"Up to 3 reference videos (accepts video data URLs over the image handle)."},
{name:"reference_audio_urls",type:"audio",required: false,isArray: true,label:"Reference Audio",description:"Up to 3 reference audio clips."},
{name:"reference_audio_urls",type:"audio",required: false,isArray: true,label:"Reference Audio",description:"Up to 3 reference audio clips."},