fishtoken Sign up
VideoComparison

Chinese AI video model APIs compared: Seedance, Kling, Wan, Vidu

Four video model families that can be called through FishToken with one API key. This page lists the model IDs, the modes each family exposes, the endpoint, and shows how to run the same prompt through two models by changing one field.

Side by side

All four families use the same endpoint and the same request shape: a model ID and a prompt, plus model-specific fields.

ModelModel IDs on FishTokenModesEndpointTypical use
Seedance 2.0 Fast
  • doubao-seedance-2-0-fast-260128
  • doubao-seedance-2-0-260128
  • doubao-seedance-2-5-260628
Text-to-video. Other inputs depend on the model version; see the docs.POST /v1/video/generationsQuick drafts and short clips; switch to the standard 2.0 or the 2.5 ID for the same prompt.
Kling V3
  • kling-v3
  • kling-v3-omni
Text-to-video; accepts a duration field. Other inputs per the docs.POST /v1/video/generationsTwo variants to compare, standard and Omni.
Wan 2.7
  • wan2.7-t2v
  • wan2.7-i2v
  • wan2.7-r2v
  • wan2.7-videoedit
Text-to-video, image-to-video, reference-to-video and video edit, each with its own model ID.POST /v1/video/generationsThe widest set of modes: animate a product photo (i2v) or edit an existing clip (videoedit).
Vidu Q3
  • viduq3
  • viduq3-turbo
  • viduq3-mix
Text-to-video. Other inputs per the docs.POST /v1/video/generationsThree variants (standard, Turbo, Mix) to compare on the same prompt.

Modes and fields. The exact parameters each model ID accepts (duration, size, image or reference inputs) are defined in the FishToken docs. The modes column above reflects what this site documents; check the docs before you build on it.

When to pick which

You start from a product photo

Use an image-to-video ID. On this site that is wan2.7-i2v: pass the photo URL in the request and describe the motion in the prompt.

You need to change an existing clip

wan2.7-videoedit takes a clip and an instruction. Useful for adapting one clip to another market instead of generating again.

You want fast drafts before a longer render

Start with doubao-seedance-2-0-fast-260128, then rerun the prompt you like on the standard 2.0 or 2.5 ID.

You are not sure which looks right

Run the same prompt through two or three families and compare the results yourself. The example below does exactly that; each call is charged separately to your balance.

One script, two models

Set export FISHTOKEN_API_KEY=... first. The function below submits a generation; only the model argument changes between calls.

Python (requests)
import os
import requests

API = "https://fishtoken.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['FISHTOKEN_API_KEY']}"}
PROMPT = "Vertical shot: a ceramic coffee cup on a wooden counter, steam rising, morning light"


def submit(model: str) -> dict:
    r = requests.post(f"{API}/video/generations", headers=HEADERS,
                      json={"model": model, "prompt": PROMPT}, timeout=60)
    r.raise_for_status()
    return r.json()  # contains the task ID; poll GET /v1/video/generations/TASK_ID


# Same prompt, same key, same balance. Only the model field changes.
print("Wan:   ", submit("wan2.7-t2v"))
print("Vidu:  ", submit("viduq3"))

Each submit call returns a task ID. Poll GET /v1/video/generations/TASK_ID until the task is complete; the Seedance Python example has a full polling loop you can reuse for any of these models.

Questions

Is FishToken a cryptocurrency?
No. FishToken is a prepaid API platform: you add balance to an account and each API call is charged to that balance. There is nothing to trade, mine or hold. The name refers to API tokens, not to any digital asset.
Do I need a separate account for each model?
No. One FishToken account, one API key and one balance cover Seedance, Kling, Wan, Vidu and DeepSeek. You choose the model with the model field of each request.
Is the API OpenAI-compatible?
Yes. The base URL is https://fishtoken.ai/v1. Chat and image requests work with the OpenAI SDK; video generation uses POST /v1/video/generations, which you call with any HTTP client. See switching an existing OpenAI SDK project.
How do I get the finished video?
Video generation runs as a task. The submit call returns a task ID; request GET /v1/video/generations/TASK_ID until the task is complete and read the video URL from the response. A full Python loop is in the Seedance example.
How much does each model cost?
Video models are billed per request or by usage, depending on the model, from your prepaid balance. The current price of each model ID is on fishtoken.ai/pricing; see how billing works.

Before you publish

Content filtering depends on the upstream model service. You are responsible for what you generate and publish: no sexual content, no graphic violence, and no real person's likeness or voice without their consent. Label AI-generated content where the platform you publish on or local law requires it.

Read the full content rules

Try all four with one key

Create an account, add balance, and switch models by changing one field.