Skip to content
Open CastalyConsole

Video

seedance-2.5-nsfw API

Use the exact seedance-2.5-nsfw model ID through Modelflare asynchronous video routing.

Use the exact model ID seedance-2.5-nsfw. The model field must match this page exactly.

Sample outputseedance-2.5-nsfwPOST /v1/videos5.1s

Parameters: duration=5resolution=1080pratio=16:9

Prompt: One continuous take, no cuts. The shallow steps at the end of a hotel pool, early evening. A blonde woman with a curvy full figure, in a white bikini and tortoiseshell glasses. She walks up out of the water, turns at the top step to face the camera, squeezes the water out of her hair with one hand and settles front on to the lens, water still running off her. Warm low sun from the right, cool blue pool light behind. Low camera close to her, easing back as she turns and keeping her framed from shoulders to hips, shallow depth of field. Real weight and inertia, natural hair and fabric movement, no text.

This sample is deliberately mild. It is not the content limit of this model ID.

Request that produced this sample
{
"model": "seedance-2.5-nsfw",
"prompt": "One continuous take, no cuts. The shallow steps at the end of a hotel pool, early evening. A blonde woman with a curvy full figure, in a white bikini and tortoiseshell glasses. She walks up out of the water, turns at the top step to face the camera, squeezes the water out of her hair with one hand and settles front on to the lens, water still running off her. Warm low sun from the right, cool blue pool light behind. Low camera close to her, easing back as she turns and keeping her framed from shoulders to hips, shallow depth of field. Real weight and inertia, natural hair and fabric movement, no text.",
"seconds": "5",
"duration": 5,
"resolution": "1080p",
"ratio": "16:9",
"aspect_ratio": "16:9"
}

Use a Modelflare API key with https://modelflare.dev/v1. The gateway entry point is POST /v1/videos.

HTTP
Authorization: Bearer YOUR_MODELFLARE_API_KEY
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-nsfw",
"content": [{"type": "text", "text": "A white cat runs through a neon-lit street in the rain, cinematic tracking shot"}],
"resolution": "720p",
"duration": 5,
"generate_audio": false
}'

Save the task ID. Poll GET /v1/videos/{task_id} and download with GET /v1/videos/{task_id}/content. Result URLs may expire, so transfer the file promptly.

Terminal windowbash
curl https://modelflare.dev/v1/videos/TASK_ID \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY"

Seedance uses content[] for text, frames, and reference media; the separate Seedance asset management contract is documented independently.

Seedance uses one asynchronous multimodal envelope. Put text and media in content[]; media roles select first/last-frame or reference workflows.

Field Required Notes
model Yes seedance-2.5-nsfw
content[] Yes text, image_url, video_url, and audio_url; use role to identify media purpose
resolution No 480p / 720p / 1080p
ratio No 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive
duration No -1 for automatic timing, or 4–30 seconds
generate_audio No Generate synchronized dialogue, effects, and background audio
tools No Use web_search only where the official model page supports it
watermark No Whether to add a watermark
omni_reference_task_type No auto / reference / edit / extend; editing and extension impose stricter ratio/duration rules
output_format No mp4 / mov
return_last_frame No Return the final frame as an image

This model supports 480p, 720p, and 1080p. Use -1 for automatic timing or choose 4–30 seconds. A request can combine up to 30 images, 10 videos, and 10 audio clips. Ordinary reference generation accepts an explicit ratio or adaptive; editing, extension, and first/last-frame workflows require ratio: "adaptive", and editing requires duration: -1. Photorealistic people, real-person photos, and realistic faces must be uploaded to the asset library first; do not submit them as an image URL or Base64 payload.

Seedance 2.5 classifies reference, editing, extension, and frame-guided workflows from the media roles and task type. The examples keep the official contract while using Modelflare’s endpoint and model ID.

Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-nsfw",
"omni_reference_task_type": "reference",
"content": [
{"type":"text","text":"@image1 performs the movement from @video1, paced to @audio1"},
{"type":"image_url","image_url":{"url":"https://example.com/character.jpg"},"role":"reference_image"},
{"type":"video_url","video_url":{"url":"https://example.com/motion.mp4"},"role":"reference_video"},
{"type":"audio_url","audio_url":{"url":"https://example.com/music.mp3"},"role":"reference_audio"}
],
"ratio": "16:9", "duration": 15, "output_format": "mp4"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-nsfw", "omni_reference_task_type": "edit",
"content": [
{"type":"text","text":"Remove the background pedestrians but preserve the main subject"},
{"type":"video_url","video_url":{"url":"https://example.com/source.mov"},"role":"reference_video"}
],
"ratio": "adaptive", "duration": -1, "output_format": "mov"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-nsfw", "omni_reference_task_type": "extend",
"content": [{"type":"video_url","video_url":{"url":"https://example.com/source.mp4"},"role":"reference_video"}],
"ratio": "adaptive", "duration": 11, "output_format": "mov"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-nsfw", "content": [
{"type":"text","text":"The subject smiles while the camera makes a smooth orbit"},
{"type":"image_url","image_url":{"url":"https://example.com/first.jpg"},"role":"first_frame"},
{"type":"image_url","image_url":{"url":"https://example.com/last.jpg"},"role":"last_frame"}
],
"ratio": "adaptive", "duration": -1, "return_last_frame": true
}'

Invalid model parameters return a 4xx with a request ID. An asynchronous task can also enter failed after creation succeeds; use error_code and error_message from the poll response as the final task reason. Do not retry the same request with a different JSON shape.

This page covers Modelflare model generation and editing calls. Search or map enrichment, voice management, and element-library management are resource APIs outside this public model-call surface and are not required request fields.

This model uses token-based billing. See the model pricing page for the current customer price, reference list price, and complete specification.

Model ID Difference
seedance-2.5-nsfw The model documented on this page.
seedance-2.5 The base model. Same endpoint, request contract, and billing unit; only the model ID changes — see its own page, and the pricing page for price and availability.
Media contract · v1

Contract ID: media.seedance-2-5-nsfw.v1Adapter: video.seedance.25.v1@v1Fingerprint: 56d7caca6df741d554717bacada009fe7592767a967842ad32cd20c9151f2164

Official source: ByteDance / Volcengine

Contract parameters

Intent fieldControlOptions
ratioselect16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
resolutionselect480p / 720p / 1080p
durationselect-1 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 / 25 / 26 / 27 / 28 / 29 / 30
audioswitch—
workflowselectauto / reference / edit / extend
output_formatselectmp4 / mov
return_last_frameswitch—

Supported capability

  • allowed_values · ratio · 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
  • allowed_values · resolution · 480p, 720p, 1080p
  • allowed_values · duration · -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
  • max_assets · reference_asset_ids · 50
  • prompt_optional_with_reference · prompt

Structured request example

text

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "auto"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5-nsfw",
  "output_format": "mp4",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}

reference

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "reference"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "image_url": {
        "url": "https://example.com/reference.png"
      },
      "role": "reference_image",
      "type": "image_url"
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5-nsfw",
  "omni_reference_task_type": "reference",
  "output_format": "mp4",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}

edit

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "edit"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "role": "reference_video",
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/reference.mp4"
      }
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5-nsfw",
  "omni_reference_task_type": "edit",
  "output_format": "mp4",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}

extend

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "extend"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "role": "reference_video",
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/reference.mp4"
      }
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5-nsfw",
  "omni_reference_task_type": "extend",
  "output_format": "mp4",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}