Library / SDK
SamurAIGPT/Seedance-2.5-API avatar
SamurAIGPT/Seedance-2.5-API

Seedance-2.5-API: A Python Client for ByteDance Video Generation Routed Through MuAPI

Python wrapper for ByteDance's Seedance 2.5 API — Text-to-Video, Image-to-Video, realistic human faces, native 4K, consistent character generation.

469 stars66 forksPythonMIT

At a glance

What is it?
This wrapper turns MuAPI's Seedance 2.5 routes into Python methods for text-to-video, image-to-video, keyframe transitions and Omni Reference. The code is MIT, the model is not, access is gated to Pro or Business plans, and the 1080p and 4K tiers are upscales of a 720p render.
Who is it for?
Adopt it if you already hold a MuAPI Pro or Business key and want Seedance 2.5 inside a Python job queue or asset pipeline without hand-rolling HTTP calls, and if the 720p base render is acceptable for your target. Do not adopt it if you need offline inference, if you cannot accept a hosted intermediary holding your prompts and reference media, or if your budget cannot absorb the per-route pricing that the README only partially describes.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 37 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the wrapper actually removes from your code

Seedance 2.5 is ByteDance's video generation model, and this repository is a Python client for reaching it through muapi.ai rather than through ByteDance directly. The problem it solves is narrow and practical: the README describes 72 early-access routes spread across Text-to-Video, Image-to-Video, First & Last Frame, Omni Reference, Video Edit and Video Extend, each of those available in standard, Intl and Spicy variants, and each of those in 480p, 720p, upscaled 1080p and upscaled 4K tiers. That is a large matrix of endpoint names, and keeping it straight by hand is the kind of work that produces silent failures when a route string is mistyped. The wrapper puts named methods in front of that matrix. It is aimed at Python developers building generation into a pipeline: someone who wants a call in a script, a worker or a notebook and does not want to write and maintain the HTTP layer. It is not aimed at people who want a local model. Nothing here runs on your machine except the client code.

The request shape: prompts in, a route selected, a file or URL out

The mechanism visible in the README is a thin mapping from Python arguments to MuAPI route calls. Text-to-Video takes a prompt. Image-to-Video takes a prompt plus an image_url, and the README describes that as animating a single static image with motion control. First & Last Frame takes a start image and an end image and generates a transition between them. Omni Reference is the widest input: the README states it accepts up to 30 reference images, 10 reference videos and 10 reference audio clips in one request, conditioning the output on any combination of them. Video Edit takes an input video plus reference images or audio; Video Extend continues a video from its last frame. Both of those support optional synchronized audio generation according to the README. Two arguments cut across the methods. seed is a reproducibility control: the README says passing it keeps generations in the same neighborhood across repeated calls, which is weaker than determinism and worth reading carefully. upload_file is the escape hatch for local media, letting you push a local image or video and use the returned reference in a generation task. The data flow is therefore one-directional and hosted: your prompt and any reference media leave your process, muapi.ai runs the model, and you get a video back. There is no local inference step and no model weights in the repository.

Resolution tiers are upscales, and that changes what you are buying

The README carries its own warning: the 1080p and 4K routes are upscaled from the model's 720p base render, they are separate routes, and they are priced above the standard 720p tier. That sentence does most of the work in deciding whether this project fits a given job. If you need genuine 4K detail, an upscale of a 720p render is not the same product as a native 4K generation, and the README does not claim otherwise. What it does claim, in the feature list, is native 4K, which the resolution note then qualifies. The honest reading is that 720p is the real output and higher tiers are a paid post-process. For draft-and-approve workflows this matters less: 480p for fast drafts, 720p for the standard tier, then an upscaled route only for the takes that survive review. For anything where the final frame is inspected at pixel level, budget for the upscale cost and check a sample before committing a batch.

Getting a first call running

The README's installation section is truncated in the material available here, so the exact pip command cannot be quoted with confidence, though the PyPI badge points at the package name seedance-2-api and the badge text indicates Python 3.7 or later. The README also links a YouTube walkthrough titled How to Access Seedance 2.5 API (Step-by-Step Guide) that covers obtaining an API key and making a first call via MuAPI. What is clear from the material is the access gate: Seedance 2.5 is described as an early-access build on MuAPI, gated to Pro and Business plan accounts. So the sequence is: hold a qualifying MuAPI plan, obtain a key, install the client, then call methods such as the Image-to-Video path with an image_url and a prompt, or the character-consistency path described below. Two configuration details are named in the README rather than left implicit. Aspect ratio accepts 16:9, 9:16 for TikTok and Reels, 1:1, 4:3, 3:4, 21:9 and 9:21. Clip length runs from 4 to 30 seconds. The 30-second ceiling is the headline improvement over Seedance 2.0, which the README puts at 15 seconds.

Character consistency is a two-step workflow, not a single flag

The most interesting part of the API surface is Seedance Character. The README describes generating a multi-panel character sheet (front, back, side, action pose, expressions) from one to three reference photos, then anchoring an Omni-Reference generation on that sheet through a method called consistent_video(). This is a two-stage design: first you produce the sheet, then you spend an Omni Reference call conditioned on it. That is a sensible way to keep identity stable across shots, because the sheet gives the model a fixed visual vocabulary instead of asking it to infer a face from a single photo each time. It also doubles the number of calls and the number of places a bad result can enter the pipeline. If the sheet comes out wrong, every downstream shot inherits the error. The README does not state how long a generated sheet persists or whether consistent_video() re-uploads it, and that is the first thing to check against a live key if identity consistency is central to your use case.

Where this is the wrong tool

Three constraints are stated plainly enough to act on. First, the account gate: an early-access build limited to Pro and Business plans means a free or lower tier cannot use it at all, so any evaluation starts with a paid commitment. Second, the pricing structure is only partly described. The README says the upscaled routes cost more than 720p, but it does not publish per-route prices, and with 72 routes across three variant families and four resolution tiers, cost estimation from the README alone is not possible. Third, the content policy claim is directional, not specified. The README says the model has less censorship and more permissive policy than competing models, and that Intl and Spicy variants exist, but it does not define what is permitted. Anyone whose work sits near that boundary should get the actual policy from MuAPI before designing around it. Separately, the hosted-only architecture rules the project out for air-gapped environments, for workloads with data-residency requirements that forbid sending reference media to a third party, and for anyone who needs reproducible byte-identical output, since the README describes seeds as keeping generations in the same neighborhood rather than fixing them.

The alternative that changes the architecture, not the model

The README itself lists the relevant alternatives, and the most instructive is seedance2.5-comfyui, native Seedance 2.5 custom nodes with example workflows. The difference is not the model, it is the control surface. This wrapper gives you Python methods and expects you to build the orchestration: queueing, retries, asset storage, review. The ComfyUI nodes give you a graph editor where the same generation steps are wired visually and the intermediate artifacts are inspectable at each node. For a developer embedding generation into a service, the wrapper is the shorter path. For an artist iterating on a look, the graph is the shorter path, and it makes the character-sheet step visible rather than hidden behind a method call. Two other listed projects sit at different layers: seedance-2.5-mcp exposes the standard 720p and 480p Preview routes as an MCP server for agent clients, and Seedance-2-API covers the older Seedance 2.0 and Seedance 2 Mini models. If you only need 720p and you are driving from an agent, the MCP server may fit better than a Python SDK.

Licence, maintenance and what the repository does not tell you

The client is MIT licensed, which is permissive for the code you receive. It says nothing about the service. Your use of Seedance 2.5 through MuAPI is governed by MuAPI's terms and by whatever ByteDance's model terms impose upstream, and the MIT grant on this repository does not extend to either. Treat the licence as covering the wrapper only. On maintenance, the material shows a last push of 2026-08-09 and no retrieved releases, so there is no version history to read and no changelog to check before upgrading. The README notes that Seedance 2.5 is early access with 72 routes, which implies the route set is still moving; a wrapper that hardcodes route names will need updating when those names change. The README does not describe a versioning or deprecation policy, so pin the package version in your requirements file and re-read the README before bumping it. The one thing to confirm before adopting is the price list for the specific routes you intend to call, because the README tells you the upscaled tiers cost more and stops there.

Editorial conclusion

Adopt it if you already hold a MuAPI Pro or Business key and want Seedance 2.5 inside a Python job queue or asset pipeline without hand-rolling HTTP calls, and if the 720p base render is acceptable for your target. Do not adopt it if you need offline inference, if you cannot accept a hosted intermediary holding your prompts and reference media, or if your budget cannot absorb the per-route pricing that the README only partially describes. Before writing production code, verify three things against a live key: the exact route identifiers returned for your plan tier, whether the 1080p and 4K upscaled routes are billed separately from the 720p call, and whether consistent_video() reuses a stored character sheet or re-uploads the reference set on every invocation.

Official sources

  1. Issues
  2. License: MIT
  3. Project website
  4. README
  5. SamurAIGPT/Seedance-2.5-API on GitHub
Community notes

Community notes