From 701675720f2cbe745d9e188042ecefede893a14d Mon Sep 17 00:00:00 2001 From: shrimbly Date: Tue, 21 Apr 2026 08:06:49 +1200 Subject: [PATCH] feat(seedance2): expose all media inputs on I2V variants Add last_frame_url, reference_image_urls, reference_video_urls, and reference_audio_urls handles to Seedance 2.0 and Seedance 2.0 Fast I2V schemas so users can seed an end frame, supplementary reference images, reference videos, and reference audio in addition to the first frame. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/app/api/models/[modelId]/route.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/api/models/[modelId]/route.ts b/src/app/api/models/[modelId]/route.ts index c0fa0dd6..d8354bab 100644 --- a/src/app/api/models/[modelId]/route.ts +++ b/src/app/api/models/[modelId]/route.ts @@ -881,7 +881,11 @@ function getKieSchema(modelId: string): ExtractedSchema { ], inputs: [ { name: "prompt", type: "text", required: false, label: "Prompt" }, - { name: "first_frame_url", type: "image", required: true, label: "Image" }, + { name: "first_frame_url", type: "image", required: true, label: "First Frame", description: "Starting frame of the generated video." }, + { name: "last_frame_url", type: "image", required: false, label: "Last Frame", description: "Optional end frame — the video interpolates between first and last." }, + { 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_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_audio_urls", type: "audio", required: false, isArray: true, label: "Reference Audio", description: "Up to 3 reference audio clips." }, ], }, "bytedance/seedance-2-fast/text-to-video": { @@ -906,7 +910,11 @@ function getKieSchema(modelId: string): ExtractedSchema { ], inputs: [ { name: "prompt", type: "text", required: false, label: "Prompt" }, - { name: "first_frame_url", type: "image", required: true, label: "Image" }, + { name: "first_frame_url", type: "image", required: true, label: "First Frame", description: "Starting frame of the generated video." }, + { name: "last_frame_url", type: "image", required: false, label: "Last Frame", description: "Optional end frame — the video interpolates between first and last." }, + { 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_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_audio_urls", type: "audio", required: false, isArray: true, label: "Reference Audio", description: "Up to 3 reference audio clips." }, ], }, "grok-imagine/text-to-video": {