Seedance 2.5 Flash API
ByteDance's fast Seedance 2.5 tier — 4–30s at 480p or 720p, with native audio, first/last frames and multimodal references. Early access.
Seedance 2.5 Flash is a video generation model from ByteDance, available on OttoPort's OpenAI-compatible API as the model ID seedance-2.5-flash at $0.30 / second as of 2026-11-14.
Provider
ByteDance
Price
$0.30 / second
Model ID
seedance-2.5-flash
Type
video generation model
Create with Seedance 2.5 Flash
videoYour result appears here
Start with the example prompt or make it your own. Your OttoPort account is used securely for generation.
Seedance 2.5 Flash API pricing
What OttoPort bills for Seedance 2.5 Flash, and what that works out to per unit. Rates are read from the same catalog the gateway meters against, and were current on 2026-11-14.
| Per second | $0.30 | |
|---|---|---|
| 5-second clip | $1.50 | |
| 8-second clip | $2.40 | |
| Seconds per $10 | 33 | of generated video |
No subscription and no minimum — OttoPort bills prepaid credits against usage. See the full rate card.
Call Seedance 2.5 Flash in three lines
Send "model": "seedance-2.5-flash" to POST https://ottoport.ai/api/v1/videos/generations with an OttoPort key. No ByteDance account, no waitlist, no separate SDK.
curl https://ottoport.ai/api/v1/videos/generations \
-H "Authorization: Bearer $OTTOPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-flash",
"prompt": "cinematic product reveal, slow dolly, black background",
"duration": 5,
"aspect_ratio": "16:9"
}'import requests
job = requests.post(
"https://ottoport.ai/api/v1/videos/generations",
headers={"Authorization": "Bearer " + API_KEY},
json={
"model": "seedance-2.5-flash",
"prompt": "cinematic product reveal, slow dolly, black background",
"duration": 5,
"aspect_ratio": "16:9",
},
).json()
# Video is a job: poll it, or pass webhook_url and be told.
print(job["id"], job["status"])const res = await fetch("https://ottoport.ai/api/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "seedance-2.5-flash",
prompt: "cinematic product reveal, slow dolly, black background",
duration: 5,
aspect_ratio: "16:9",
}),
});
// Video is a job: poll it, or pass webhook_url and be told.
const job = await res.json();
console.log(job.id, job.status);Before you start
- 1. Create a key at /api-keys.
- 2. Top up credits — the smallest pack is $25.
- 3. Paste the request. It returns a job ID; poll it or pass a webhook_url.
Full reference at /docs, or drive it from an agent with the MCP server and CLI.
Request parameters
The body POST https://ottoport.ai/api/v1/videos/generations accepts for Seedance 2.5 Flash.
| Field | Type | Required | Notes |
|---|---|---|---|
| model | string | Yes | Always seedance-2.5-flash for Seedance 2.5 Flash. |
| prompt | string | Yes | Subject, action, and camera movement. |
| duration | integer | No | 4–30 whole seconds, default 5. This is the billed unit. |
| generate_audio | boolean | No | Generate synchronized audio, default true. |
| resolution | string | No | One of: 480p, 720p. Tiers above this model's base rate bill at a multiplier. Extend: 480p, 720p. |
| aspect_ratio | string | No | e.g. 16:9 or 9:16. |
| image_url | string | No | The first frame, for image-to-video. |
| last_frame_url | string | No | The closing frame. With image_url, this is first-and-last-frame generation. |
| reference_image_urls | array | No | Subjects the shot carries through — a character, a product — on models that accept references. Up to 10. |
| reference_video_urls | array | No | Reference videos — motion, a performance, a scene — the shot draws on. Billed per second of reference video on models whose upstream charges for it. Up to 5, 30s in all. |
| reference_audio_urls | array | No | Reference audio — a voice, a beat — beside reference images or videos. Reference fees depend on the model and mode. Up to 5, 30s in all. |
| video_url | string | No | An existing video to edit or extend. Source duration may count toward the price. |
| video_task | string | No | What to do with video_url: "edit" (the default) or "extend". |
| webhook_url | string | No | Called when the job settles, so you need not poll. |
| webhook_secret | string | No | Signs the webhook so you can verify it came from OttoPort. |
Seedance 2.5 Flash direct vs through OttoPort
Seedance 2.5 Flash is the same model either way — what changes is how many accounts, keys, and integrations you carry to reach it.
| ByteDance direct | Via OttoPort | |
|---|---|---|
| Accounts and keys | A ByteDance account, plus one more for every other model you add | One OttoPort account and one key for the whole catalog |
| Request shape | ByteDance's own SDK and response format | OpenAI-compatible — point baseURL at OttoPort and change the model string |
| Switching models | A new integration per provider | Replace seedance-2.5-flash with any other model ID in the catalog |
| Billing | A separate invoice and contract per provider | Prepaid credits, no subscription, one usage ledger |
| Provider outages | Your call fails | Configured backup routes are tried in order on provider failure |
Describe the subject and action.
Add a camera movement.
Specify your output format.
Seedance 2.5 Flash API questions
Cost, keys, and model IDs for Seedance 2.5 Flash on OttoPort.
How much does the Seedance 2.5 Flash API cost?
On OttoPort, Seedance 2.5 Flash costs $0.30 / second as of 2026-11-14. For scale, 5-second clip: $1.50. Billing is prepaid usage with no subscription and no minimum, and the current rate is always published at ottoport.ai/pricing.
How do I get a Seedance 2.5 Flash API key?
You do not need a ByteDance key. Create an OttoPort account, generate a key at ottoport.ai/api-keys, and send it as "Authorization: Bearer <key>" to POST https://ottoport.ai/api/v1/videos/generations with "model": "seedance-2.5-flash". The same key reaches every other model in the catalog.
What is the model ID for Seedance 2.5 Flash?
The OttoPort model ID for Seedance 2.5 Flash is seedance-2.5-flash. Pass it as the model field on POST https://ottoport.ai/api/v1/videos/generations, or list it programmatically from GET https://ottoport.ai/api/v1/models.
Is Seedance 2.5 Flash generation synchronous?
No. POST https://ottoport.ai/api/v1/videos/generations returns a job ID immediately. Poll GET https://ottoport.ai/api/v1/videos/generations/{id} for status, or pass webhook_url and webhook_secret and OttoPort will call you when the job settles. You are billed per second of output, so a failed job costs nothing.
Do I need a ByteDance account to use Seedance 2.5 Flash?
No. OttoPort connects to ByteDance on your behalf, so one OttoPort account covers Seedance 2.5 Flash and every other model in the catalog — no per-provider contracts, keys, or invoices.
Other video generation models on the same API
Same endpoint, same key — swapping model is a one-string change from seedance-2.5-flash.
Gemini Omni 1.2 Flash API
$0.093 / second
Gemini Omni 1.1 Flash API
$0.138 / second
Gemini Omni Flash API
$0.156 / second
FLUX 3 API
Black Forest Labs
$0.213 / second
Seedance 2.5 API
ByteDance
$0.35 / second
Wan 3.0 Text to Video API
Alibaba
$0.20 / second
Browse the full catalog — every model with its provider and per-unit price.