Seedance Video 2.5 API

Seedance Video 2.5 is a model from MiniMax that you can call through the ScalingTensor API.

Provider

MiniMax

Billing

Provider cost

ScalingTensor price

Provider cost USD / 1M tokens; varies by resolution and video input

Playground

Try Seedance Video 2.5

Edit the params, add your API key and run the model here. The result plays on this page when the job completes.

Input

Used for this request only and never stored. Get a key

Running a request charges your wallet: Provider cost USD / 1M tokens; varies by resolution and video input.

Output

preview

Request summary

Endpoint
POST /api/media/generate
Model ID
nova-video-2.5
model
nova-video-2.5
ratio
16:9
content
[{"text":"A beach at sunset","type":"text"}]
duration
5
resolution
720p
output_format
mp4

Need chat models, job lookups or the raw response? Open the full playground.

Pricing

Seedance Video 2.5 API pricing

Prices come from the live catalog. There is no subscription; each request is charged to your prepaid wallet.

ScalingTensor price

Provider cost

Live catalog price

Provider cost

USD / 1M tokens; varies by resolution and video input

Compare all model prices

Shared balance

Add credits

Top up

One wallet and one API key for every model in the catalog. Top-ups start at $10 and are paid through Stripe.

Parameters

Input parameters

These parameters belong inside the request body's params object.

Input parameters
nametyperequireddescription
modelstringtruePublic model name. Must be nova-video-2.5.
contentarray<object>trueMultimodal input array. Supports text, image, video, and audio, including audio-only input.
content[].typestringtrueContent item type: text, image_url, video_url, or audio_url.
content[].textstringconditionalPrompt text when type is text.
content[].image_url.urlstringconditionalImage URL or inline data:image/...;base64,... when type is image_url.
content[].video_url.urlstringconditionalVideo URL when type is video_url. Including a video input selects video-to-video billing.
content[].audio_url.urlstringconditionalAudio URL when type is audio_url; nova-video-2.5 supports audio-only input.
content[].rolestringfalseOptional role tag, such as first_frame, reference_image, reference_video, or reference_audio.
callback_urlstringfalseCallback URL for queued, running, succeeded, failed, or expired status changes.
return_last_framebooleanfalseWhether to return the generated video's last frame. Defaults to false.
service_tierstringfalseService tier. Defaults to default.
execution_expires_afterintegerfalseTask timeout in seconds, from 3600 to 259200. Defaults to 172800.
generate_audiobooleanfalseWhether to generate synchronized audio. Defaults to true.
safety_identifierstringfalseHashed end-user identifier; maximum length 64 characters.
resolutionstringfalseOutput resolution: 480p or 720p. Defaults to 720p; 1080p is unsupported.
ratiostringfalseAspect ratio: 16:9, 9:16, 4:3, 3:4, 1:1, 21:9, or adaptive. Defaults to adaptive. First-frame and video editing tasks only support adaptive; video editing and extension require duration -1.
durationintegerfalseVideo duration in seconds, from 4 to 30, or -1 for model-selected duration. Defaults to 5.
seedintegerfalseRandom seed from -1 to 2^32-1. Defaults to -1 for a random seed.
watermarkbooleanfalseWhether to add an AI-generated watermark. Defaults to false.
toolsarray<object>falseOptional tools array, for example [{"type":"web_search"}]. Defaults to an empty array.
output_formatstringfalseOutput format: mp4 or mov. Supported only by nova-video-2.5.
task_idstringtrue for queryTask ID in the query endpoint path, returned by the create endpoint.

Output fields

Output fields
nametypedescription
idstringTask ID returned by task creation and task queries.
modelstringModel name used to create the task.
statusstringTask status: queued, running, in_progress, succeeded, completed, failed, or expired.
content.video_urlstringGenerated video URL when successful; valid for 24 hours.
content.last_frame_urlstringGenerated last-frame image URL when requested and available.
usage.completion_tokensintegerBilled completion token count.
usage.total_tokensintegerTotal token count; currently equal to completion_tokens.
error.codestringError code when the task fails.
error.messagestringError details when the task fails.
created_atintegerTask creation time as a Unix timestamp in seconds.
updated_atintegerMost recent task update time as a Unix timestamp in seconds.
resolutionstringActual output resolution.
ratiostringActual output aspect ratio.
durationintegerActual output duration in seconds.
seedstringActual generation seed.
generate_audiobooleanWhether synchronized audio was generated.
callback_urlstringCallback URL echoed in the task response, when supplied.

API

Call Seedance Video 2.5 from your code

Create a key in the console and call the API from your server using the apiKey header. Save data.jobId and poll GET /api/media/result?jobId=... with the same key; a code of 0 means success.

POST /api/media/generate
curl --request POST 'https://restapi.scalingtensor.com/api/media/generate' \
  --header 'apiKey: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "model": "nova-video-2.5",
  "params": {
    "model": "nova-video-2.5",
    "ratio": "16:9",
    "content": [
      {
        "text": "A beach at sunset",
        "type": "text"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "output_format": "mp4",
    "generate_audio": true
  }
}'
const response = await fetch("https://restapi.scalingtensor.com/api/media/generate", {
  method: "POST",
  headers: {
    apiKey: process.env.SCALINGTENSOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "nova-video-2.5",
    "params": {
      "model": "nova-video-2.5",
      "ratio": "16:9",
      "content": [
        {
          "text": "A beach at sunset",
          "type": "text"
        }
      ],
      "duration": 5,
      "resolution": "720p",
      "output_format": "mp4",
      "generate_audio": true
    }
  }),
});

const result = await response.json();
if (!response.ok || result.code !== 0) {
  throw new Error(result.msg || `Request failed: ${response.status}`);
}
console.log(result.data); // Save data.jobId to query /api/media/result
import os
import requests

payload = {
    "model": "nova-video-2.5",
    "params": {
        "model": "nova-video-2.5",
        "ratio": "16:9",
        "content": [
            {
                "text": "A beach at sunset",
                "type": "text",
            },
        ],
        "duration": 5,
        "resolution": "720p",
        "output_format": "mp4",
        "generate_audio": True,
    },
}

response = requests.post(
    "https://restapi.scalingtensor.com/api/media/generate",
    headers={"apiKey": os.environ["SCALINGTENSOR_API_KEY"]},
    json=payload,
    timeout=60,
)
result = response.json()
if result["code"] != 0:
    raise RuntimeError(result["msg"])
print(result["data"])  # Save data["jobId"] to query /api/media/result

API documentation · This page as Markdown · Markdown API reference

Related models

Seedance Video 2.5 API FAQ

How much does the Seedance Video 2.5 API cost?

Seedance Video 2.5 is billed at the provider's actual cost for each job (USD / 1M tokens; varies by resolution and video input). The charge is deducted from your prepaid ScalingTensor wallet.

How do I call the Seedance Video 2.5 API?

Send POST /api/media/generate with "model": "nova-video-2.5" and the parameters in a params object, using your apiKey header. The call returns a jobId. Poll GET /api/media/result?jobId=... until the status is completed, then read the output URL from the result.

Which parameters does Seedance Video 2.5 accept?

Required: model and content. Optional: callback_url, return_last_frame, service_tier, execution_expires_after, generate_audio, safety_identifier, resolution, ratio, duration and seed and 4 more. The parameter table on this page describes each one.

Do I need a MiniMax account to use Seedance Video 2.5?

No. You call Seedance Video 2.5 with your ScalingTensor API key and pay from your ScalingTensor wallet. The same key works for every other model in the catalog.