The most comprehensive Python wrapper for the Seedance 2.5 API (developed by ByteDance), delivered via muapi.ai. Generate cinematic, high-fidelity AI videos from text prompts and static images — with industry-leading realistic human face generation — using ByteDance's most advanced video generation model.
Join the subreddit https://www.reddit.com/r/Seedance_2_API/ for discussions on using the Seedance 2.5 API.
🌟 Seedance 2.5 — native 4K, longer clips, advanced audio, and improved character consistency over Seedance 2.0. Try it now: I2V Playground · T2V Playground
- seedance-2.0-watermark-remover — Remove watermarks from your Seedance generated videos
- seedance-2-generator — Ready-made Next.js SaaS built on Seedance 2
- Seedance-2-API — Python wrapper covering Seedance 2.0 and Seedance 2 Mini
- awesome-seedance-2.5-api-prompts — Curated Seedance 2.5 API guide, prompts, camera controls, and video generation examples
Seedance 2.5 is ByteDance's most advanced video generation model, offering unparalleled video quality and motion consistency.
- Cinematic Quality: Generate up to native 4K AI videos with realistic physics and lighting.
- Realistic Human Faces: Best-in-class facial fidelity — natural expressions, skin detail, and identity consistency across frames.
- Less Censorship: More permissive content policy compared to other AI video models, enabling a wider range of creative use cases.
- Superior Motion Control: Advanced camera movement and character consistency for professional results.
- Multimodal API: Supports Text-to-Video (T2V), Image-to-Video (I2V), and Video Extension.
- Developer-First: Fast processing via the MuAPI infrastructure with a simple Python SDK.
- ✅ Realistic Human Face Generation: Produces natural, high-fidelity human faces with accurate expressions, skin texture, and identity consistency — no uncanny valley.
- ✅ Seedance 2.5 Text-to-Video (T2V): Transform complex descriptive prompts into stunning AI video clips.
- ✅ Seedance 2.5 Image-to-Video (I2V): Animate any static image with precise motion control using
images_list. - ✅ Seedance 2.5 Omni-Reference: Condition a video on any combination of image, video, and audio references in one request.
- ✅ Seedance 2.5 Character: Generate a multi-panel character sheet (front, back, side, action pose, expressions) from 1–3 reference photos. Use
@character:<id>inline in any prompt, or pass the sheet directly as an anchor image for tighter face fidelity viaconsistent_video(). - ✅ Seedance 2.5 Video-Edit: Edit existing videos using text prompts and reference images for stylized results.
- ✅ File Upload: Directly upload local images and videos using the
upload_filemethod, supporting seamless use in generation tasks. - ✅ High-Resolution Output: Support for
basicandhigh(1080p+) quality settings. - ✅ Less Censorship: More permissive content policy than competing models — broader creative freedom out of the box.
- ✅ Flexible Aspect Ratios: Optimized for
16:9,9:16(TikTok/Reels),4:3, and3:4.
pip install seedance-2-api# Clone the Seedance 2.5 API repository
git clone https://github.com/SamurAIGPT/Seedance-2.5-API.git
cd Seedance-2.5-API
# Install required dependencies
pip install -r requirements.txtCreate a .env file in the root directory and add your MuAPI API key:
MUAPI_API_KEY=your_muapi_api_key_hereYou can now use Seedance 2.5 as an MCP (Model Context Protocol) server. This allows AI models (like Claude Desktop or Cursor) to directly invoke Seedance tools.
- Ensure
MUAPI_API_KEYis set in your environment. - Run the server:
python3 mcp_server.py
- To test with the MCP Inspector:
npx -y @modelcontextprotocol/inspector python3 mcp_server.py
from seedance_api import SeedanceAPI
# Initialize the Seedance 2.5 client
api = SeedanceAPI()
# 1. Generate Video from Text (T2V) using Seedance 2.5 API
print("Generating AI Video using Seedance 2.5...")
submission = api.text_to_video(
prompt="A cinematic slow-motion shot of a cyberpunk city in the rain, neon lights reflecting on puddles, 8k resolution",
aspect_ratio="16:9",
duration=5,
quality="high"
)
# 2. Wait for completion
result = api.wait_for_completion(submission['request_id'])
print(f"Success! View your Seedance 2.5 video here: {result['url']}")Endpoint: POST https://api.muapi.ai/api/v1/seedance-v2.0-t2v
Supports @character:<id> inline in the prompt — see Character Workflow below.
curl --location --request POST "https://api.muapi.ai/api/v1/seedance-v2.0-t2v" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data-raw '{
"prompt": "A majestic eagle soaring over the snow-capped Himalayas",
"aspect_ratio": "16:9",
"duration": 5,
"quality": "high"
}'Endpoint: POST https://api.muapi.ai/api/v1/seedance-v2.0-i2v
Reference images with @image1, @image2, etc. in the prompt. Supports @character:<id> — characters are automatically appended to images_list.
curl --location --request POST "https://api.muapi.ai/api/v1/seedance-v2.0-i2v" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data-raw '{
"prompt": "Make the clouds move slowly across the sky",
"images_list": ["https://example.com/mountain.jpg"],
"aspect_ratio": "16:9",
"duration": 5,
"quality": "basic"
}'Endpoint: POST https://api.muapi.ai/api/v1/seedance-2.0-omni-reference
Condition a single video generation on any combination of image, video, and audio references. Use @character:<id> inline in the prompt to inject a character (see section below).
curl --location --request POST "https://api.muapi.ai/api/v1/seedance-2.0-omni-reference" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data-raw '{
"prompt": "A dramatic chase scene through a neon city",
"aspect_ratio": "16:9",
"duration": 5,
"images_list": ["https://example.com/scene_ref.jpg"],
"video_files": ["https://example.com/style_ref.mp4"]
}'Endpoint: POST https://api.muapi.ai/api/v1/seedance-2-character
Create a multi-panel character sheet (front, back, side profile, action pose, facial expressions, accessories) at 4K / 21:9 from 1–3 reference photos of a real person.
Once the sheet is generated you can use it two ways:
@character:<request_id>inline in any T2V, I2V, or Omni-Reference prompt- Pass
outputs[0](the sheet image URL) directly as@image1in an I2V request for tighter face fidelity viaconsistent_video()
| Field | Type | Required | Description |
|---|---|---|---|
images_list |
array of URLs | Yes | 1–3 photos of the reference person |
prompt |
string | Yes | Desired outfit/style for the character |
curl --location --request POST "https://api.muapi.ai/api/v1/seedance-2-character" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data-raw '{
"images_list": ["https://example.com/person.jpg"],
"prompt": "cyberpunk jacket with neon accents"
}'Cost: $0.18 per character sheet
For a full guide including the direct sheet-anchored I2V workflow, see CHARACTER_CONSISTENCY.md.
Endpoint: POST https://api.muapi.ai/api/v1/seedance-v2.0-video-edit
curl --location --request POST "https://api.muapi.ai/api/v1/seedance-v2.0-video-edit" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data-raw '{
"prompt": "The cat walks through a garden",
"video_urls": ["https://example.com/video.mp4"],
"images_list": ["https://example.com/image.jpg"],
"aspect_ratio": "16:9",
"quality": "basic",
"remove_watermark": false
}'Create a fictional character from reference photos and maintain their identity across multiple video scenes.
See CHARACTER_CONSISTENCY.md for a full guide.
from seedance_api import SeedanceAPI
api = SeedanceAPI()
# Step 1 — generate a character sheet (1–3 reference photos)
char = api.create_character(
images_list=["https://example.com/person.jpg"],
outfit_description="cyberpunk jacket with neon accents, glowing visor",
)
char_id = char["request_id"]
api.wait_for_completion(char_id) # wait for sheet to render
# Step 2 — reference the character inline in any prompt
video = api.text_to_video(
prompt=f"@character:{char_id} rides a motorcycle through a neon-lit city at night",
aspect_ratio="16:9",
duration=5,
)
result = api.wait_for_completion(video["request_id"])
print(f"Video: {result['outputs'][0]}")
# Multiple characters in one prompt
char2_id = "another-completed-character-request-id"
video2 = api.text_to_video(
prompt=f"@character:{char_id} and @character:{char2_id} face off in a neon-lit arena",
aspect_ratio="16:9",
duration=5,
)Pass the character sheet directly as the anchor image for Image-to-Video generation.
# Get the sheet URL after character creation
sheet_result = api.wait_for_completion(char_id)
sheet_url = sheet_result["outputs"][0]
# Generate with the sheet as anchor
video = api.consistent_video(
sheet_url=sheet_url,
prompt="@image1 draws their weapon in slow motion, dramatic lighting",
aspect_ratio="16:9",
duration=5,
quality="high",
)
result = api.wait_for_completion(video["request_id"])
print(f"Video: {result['outputs'][0]}")Tip:
@character:<id>works in T2V, I2V, and Omni-Reference prompts. Useconsistent_video()when face similarity is critical.
For prompt engineering and advanced use cases, see awesome-seedance-2.5-api-prompts.
| Method | Parameters | Description |
|---|---|---|
text_to_video |
prompt, aspect_ratio, duration, quality, remove_watermark |
Generate video from text. Supports @character:<id> in prompt. |
image_to_video |
prompt, images_list, aspect_ratio, duration, quality, remove_watermark |
Animate images. Supports @image1/@character:<id> in prompt. |
omni_reference |
prompt, aspect_ratio, duration, quality, images_list, video_files, audio_files |
Multi-modal reference video generation. |
create_character |
images_list (1–3), outfit_description, character_name |
Generate a 4K character sheet from reference photos. Returns request_id; outputs[0] is the sheet URL. |
consistent_video |
sheet_url, prompt, aspect_ratio, duration, quality, extra_images |
I2V with the character sheet as anchor (@image1). Tighter face fidelity than @character:<id>. |
video_edit |
prompt, video_urls, images_list, aspect_ratio, quality, remove_watermark |
Edit existing videos with prompts and images. |
watermark_remover |
video_url |
Remove MuAPI watermark from a Seedance video. |
watermark_remover_pro |
video_url |
Remove MuAPI watermark from a Seedance video (Pro version). |
text_to_video_480p |
prompt, aspect_ratio, duration, quality |
Generate a 480p video from text (faster/cheaper). |
image_to_video_480p |
prompt, images_list, aspect_ratio, duration, quality |
Generate a 480p video from an image (faster/cheaper). |
extend_video |
request_id, prompt, duration, quality |
Extend an existing Seedance video segment. |
upload_file |
file_path |
Upload a local file (image or video) to MuAPI for use in generation tasks. |
get_result |
request_id |
Check task status for the Seedance API. |
wait_for_completion |
request_id, poll_interval, timeout |
Blocking helper for Seedance generation tasks. |
This project is licensed under the MIT License - see the LICENSE file for details.
Keywords: Seedance 2.5 API, ByteDance Seedance, AI Video Generator, Text-to-Video AI, Image-to-Video API, Seedance Python SDK, Sora Alternative, MuAPI, Video Generation API, Cinematic AI Video, AI Video Creation, ByteDance Video AI, Seedance API Documentation, Seedance I2V, Seedance T2V, AI Movie Generator, AI Animation API, Python Video API, Seedance 2.5 Tutorial.