Video Generation

Seedance 2.0 Mini

The low-cost sibling of Seedance 2.0 by ByteDance — roughly half the price, built for quick, high-volume drafts. Same core capabilities (text-to-video, image-to-video, video-to-video, audio-driven lipsync, native audio) at 480p or 720p.

seedance-2-miniAsyncLow cost

Use Mini for high-volume drafting, previews, and batch iteration where speed and cost matter more than maximum fidelity. When you need 1080p or the highest quality, use Seedance 2.0.

Generate

POST/api/v1/generate

Returns a task_id immediately. Poll /api/v1/status for the result. Credits are deducted upfront and auto-refunded if the generation fails. Requires a paid plan.

Parameters

model
stringrequired
Must be seedance-2-mini
prompt
stringrequired
Text prompt describing the video. Supports @image1 @video1 @audio1 tags to reference attached media (see References below).

Camera and lens instructions in the prompt work the same as Seedance 2.0 — see Cinema Controls.
duration
number
Video length in seconds. Range: 4-15. Default: 5
aspect_ratio
string
16:9 9:16 1:1 4:3 3:4 21:9. Default: 16:9
resolution
string
480p 720p. Default: 720p. Mini does not support 1080p — a 1080p request is served at 720p.
reference_images
string[]
Up to 9 public image URLs. Use @image1, @image2 in prompt. Single image = image-to-video. Multiple = reference mode. Upload via /api/v1/upload.
reference_videos
string[]
Up to 3 public video URLs. Use @video1 in prompt. Enables video-to-video: motion transfer, style reference, video editing.
reference_audio
string[]
Up to 3 public audio URLs. Use @audio1 in prompt. Enables lipsync (sync mouth to dialogue) and beat-sync (sync motion to music).
last_frame
string
Public image URL as the end frame. The video animates from the start image (reference_images[0]) to this end pose/scene.
tag
string
Tag the output for reuse: character object style location. Tagged outputs appear in your library.
Mini has no mode parameter — it always runs in its single fast, low-cost mode. Any mode value you send is ignored.

Examples

Text-to-video
curl -X POST https://www.lunostudio.ai/api/v1/generate \
  -H "Authorization: Bearer luno_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini",
    "prompt": "Cinematic drone shot over a misty mountain lake at sunrise",
    "duration": 6,
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'
Image-to-video
curl -X POST https://www.lunostudio.ai/api/v1/generate \
  -H "Authorization: Bearer luno_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini",
    "prompt": "@image1 walks through a neon-lit Tokyo street at night",
    "duration": 5,
    "reference_images": ["https://storage.lunostudio.ai/.../character.jpg"]
  }'
Fast 480p draft
curl -X POST https://www.lunostudio.ai/api/v1/generate \
  -H "Authorization: Bearer luno_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini",
    "prompt": "A paper boat floating down a rain gutter, top-down view",
    "duration": 4,
    "resolution": "480p"
  }'
Lipsync with dialogue audio
curl -X POST https://www.lunostudio.ai/api/v1/generate \
  -H "Authorization: Bearer luno_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini",
    "prompt": "@image1 delivers the monologue from @audio1, close-up shot",
    "duration": 8,
    "reference_images": ["https://storage.lunostudio.ai/.../actor.jpg"],
    "reference_audio": ["https://storage.lunostudio.ai/.../dialogue.mp3"]
  }'
Response
{
  "task_id": "sd2_abc123def456",
  "credit_cost": 21,
  "status": "pending",
  "model": "bytedance/seedance-2.0-mini",
  "type": "video"
}

credit_cost is returned on every request so you always know the exact charge before polling. Mini costs roughly half of Seedance 2.0 for the same duration and resolution.


References & Tags

Use @ tags in your prompt to tell the model how to use each reference. The number matches the array index (1-based). All URLs must be publicly accessible -- use /api/v1/upload to host your files.

@image1, @image2, ...via reference_images

Character consistency, style transfer, scene composition. Single image = image-to-video. Multiple = reference mode (the model maintains consistency across all referenced subjects).

Example: "@image1 and @image2 shake hands in a boardroom"

@video1, @video2, ...via reference_videos

Motion transfer, camera movement reference, video-to-video editing. The model matches movement, camera work, or editing style from the reference.

Example: "Recreate the camera movement from @video1 but with a mountain landscape"

@audio1via reference_audio

Lipsync: sync character mouth movements to dialogue. Beat-sync: match motion timing to music. Attach MP3/WAV dialogue for talking-head videos.

Example: "@image1 delivers the monologue from @audio1, close-up"

last_frame

Start-to-end motion. Provide a start image as reference_images[0] and an end image as last_frame. The video transitions from start to end pose.

When you attach 2+ images, or any video ref, the request automatically uses reference mode. With a single image and no video ref, it uses keyframe mode (image-to-video).

Resolution

ResolutionBest forRelative cost
480pRapid drafts, batch iterationLowest
720pShareable previews (default)Low
Mini does not support 1080p. A 1080p request is automatically served at 720p. For 1080p output, use Seedance 2.0.

Audio

Like the full model, Mini generates native audio with every video automatically — dialogue, ambient sound, sound effects, and music when prompted. No toggle needed.

For lipsync to specific dialogue, attach audio via reference_audio and use @audio1 in the prompt.


Check Status

GET/api/v1/status?task_id={task_id}

Poll every 5-10 seconds. Mini is fast — most generations finish in 1-5 minutes.

Request
curl "https://www.lunostudio.ai/api/v1/status?task_id=sd2_abc123def456" \
  -H "Authorization: Bearer luno_sk_your_key_here"
Generating
{ "task_id": "sd2_abc123def456", "status": "generating" }
Success
{
  "task_id": "sd2_abc123def456",
  "status": "success",
  "output": ["https://storage.lunostudio.ai/generations/user/1716234567.mp4"]
}
Failed (auto-refunded)
{
  "task_id": "sd2_abc123def456",
  "status": "failed",
  "error": "Generation failed",
  "refunded": true
}
Credits are automatically refunded when a generation fails.

Status values

pending

Queued, waiting

generating

Actively rendering

success

Done. Output in response.

failed

Failed. Credits refunded.

Need help?

Engineering team responds within 5 minutes.