Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.runflow.io/llms.txt

Use this file to discover all available pages before exploring further.

Pricing: $0.3034/second. Endpoint: POST /v1/models/bytedance/seedance/2.0/text-to-video/runs.
Seedance 2.0 generates high-quality videos from text prompts with synchronized audio including sound effects, ambient sounds, and lip-synced speech.

Overview

Pricing

  • Base price: $0.3034/second
  • Note: Per second (720p)

Seedance 2.0 Text to Video API

Endpoint: POST /v1/models/bytedance/seedance/2.0/text-to-video/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/bytedance/seedance/2.0/text-to-video/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "A street musician plays violin on a cobblestone bridge in Prague at golden hour. Pedestrians stop to listen, a child drops a coin in the open case. Camera slowly orbits the musician, warm autumn light, falling leaves."
        },
        "callback_url": "https://your-server.com/webhook"
    },
)

data = response.json()
print(data)

Node.js

const response = await fetch(
  "https://api.runflow.io/v1/models/bytedance/seedance/2.0/text-to-video/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "A street musician plays violin on a cobblestone bridge in Prague at golden hour. Pedestrians stop to listen, a child drops a coin in the open case. Camera slowly orbits the musician, warm autumn light, falling leaves."
        },
        "callback_url": "https://your-server.com/webhook"
    }),
  }
);

const data = await response.json();
console.log(data);

cURL

curl -X POST https://api.runflow.io/v1/models/bytedance/seedance/2.0/text-to-video/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "A street musician plays violin on a cobblestone bridge in Prague at golden hour. Pedestrians stop to listen, a child drops a coin in the open case. Camera slowly orbits the musician, warm autumn light, falling leaves."
    },
    "callback_url": "https://your-server.com/webhook"
}
JSON

Request parameters

ParameterTypeRequiredDescription
inputobjectrequiredModel input parameters. See “Input schema” below.
callback_urlstring | nulloptionalWebhook URL - POSTed when the run reaches a terminal state.
metadataobject | nulloptionalArbitrary key-value pairs attached to the run.

Input schema

FieldTypeRequiredAllowed valuesDescription
promptstringrequiredAnyThe text prompt used to generate the video
aspect_ratiostringoptionalauto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide.
durationstringoptionalauto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt.
resolutionstringoptional480p, 720p, 1080pVideo resolution - 480p for faster generation, 720p for balance.
generate_audiobooleanoptionalAnyWhether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated or not.
seedintegeroptionalAnyRandom seed for reproducibility. Note that results may still vary slightly even with the same seed.
end_user_idstringoptionalAnyThe unique user ID of the end user.

Output schema

FieldTypeDescription
outputsjsonUnified output array - one entry per generated artifact with url/type/width/height/duration/etc.
seedjsonThe seed used for generation.
nsfw_detectedjsontrue if the provider flagged output as NSFW, false if cleared, null if not checked.
timingjsonProvider timing info (inference_ms etc.), or null.

Callback payload

When you provide a callback_url, Runflow POSTs to it once the run reaches a terminal state.
FieldTypeDescription
eventstringEvent type: “run.completed”, “run.failed”, or “run.cancelled”.
run_idstringThe unique identifier of the run.
statusstringTerminal status: “succeeded”, “failed”, or “cancelled”.
outputobject | nullThe run output. Null if the run failed or was cancelled.
duration_msnumber | nullTotal run duration in milliseconds.
created_atstring | nullISO 8601 timestamp when the run was created.
completed_atstring | nullISO 8601 timestamp when the run reached terminal state.
metadataobject | nullThe metadata object passed at run creation, if any.
  • Retries: 3 attempts with exponential backoff (1s, 2s). Retries on 5xx / network errors only.
  • Headers: Runflow-Request-Id is always sent. Runflow-Signature is sent if a signing secret is configured.

Additional Resources

Browse all models

Browse the catalog.

Run lifecycle

Callbacks, polling, statuses.

Callbacks

Handle async results.

Pricing

How requests bill out.