ByteDance (Doubao) / seedance-1-5-pro
Seedance 1.5 Pro stands out for Native joint video-and-audio generation and Dialogue, lip sync, and continuous narrative. It is best suited to dialogue-driven short films and multilingual narrative video.
Context
—
Not applicable
Input
$2.70
/ 1M tokens
Output
$2.70
/ 1M tokens
Quality
—
No score
Overview
Seedance 1.5 Pro stands out for Native joint video-and-audio generation and Dialogue, lip sync, and continuous narrative. It is best suited to dialogue-driven short films and multilingual narrative video.
Video output
Can produce video output for generation or editing workflows.
Audio output
Can produce audio output, commonly used for speech or voice experiences.
Model maker
ByteDance (Doubao)
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
seedance-1-5-probase_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": "seedance-1-5-pro","prompt": "A cat walking along a beach at sunset","size": "720p","duration": 5,"generate_audio": false}'# 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": "seedance-1-5-pro","prompt": "A cat walking along a beach at sunset","size": "720p","duration": 5,"generate_audio": false}, 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: "seedance-1-5-pro",prompt: "A cat walking along a beach at sunset",size: "720p",duration: 5,generate_audio: false}),});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);