Vidu / vidu-q2-turbo
Vidu q2-turbo stands out for Speed- and cost-oriented Vidu Q2 tier and Fast image animation and shot extension. It is best suited to batch image-to-video and rapid video prototypes.
Context
—
Not applicable
Unit rate
$0.0331
/ second
Output
Included
Quality
#24
Elo 1336
Overview
Vidu q2-turbo stands out for Speed- and cost-oriented Vidu Q2 tier and Fast image animation and shot extension. It is best suited to batch image-to-video and rapid video prototypes.
Video output
Can produce video output for generation or editing workflows.
Model maker
Vidu
Called through SeaLink's unified account, balance, and OpenAI-compatible API.
Protocol
Video generation API
Base URL: https://api.sealink.io/v1
Pricing
The final charge follows generated usage and the applicable selector, such as resolution, duration, input type, or provider unit.
API
model
vidu-q2-turbobase_url
https://api.sealink.io/v1Auth
Bearer $SEALINK_API_KEY# Step 1: Submit video generationcurl https://api.sealink.io/v1/video/generations \-H "Authorization: Bearer $SEALINK_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "vidu-q2-turbo","prompt": "Animate the reference image with a slow cinematic camera move and natural lighting","image_url": "https://wanx.alicdn.com/material/20250318/first_frame.png","last_image_url": "https://wanx.alicdn.com/material/20250318/last_frame.png","size": "720P","duration": 5}'# Step 2: Poll for result (use task id from submit response)curl https://api.sealink.io/v1/tasks/TASK_ID \-H "Authorization: Bearer $SEALINK_API_KEY"
import requests, timeapi_key = "<your-sealink-key>"base = "https://api.sealink.io"# Submitresp = requests.post(f"{base}/v1/video/generations", json={"model": "vidu-q2-turbo","prompt": "Animate the reference image with a slow cinematic camera move and natural lighting","image_url": "https://wanx.alicdn.com/material/20250318/first_frame.png","last_image_url": "https://wanx.alicdn.com/material/20250318/last_frame.png","size": "720P","duration": 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://api.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: "vidu-q2-turbo",prompt: "Animate the reference image with a slow cinematic camera move and natural lighting",image_url: "https://wanx.alicdn.com/material/20250318/first_frame.png",last_image_url: "https://wanx.alicdn.com/material/20250318/last_frame.png",size: "720P",duration: 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);