Skip to content
View seedance25api's full-sized avatar

Block or report seedance25api

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
seedance25api/README.md

Seedance 2.5 API — from $0.119/s

ByteDance Seedance 2.5 is live on reAPI. Text, images, video and audio in — a 4–30 s clip with synced sound out. One async REST endpoint, per-second billing, failed jobs refunded.

Seedance 2.5 model page → · API reference · Seedance 2.0 · All models

Last updated: 2026-09-30


At a glance

Status Live (generally available on reAPI)
Endpoint POST https://reapi.ai/api/v1/videos/generations → poll GET /api/v1/tasks/{id}
Model ids doubao-seedance-2.5-face (standard) · doubao-seedance-2.5-eco (economy tier)
Modes text-to-video, image-to-video, first/last frame, multimodal reference, video edit / extend
Duration 4–30 s, or -1 to let the model choose
Resolution 480p / 720p / 1080p (Eco: 720p / 1080p)
Aspect ratio 16:9 · 9:16 · 1:1 · 4:3 · 3:4 · 21:9 · adaptive
Audio Synced speech, sound effects and music (generate_audio, on by default)
References up to 30 images · 10 videos · 10 audio tracks per request
Prompt up to 20,000 characters
Delivery mp4 or mov · optional webhook_url instead of polling

Price per second (text / image to video)

Rates read from each provider's own pricing source on 2026-09-30. No video input; 1 second of generated video.

Provider 480p 720p 1080p 10 s @ 720p
reAPI — Seedance 2.5 $0.119 $0.267 $0.643 $2.67
reAPI — Seedance 2.5 Eco — $0.201 $0.347 $2.01
kie.ai $0.140 $0.315 $0.790 $3.15
fal.ai $0.2205 $0.473 $1.164 $4.73
  • Eco takes the same request body as the standard tier. It starts at 720p, its picture quality may be a little lower, and a job usually takes 50–100 s longer. That's why it costs less.
  • Uploaded reference video is billed differently on every provider, reAPI included. On reAPI the per-second rate drops ($0.072 / $0.161 / $0.384 standard; $0.121 / $0.207 Eco), but the bill covers reference seconds + output seconds. When the input contains video, there is also a floor of ⌈5 × duration / 3⌉ seconds.
  • Higgsfield includes Seedance 2.5 in its subscription credit plans. Its pricing page does not list a per-second rate for 2.5, so it isn't in the table.
  • Live reAPI rates: reapi.ai/models/seedance-2-5. Those numbers are authoritative if they differ from this table.

Quick start

Get an API key at reapi.ai/settings/apikeys, then:

cURL

# 1. Submit
curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer $REAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.5-face",
    "prompt": "A barista pours latte art in slow motion, warm cafe light, 35mm film look. She looks up and says \"Your flat white.\"",
    "duration": 5,
    "resolution": "720p",
    "size": "16:9"
  }'
# → {"id": "task_...", "status": "processing", ...}

# 2. Poll (polling is free) until status is "completed" or "failed"
curl https://reapi.ai/api/v1/tasks/task_xxx \
  -H "Authorization: Bearer $REAPI_API_KEY"
# → {"status": "completed", "output": {"video_urls": ["https://.../0.mp4"]}, ...}

Python

import os, time, requests

API = "https://reapi.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REAPI_API_KEY']}"}

task = requests.post(f"{API}/videos/generations", headers=HEADERS, json={
    "model": "doubao-seedance-2.5-face",
    "prompt": "A red fox trots through fresh snow at dawn, low tracking shot",
    "duration": 5,
    "resolution": "720p",
    "size": "16:9",
}, timeout=30).json()

while True:
    t = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
    if t["status"] == "completed":
        print(t["output"]["video_urls"][0])
        break
    if t["status"] == "failed":
        raise RuntimeError(t["error"])
    time.sleep(10)

Node.js

const API = "https://reapi.ai/api/v1";
const headers = {
  Authorization: `Bearer ${process.env.REAPI_API_KEY}`,
  "Content-Type": "application/json",
};

const task = await fetch(`${API}/videos/generations`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    model: "doubao-seedance-2.5-face",
    prompt: "A red fox trots through fresh snow at dawn, low tracking shot",
    duration: 5,
    resolution: "720p",
    size: "16:9",
  }),
}).then((r) => r.json());

for (;;) {
  const t = await fetch(`${API}/tasks/${task.id}`, { headers }).then((r) => r.json());
  if (t.status === "completed") { console.log(t.output.video_urls[0]); break; }
  if (t.status === "failed") throw new Error(JSON.stringify(t.error));
  await new Promise((r) => setTimeout(r, 10_000));
}

Rather not poll? Add "webhook_url": "https://your.app/hook" to the submit body. When the task completes or fails, reAPI POSTs the same JSON the task endpoint returns.

Picking a mode

There is no mode parameter. The fields you send decide the mode:

You send You get
prompt only Text-to-video
prompt + image_urls Image-to-video / image references
image_with_roles with first_frame / last_frame First/last-frame transition
any mix of image_urls, video_urls, audio_urls Multimodal reference generation (audio-only works too)
video_urls + omni_reference_task_type: "edit" or "extend" Edit or extend an existing clip

Other useful fields: generate_audio (default true), return_last_frame (chain clips by feeding the last frame into the next call), seed, output_format (mp4 / mov), watermark (default false). All media inputs are public HTTP(S) URLs; base64 isn't accepted. The full parameter table is in the API reference.

Billing rules worth knowing

  1. Per second of output. credits = ceil(rate × billable_seconds × 1000), where 1 credit = $0.001.
  2. Failed jobs are refunded in full, automatically.
  3. Reference video counts. With video_urls, you pay for max(ceil(reference_seconds) + duration, ceil(5 × duration / 3)) seconds. Reference images and audio are free.
  4. duration: -1 reserves credits at the 30 s cap, then settles to the real length and refunds the difference.

FAQ

Is Seedance 2.5 available outside China? Yes. reAPI is a global API, and you can sign up and call it from anywhere with a normal API key. You don't need a Volcengine or BytePlus account.

Seedance 2.5 or 2.0? Seedance 2.5 makes longer clips (4–30 s; 2.0 does 4–15 s) and takes more references per request (30 images / 10 videos / 10 audio, vs 9 / 3 / 3). Seedance 2.0 is still live. It costs less per second (from $0.072/s at 480p) and goes up to 4K. The request shape is the same, so switching usually means changing the model field.

Can I try it without code? Yes. The model page has a browser playground with the same parameters, and it shows the JSON for the request it sends.


Independent developer resource for the Seedance API on reAPI. Not affiliated with, endorsed by, or sponsored by ByteDance, kie.ai, fal.ai or Higgsfield. Model and company names belong to their respective owners. Third-party prices were read from each provider's public pricing source on the date above and may have changed since.

Popular repositories Loading

  1. awesome-seedance-2.5-prompt awesome-seedance-2.5-prompt Public

    awesome seedance 2.5 prompt

    26 4

  2. seedance25api seedance25api Public

    seedance 2.5 api

  3. awesome-Seedance-2.0-prompt awesome-Seedance-2.0-prompt Public

    awesome seedance 2.0 prompt

  4. seedance-2-0 seedance-2-0 Public

    Forked from reAPIAI/seedance-2-0

    seedance-2-0

    Python