rreAPI Docs
rreAPI Docs
HomeWelcome

Image

midjourney-v8flux-2z-imageqwen-image-2midjourney-v7wan-2-7-imagegpt-image-2gpt-image-2-officialgemini-2.5-flash-image-previewgemini-3-pro-image-previewgemini-3.1-flash-image-previewdoubao-seedream-5-0-liteimagen-4-0

Audio

Mureka V9 Song APIVocal Remover APIMusic Extractor APIVoice Cleaner APIMultistem Splitter APIVoice Changer API

Video

topaz-video-upscalerkling-3-0-turbokling-3-0music-video-1-0wan-2-7-videokling-motion-controlpixverse-v6Seedance 2.5doubao-seedance-2.0doubao-seedance-2.0-officialseedance-2-0-minidoubao-seedance-2.0-betahappyhorse-1-1happyhorse-1.0happyhorse-1.0-officialviduq3grok-imagine-video-1.5-betagrok-imagine-1.0-videoVeo 3.1gemini-omni

Chat

claude-fable-5minimax-m3deepseek-v4gpt-5.5gpt-5.4claude-opus-4-8claude-opus-4-7claude-sonnet-4-6

Text

ai-essay-writerhumanizeai-text-detector

Tools

enhance-video-1.0
X (Twitter)

Seedance 2.5

ByteDance Seedance 2.5 — next-generation async video generation. Coming soon to reAPI. This page is a preview seeded from the current Seedance generation; final parameters and pricing land at launch.

Coming soon. The Seedance 2.5 API is not available yet. The endpoint, parameters, and pricing below are a preview seeded from the current Seedance generation and may change when the model ships. Watch the model page for launch.

ByteDance's next-generation async video model, coming to reAPI. Seedance 2.5 turns text, photos, clips, or audio into short video. Like the current Seedance family, mode is implicit: which media fields you set (prompt, image_urls, image_with_roles, video_urls, audio_urls) decides whether the request runs as text-to-video, image-to-video, first/last-frame transition, or reference-driven generation. See pricing on the model page.

Status

Seedance 2.5 is coming soon. This documentation is a preview so you can plan an integration ahead of launch. When the model ships:

  • The model ids, full parameter set, constraints, and per-second rates are finalized here.
  • The playground on the model page becomes live.
  • This banner is removed.

The shape below mirrors the current Seedance generation. Treat every field as provisional until launch.

Quick example (preview)

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "A kitten yawning at the camera, cinematic warm tones",
    "resolution": "720p",
    "size": "16:9",
    "duration": 5
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/videos/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "seedance-2.5",
        "prompt": "A kitten yawning at the camera, cinematic warm tones",
        "resolution": "720p",
        "size": "16:9",
        "duration": 5,
    },
    timeout=30,
)
print(resp.json())
const r = await fetch("https://reapi.ai/api/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "seedance-2.5",
    prompt: "A kitten yawning at the camera, cinematic warm tones",
    resolution: "720p",
    size: "16:9",
    duration: 5,
  }),
});
console.log(await r.json());
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]any{
        "model":      "seedance-2.5",
        "prompt":     "A kitten yawning at the camera, cinematic warm tones",
        "resolution": "720p",
        "size":       "16:9",
        "duration":   5,
    })
    req, _ := http.NewRequest("POST",
        "https://reapi.ai/api/v1/videos/generations", bytes.NewReader(body))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    out, _ := io.ReadAll(resp.Body)
    fmt.Println(string(out))
}

These calls will return 404 model not found until Seedance 2.5 launches.

Authentication

Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.

Authorization: Bearer YOUR_API_KEY

Keys carry the active workspace's billing scope — there is no separate project header.

Endpoint

POST /api/v1/videos/generations
GET  /api/v1/tasks/{id}

Submission is async. The POST returns immediately with a task_id; the task endpoint returns the same envelope until completion. Polling does not consume credits.

Variants (preview)

Seedance 2.5 is expected to ship as a family of variants sharing one parameter shape, picked via model:

VariantSpeed1080pReal-person uploads
seedance-2.5standard✅—
seedance-2.5-fastfaster❌ (480p / 720p only)—
seedance-2.5-facestandard✅✅
seedance-2.5-fast-facefaster❌ (480p / 720p only)✅

reAPI never silently substitutes one variant for another. Final variant ids are confirmed at launch.

Request body (preview)

Mode is implicit — which media fields you set decides text-to-video, image-to-video, first/last-frame, or reference-driven generation.

FieldTypeDefaultNotes
modelstring—One of the variants above. Required.
promptstring—Describe the video. Optional when a reference field carries content.
durationinteger5Output length in seconds, 4–15.
sizestring16:916:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive.
resolutionstring480p480p / 720p / 1080p. 1080p on standard / face variants only.
seedinteger—Reproducibility hint.
generate_audiobooleanfalseSynthesize an audio track to play with the video.
return_last_framebooleanfalseReturn output.last_frame_url for continuous chaining.
toolsobject[]—[{ "type": "web_search" }] to let the model query the web.
image_urlsstring[]—Up to 9 reference images (image-to-video). Public HTTP(S) URLs.
image_with_rolesobject[]—First / last frame interpolation ({ url, role }).
video_urlsstring[]—Up to 3 reference clips, combined ≤ 15s.
audio_urlsstring[]—Up to 3 reference audio tracks for lip-sync.

No data: URIs. reAPI rejects base64 inputs platform-wide — every URL field must be a public HTTP(S) URL. Upload to your own object storage (S3, R2, OSS, …) and pass the URL.

Response envelope

Submit and poll share the same shape — only status and output fill in over time.

{
  "id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
  "model": "seedance-2.5",
  "status": "completed",
  "created_at": 1735000000,
  "output": {
    "video_urls": ["https://cdn.reapi.ai/media/tasks/.../0.mp4"],
    "last_frame_url": "https://cdn.reapi.ai/media/tasks/.../0.png"
  },
  "error": null
}

Poll GET /api/v1/tasks/{id} (see the Tasks reference) until status === "completed". output.video_urls holds the generated MP4 URL. output.last_frame_url is present when the request set return_last_frame: true.

Pricing

Seedance 2.5 will bill per-second, scaled by resolution and reference mode — the same dimensions as the current Seedance family:

credits = ceil(per_second_usd × billable_seconds × 1000)

where 1 credit = $0.001. Final per-second rates are published on the model page at launch — that table is dynamic and always reflects the current rate. Failed jobs are refunded automatically.

Related

  • Errors catalog
  • Authentication
  • Quickstart
  • Seedance 2.0 — available now

Table of Contents

Status
Quick example (preview)
Authentication
Endpoint
Variants (preview)
Request body (preview)
Response envelope
Pricing
Related