LatentLogic
Seedance 2.5 API for developers — a few notes after integrating it into my site
I recently integrated Seedance 2.5 into one of my own projects. The basic API flow is simple: create a task, get the task ID, and poll until the video is ready.
import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://seegen.ai/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "sd2.5",
"inputs": {
"prompt": "A cinematic tracking shot through a rainy Tokyo street at night.",
"duration": "10s",
"resolution": "1280x720",
"outputResolution": "720p"
}
}
task = requests.post(
f"{BASE_URL}/jobs/createTask",
headers=headers,
json=payload
).json()
task_id = task["taskId"]
while True:
result = requests.get(
f"{BASE_URL}/jobs/queryTask",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"taskId": task_id}
).json()
if result["status"] in ["COMPLETED", "FAILED"]:
print(result)
break
time.sleep(5)
A few integration differences I ran into compared with Seedance 2.0:
1. Video Edit needs a separate flow
With Seedance 2.0, editing requests could be handled through Multi-Reference. In 2.5, if the prompt contains editing instructions, the model may automatically classify the task as Video Edit.
If you still send normal ratio and duration parameters, the request can fail with:
Seedance identified your task as video editing based on your prompt.
`ratio` must be `adaptive`.
`duration` must be -1.
I ended up adding a dedicated Video Edit mode instead of sending editing prompts through Multi-Reference.
2. Omni-Reference now requires actual reference assets
Another difference from 2.0: Seedance 2.5 doesn’t accept a text-only request through the Omni-Reference flow.
It returns:
The parameter omni_reference_task_type specified in the request is not valid.
This parameter is only supported in the multimodal reference scenario.
For backward compatibility, I added a small fallback: if the request contains only a prompt and no image, video, or audio references, I automatically remove omni_reference_task_type and route it as a normal text-to-video request.
These aren’t major changes, but they’re worth handling if you’re migrating an existing Seedance 2.0 integration to 2.5.
Anyone else integrating Seedance 2.5 into their own product? Is there anything else I should watch out for during integration?
Popular Ai topics
Other popular topics
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /java
- /clojure
- /emacs
- /haskell
- /typescript
- /svelte
- /onivim
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /elm
- /vscode
- /flutter
- /html
- /ash
- /deepseek
- /zig
- /opensuse
- /centos
- /php
- /react-native
- /scala
- /lisp
- /sublime-text
- /textmate
- /nixos
- /debian
- /agda
- /deno
- /django
- /kubuntu
- /nodejs
- /arch-linux
- /spring
- /ubuntu
- /revery
- /manjaro
- /julia
- /lua
- /diversity
- /quarkus
- /markdown









