# ByteDance Seedance 2.5 Image to Video API

> ByteDance's next-generation image-to-video model, animating a single still into a native clip up to 30 seconds at 720p with continuous, coherent motion, native audio, and director-level camera control.

Source: https://www.sandbase.ai/models/bytedance/seedance/2.5/image-to-video
API reference: https://www.sandbase.ai/models/bytedance/seedance/2.5/image-to-video/docs

## Facts

- Provider: ByteDance
- Type: Video model
- Model ID: `bytedance/seedance/2.5/image-to-video`
- Price: From $1.44 per run (20% off list price)
- Capabilities: image to video
- Billing: pay per use from one SandBase balance; no provider account or subscription needed

## Call it

- Unified Run API: `POST https://api.sandbase.ai/v1/run`

```bash
curl -X POST https://api.sandbase.ai/v1/run \
  -H "Authorization: Bearer $SANDBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance/2.5/image-to-video",
  "draft": false,
  "image": "https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/f8fc1008f23a4908b7c897e8b7eb87df~tplv-goo7wpa0wc-image.image",
  "prompt": "Create a 360-degree orbiting camera shot based on this photo.",
  "duration": 5,
  "resolution": "720p",
  "generate_audio": true
}'
```

The response returns a run id; poll `GET https://api.sandbase.ai/v1/run/{id}` until the status is `completed` or `failed`.

## FAQ

### How do I call ByteDance Seedance 2.5 Image to Video through SandBase?

Create a SandBase API key, then send requests with the model ID "bytedance/seedance/2.5/image-to-video" to Unified Run API (/v1/run) at https://api.sandbase.ai. The request examples on this page show the exact payload.

### Do I need a separate ByteDance account?

No. One SandBase API key and balance gives you access to ByteDance Seedance 2.5 Image to Video and the other models in the catalog; you do not need to sign up with ByteDance separately.

## README

### Seedance 2.5 Image to Video

Seedance 2.5 image-to-video: `image` becomes the first frame and the prompt directs motion, camera, and sound. Add `end_image` to set the final frame.

#### Fields

| Field | Type | Default | Notes |
|---|---|---|---|
| `prompt` | string, required | — | Up to 50,000 characters. |
| `image` | image URL, required | — | First frame. JPEG, PNG, or WebP URL. |
| `end_image` | image URL | — | Optional last frame. |
| `duration` | `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 | 5 | Output length in seconds (4–30), or `auto` to let the model choose. |
| `resolution` | `480p` / `720p` / `1080p` | `720p` | Sets the per-second rate. |
| `generate_audio` | boolean | true | Native dialogue, music, and effects. Same price on or off. |
| `seed` | integer -1–4294967295 | random | Fix it to compare prompt changes; `-1` is random. |

#### Billing

You pay for output seconds: $0.18 at 480p, $0.36 at 720p, $0.90 at 1080p. Audio is included. With `duration: "auto"` the quote assumes 30 seconds and the final charge uses the generated length.

| Output | 480p | 720p | 1080p |
|---|---|---|---|
| 4s | $0.72 | $1.44 | $3.60 |
| 5s (default) | $0.90 | $1.80 | $4.50 |
| 10s | $1.80 | $3.60 | $9.00 |
| 15s | $2.70 | $5.40 | $13.50 |
| 30s | $5.40 | $10.80 | $27.00 |

Failed runs are not charged.

#### Prompting

- Describe what moves and how the camera behaves, not what is already visible.
- With two frames, describe the transition between them.

#### Limits

- Clips are 4–30 seconds.

#### Draft mode

Draft mode is two calls to this same model:

1. **Draft**: add `"draft": true`. The output is a 480p preview billed at the 480p rate, and `outputs[0].draft_id` identifies it.
2. **Final**: send `{"draft_id": "<outputs[0].draft_id>"}` (optionally `watermark`). The same shot is rendered at 1080p and billed at the 1080p output rate for the actual output length.

The final reuses the draft's prompt, media, duration, aspect ratio, seed and audio setting; those fields are ignored when `draft_id` is set. A draft can be finalized within 7 days, only with the model that created it.

```json
{"prompt": "Slow 360-degree orbit around the subject.", "image": "https://example.com/first-frame.png", "duration": 5, "draft": true}
```

```json
{"draft_id": "<outputs[0].draft_id from the draft>"}
```

#### Also on SandBase

Other Seedance 2.5 endpoints and tiers: `bytedance/seedance/2.5/text-to-video`, `bytedance/seedance/2.5/reference-to-video`, `bytedance/seedance/2.0/image-to-video`, `bytedance/seedance/2.0/fast/image-to-video`, `bytedance/seedance/2.0/mini/image-to-video`.
