ModelSiteAPI

DashScope and Ark SDKs

Create and poll Wan and Seedance video tasks with the official DashScope and Ark Python SDKs by changing only the base URL

Two of the official video SDKs work with ModelSite by changing only the base URL. Both create a task, then poll it until it finishes.

Status: run against ModelSite on 2026-10-24: dashscope 2.0.1 (Wan 3.0, 480P, 2 seconds) and volcengine-python-sdk 5.0.54 (Seedance 2.0 mini, 480p, 4 seconds). Each created a task and polled it to success and returned a video URL.

DashScope SDK (Wan, HappyHorse)

Set the base URL before importing the SDK:

import os
os.environ["DASHSCOPE_HTTP_BASE_URL"] = "https://api.modelsite.ai/api/v1"

from dashscope import VideoSynthesis
import time

api_key = os.environ["MODELSITE_API_KEY"]
task = VideoSynthesis.async_call(
    api_key=api_key,
    model="wan3.0-video",
    prompt="A small orange cat stretches on a rainy window sill, neon city outside, slow push-in.",
    resolution="480P", duration=2, ratio="adaptive", prompt_extend=False,
)
while True:
    time.sleep(10)
    result = VideoSynthesis.fetch(task, api_key=api_key)
    if result.output.task_status in ("SUCCEEDED", "FAILED", "CANCELED"):
        break
print(result.output.task_status, getattr(result.output, "video_url", None))

Our Wan 3.0 task succeeded in about 50 seconds. Parameters differ by model; see the Wan and HappyHorse pages under Video generation.

Ark SDK (Seedance)

import os, time
from volcenginesdkarkruntime import Ark

client = Ark(base_url="https://api.modelsite.ai/api/v3", api_key=os.environ["MODELSITE_API_KEY"])
task = client.content_generation.tasks.create(
    model="dreamina-seedance-2-0-mini",
    content=[{"type": "text", "text": "A small orange cat stretches on a rainy window sill, neon city outside, slow push-in."}],
    extra_body={"resolution": "480p", "ratio": "16:9", "duration": 4, "generate_audio": False},
)
while True:
    time.sleep(10)
    t = client.content_generation.tasks.get(task_id=task.id)
    if t.status in ("succeeded", "failed", "cancelled", "expired"):
        break
print(t.status, t.content.video_url if t.status == "succeeded" else None)

Our Seedance task went queued → succeeded in about two minutes. The test used the /v1 form of the same entrance (https://api.modelsite.ai/v1 as the base URL); /api/v3 is the form the Seedance page documents and the one that matches the SDK's own default path.

Do not pass callback_url. ModelSite does not send completion callbacks; a request that includes one is rejected with 400. Poll the task as above.

Limits

  • The video URL is temporary; save the file.
  • These checks created text-to-video tasks. Image-to-video and reference inputs use the fields described on each model's page.

On this page