API Free WeekHundreds of APIs are free to call this week.Browse free APIs
API reference · ByteDance

bytedance/seedance/2.5/reference-to-video

Integrate this model through SandBase's unified API, with production-ready schemas and examples.

VIDEOAsyncOpen model
Production endpoint

Send your first request

OpenAI-compatible endpoint with unified authentication and usage tracking.

POSThttps://api.sandbase.ai/v1/run
Model IDbytedance/seedance/2.5/reference-to-video
01

Input Schema

12 parameters · 0 required · 12 optional

ParameterTypeRequiredDescription
seedintegerOptionalRandom seed for reproducible results. Omit or use -1 for a random seed. · Min: -1 · Max: 4294967295
draftbooleanOptionalDraft mode step 1: render a fast, low-cost 480p draft (overrides `resolution`, billed at the 480p rate). Pass the result's `outputs[0].draft_id` back as `draft_id` within 7 days to render the same shot at 1080p. · Default: false
audiosstring[]OptionalThe URLs of reference audio files to guide video generation.
imagesstring[]OptionalThe URLs of reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc.
promptstringOptionalThe text prompt to generate a video from. · Min length: 3 · Max length: 50000 · Default: "Use Image1 as the visual reference and Video1 as the motion reference. Create a peaceful cinematic shoreline scene with rolling ocean waves at golden hour, soft foam, natural water movement, and no people."
videosstring[]OptionalThe URLs of reference videos to guide video generation. Up to 10 MP4 or MOV files; combined duration must not exceed 30 seconds.
draft_idstringOptionalDraft mode step 2: the `outputs[0].draft_id` of a succeeded draft from this same model (created with `draft: true` in the last 7 days). Renders the same shot at 1080p, billed at the 1080p rate for the actual output length. The prompt, media, duration, aspect ratio, seed, audio setting and task type are reused from the draft; any such fields sent with `draft_id` are ignored. · Min length: 1
durationanyOptionalOutput duration in seconds (4-30), or `auto` to let the model pick a length from the prompt and inputs. `auto` is pre-authorized at 30 seconds and billed on the actual output length. When a reference video is edited or extended, use `auto` with `adaptive` aspect ratio so the output follows the source clip. · Options: auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 · Default: 5
auto456789101112131415161718192021222324252627282930
task_typestringOptional`reference` generates a new video from the references, `edit` edits a reference video (replace subjects, add or remove objects, repaint), `extend` extends a reference video forward or backward, `auto` (or omitted) lets the model infer it from the prompt. `edit` and `extend` require at least one video; `edit` forces `adaptive` aspect ratio and `auto` duration, `extend` forces `adaptive` aspect ratio. Write the prompt to match, otherwise the task can fail with a task-type mismatch. · Options: auto, reference, edit, extend
autoreferenceeditextend
resolutionstringOptionalThe resolution of the video to generate. · Options: 480p, 720p, 1080p · Default: "720p"
480p720p1080p
aspect_ratiostringOptionalOutput aspect ratio. Omit to let the model choose from the prompt and reference inputs. · Options: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
16:99:161:14:33:421:9adaptive
generate_audiobooleanOptionalWhether to generate synchronized audio (voice, SFX, BGM) for the video. · Default: true
02

Output Schema

FieldTypeDescription
idstringUnique identifier for the generation task
statusstringTask status: pending, running, completed, failed, timeout
modelstringModel used for the generation
outputsarrayArray of output items
outputs[].urlstringURL of the generated artifact
outputs[].content_typestringMIME type (e.g. image/png, video/mp4)
errorobject | nullError details if failed, null on success
error.typestringMachine-readable error type code
error.messagestringHuman-readable error description

Async Workflow

This model uses asynchronous execution. Submit a request and poll for the result.

  1. Submit — POST to /v1/run, receive an id
  2. Poll — GET /v1/run/{id} until status is completed, failed, or timeout
  3. Retrieve — Read outputs from the completed response
03

Code Examples

Ready-to-run snippets

const apiKey = process.env.SANDBASE_API_KEY;
const response = await fetch("https://api.sandbase.ai/v1/run", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "bytedance/seedance/2.5/reference-to-video",
    "draft": false,
    "images": [
      "https://static.sandbase.ai/examples/bytedance/seedance/2.0/reference-to-video/input_image_safe_ocean_0.jpg"
    ],
    "prompt": "Use Image1 as the visual reference and Video1 as the motion reference. Create a peaceful cinematic shoreline scene with rolling ocean waves at golden hour, soft foam, natural water movement, and no people.",
    "videos": [
      "https://static.sandbase.ai/examples/pixverse/sound-effects/input_video_0.mp4"
    ],
    "duration": 5,
    "resolution": "720p",
    "generate_audio": true
  }),
});

if (!response.ok) throw new Error(await response.text());
let result = await response.json();
for (let attempt = 0; attempt < 120 && !["completed", "failed", "timeout"].includes(result.status); attempt++) {
  await new Promise((resolve) => setTimeout(resolve, 2_000));
  const poll = await fetch(`https://api.sandbase.ai/v1/run/${result.id}`, {
    headers: { Authorization: `Bearer ${apiKey}` },
  });
  if (!poll.ok) throw new Error(await poll.text());
  result = await poll.json();
}
if (result.status !== "completed") throw new Error(`Generation ended: ${result.status}`);
console.log(result);