Skip to content
Open CastalyConsole

Video

wan3.0-video-nsfw API

Use the exact wan3.0-video-nsfw model ID through Modelflare asynchronous video routing.

Use the exact model ID wan3.0-video-nsfw. The model field must match this page exactly.

Sample outputwan3.0-video-nsfwPOST /v1/videos5.0s

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

Prompt: One continuous take, no cuts. A hotel balcony above the sea in the late afternoon. A blonde woman with a curvy full figure, in a white bikini and tortoiseshell glasses. She stands at the rail with her back to the lens, then turns slowly to face the camera, sweeping her hair back over one shoulder, and settles leaning against the rail front on to the lens. Warm low sun from the right, cool blue sea and sky 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": "wan3.0-video-nsfw",
"prompt": "One continuous take, no cuts. A hotel balcony above the sea in the late afternoon. A blonde woman with a curvy full figure, in a white bikini and tortoiseshell glasses. She stands at the rail with her back to the lens, then turns slowly to face the camera, sweeping her hair back over one shoulder, and settles leaning against the rail front on to the lens. Warm low sun from the right, cool blue sea and sky 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": "wan3.0-video-nsfw",
"input": {"prompt": "A white cat runs through a neon-lit street in the rain, cinematic tracking shot"},
"parameters": {"resolution": "1080P", "duration": 5, "audio": true}
}'

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"

Wan commonly uses input and parameters; frame-guided and reference-media modes must not be mixed.

Wan3.0 uses input.prompt or input.media with output controls in parameters. Media may represent frames, references, audio, files, or webpages.

Field Required Notes
model Yes wan3.0-video-nsfw
input.prompt Conditional Provide this or input.media
input.media[] Conditional first_frame, last_frame, reference_*, file, or link
parameters.resolution No 480P / 720P / 1080P (default 1080P)
parameters.ratio No 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / adaptive
parameters.duration No 2–30 seconds, or -1 for automatic duration
parameters.audio No Whether to generate synchronized audio
parameters.prompt_extend No Set false when this dedicated model contract requires it
parameters.seed No Optional random seed
parameters.watermark No Whether to add a watermark

Wan3.0 supports text, first/last frames, up to 10 reference images, 5 reference videos, 5 reference audio clips, and one file or webpage input. Output is 480P, 720P, or 1080P for 2–30 seconds or -1 automatic timing. First/last frames, reference media, files, and webpages are mutually exclusive workflows selected by input.media[].type.

Wan3.0 uses one input/parameters envelope for text, frame guidance, reference media, files, and webpages; these workflows are mutually exclusive.

First and last frames

Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video-nsfw",
"input": {"prompt": "镜头从第一帧平滑推进到最后一帧", "media": [
{"type": "first_frame", "url": "https://example.com/first.png"},
{"type": "last_frame", "url": "https://example.com/last.png"}
]},
"parameters": {"resolution": "1080P", "duration": 8, "ratio": "adaptive", "audio": true}
}'

Reference media

Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video-nsfw",
"input": {"prompt": "保持角色、动作和音色一致", "media": [
{"type": "reference_image", "url": "https://example.com/character.png"},
{"type": "reference_video", "url": "https://example.com/motion.mp4"},
{"type": "reference_audio", "url": "https://example.com/voice.mp3"}
]},
"parameters": {"resolution": "720P", "duration": -1, "ratio": "adaptive"}
}'

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 per-second video billing. See the model pricing page for the current customer price, reference list price, and complete specification.

Model ID Difference
wan3.0-video-nsfw The model documented on this page.
wan3.0-video 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.wan3-0-video-nsfw.v1Adapter: video.wan.v1@v1Fingerprint: 54649957dbc95730fa0b23f8384230039f3675db9c2680117f97e9a4baf30cbc

Official source: Alibaba Cloud Model Studio

Contract parameters

Intent fieldControlOptions
ratioselect16:9 / 9:16 / 1:1 / 4:3 / 3:4 / adaptive
resolutionselect480p / 720p / 1080p
durationselect-1 / 2 / 3 / 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—

Supported capability

  • allowed_values · ratio · 16:9, 9:16, 1:1, 4:3, 3:4, adaptive
  • allowed_values · resolution · 480p, 720p, 1080p
  • allowed_values · duration · -1, 2, 3, 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 · 21

Structured request example

text

Intent

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

Provider request

{
  "audio": false,
  "duration": -1,
  "model": "wan3.0-video-nsfw",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p",
  "seconds": "-1"
}

reference

Intent

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

Provider request

{
  "input": {
    "media": [
      {
        "type": "reference_image",
        "url": "https://example.com/reference.png"
      }
    ],
    "prompt": "A red paper kite over a quiet harbour at dusk."
  },
  "model": "wan3.0-video-nsfw",
  "parameters": {
    "duration": -1,
    "resolution": "480P"
  }
}