Alibaba (Qwen) / wan-animate
WAN Animate
WAN Animate generates video for text-to-video, product concepts, and social clips.
Context
0K
tokens
Input
$0.064
/ second
Output
$0.064
/ second
Quality
#156
Elo 1010
Overview
What this model is good for
WAN Animate generates video for text-to-video, product concepts, and social clips.
Model capabilities
Video output
Can produce video output for generation or editing workflows.
Model maker
Model maker and access
This section shows the model maker, SeaLink model ID, protocol, and pricing information.
Alibaba (Qwen)
Called through SeaLink's unified account, balance, and OpenAI-compatible API.
Protocol
Video generation API
Base URL: https://test.sealink.io/v1
Pricing
Pricing and cost sense
Prices come from the current model catalog. Simple estimates help users judge whether the model fits production volume.
Actual billing follows usage logs and billing records; caching and media pricing depend on the endpoint.
API
Copy into your code
The model page should make it clear which model to copy, which base URL to use, and where to get an API Key.
model
wan-animatebase_url
https://test.sealink.io/v1Auth
Bearer $SEALINK_API_KEY# Step 1: Submit video generationcurl https://test.sealink.io/v1/video/generations \-H "Authorization: Bearer $SEALINK_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "wan-animate","prompt": "A cat walking along a beach at sunset","size": "1280x720","seconds": "5"}'# Step 2: Poll for result (use task id from submit response)curl https://test.sealink.io/v1/tasks/TASK_ID \-H "Authorization: Bearer $SEALINK_API_KEY"
import requests, timeapi_key = "<your-sealink-key>"base = "https://test.sealink.io"# Submitresp = requests.post(f"{base}/v1/video/generations", json={"model": "wan-animate","prompt": "A cat walking along a beach at sunset","size": "1280x720","seconds": "5",}, headers={"Authorization": f"Bearer {api_key}"})task = resp.json()task_id = task["id"]# Poll until completewhile True:time.sleep(5)r = requests.get(f"{base}/v1/tasks/{task_id}",headers={"Authorization": f"Bearer {api_key}"})v = r.json()if v["status"] == "completed":print(v.get("data") or v.get("upstream_response") or v)break
const base = "https://test.sealink.io";const headers = { Authorization: `Bearer ${process.env.SEALINK_API_KEY}` };// Submitconst resp = await fetch(`${base}/v1/video/generations`, {method: "POST",headers: { ...headers, "Content-Type": "application/json" },body: JSON.stringify({model: "wan-animate",prompt: "A cat walking along a beach at sunset",size: "1280x720",seconds: "5",}),});const task = await resp.json();const taskId = task.id;// Poll until completelet video;do {await new Promise(r => setTimeout(r, 5000));const r = await fetch(`${base}/v1/tasks/${taskId}`, { headers });video = await r.json();} while (video.status !== "completed");console.log(video.data || video.upstream_response || video);