Text to Video
curl --request POST \
--url https://api.modelhunter.ai/api/v1/seedance/text-to-video \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"ratio": "<string>",
"seed": 123,
"camera_fixed": true,
"watermark": true,
"generate_audio": true,
"return_last_frame": true,
"draft": true,
"service_tier": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/seedance/text-to-video"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"ratio": "<string>",
"seed": 123,
"camera_fixed": True,
"watermark": True,
"generate_audio": True,
"return_last_frame": True,
"draft": True,
"service_tier": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
duration: 123,
resolution: '<string>',
ratio: '<string>',
seed: 123,
camera_fixed: true,
watermark: true,
generate_audio: true,
return_last_frame: true,
draft: true,
service_tier: '<string>'
},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/seedance/text-to-video', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modelhunter.ai/api/v1/seedance/text-to-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'input' => [
'prompt' => '<string>',
'duration' => 123,
'resolution' => '<string>',
'ratio' => '<string>',
'seed' => 123,
'camera_fixed' => true,
'watermark' => true,
'generate_audio' => true,
'return_last_frame' => true,
'draft' => true,
'service_tier' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modelhunter.ai/api/v1/seedance/text-to-video"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modelhunter.ai/api/v1/seedance/text-to-video")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/seedance/text-to-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_abc123",
"status": "pending",
"type": "text-to-video",
"provider": "seedance",
"model": "seedance-1-5-pro",
"created_at": "2026-01-15T10:00:00Z",
"estimated_seconds": 40
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters"
}
}
Seedance
Text to Video
Generate a video from text using ByteDance Seedance models via Volcengine Ark.
POST
/
api
/
v1
/
seedance
/
text-to-video
Text to Video
curl --request POST \
--url https://api.modelhunter.ai/api/v1/seedance/text-to-video \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"ratio": "<string>",
"seed": 123,
"camera_fixed": true,
"watermark": true,
"generate_audio": true,
"return_last_frame": true,
"draft": true,
"service_tier": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/seedance/text-to-video"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"ratio": "<string>",
"seed": 123,
"camera_fixed": True,
"watermark": True,
"generate_audio": True,
"return_last_frame": True,
"draft": True,
"service_tier": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
duration: 123,
resolution: '<string>',
ratio: '<string>',
seed: 123,
camera_fixed: true,
watermark: true,
generate_audio: true,
return_last_frame: true,
draft: true,
service_tier: '<string>'
},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/seedance/text-to-video', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modelhunter.ai/api/v1/seedance/text-to-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'input' => [
'prompt' => '<string>',
'duration' => 123,
'resolution' => '<string>',
'ratio' => '<string>',
'seed' => 123,
'camera_fixed' => true,
'watermark' => true,
'generate_audio' => true,
'return_last_frame' => true,
'draft' => true,
'service_tier' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modelhunter.ai/api/v1/seedance/text-to-video"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modelhunter.ai/api/v1/seedance/text-to-video")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/seedance/text-to-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"ratio\": \"<string>\",\n \"seed\": 123,\n \"camera_fixed\": true,\n \"watermark\": true,\n \"generate_audio\": true,\n \"return_last_frame\": true,\n \"draft\": true,\n \"service_tier\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_abc123",
"status": "pending",
"type": "text-to-video",
"provider": "seedance",
"model": "seedance-1-5-pro",
"created_at": "2026-01-15T10:00:00Z",
"estimated_seconds": 40
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters"
}
}
Body Parameters
string
required
Seedance model. Options:
seedance-1-5-pro— Latest flagship, audio-visual generation, $0.012–$0.116/secseedance-1-0-pro— Multi-shot narrative, cinematic quality, $0.024–$0.122/secseedance-1-0-pro-fast— 3x faster, lower cost, $0.010–$0.049/secseedance-1-0-lite-t2v— Lightweight, cost-effective, $0.017–$0.088/sec
object
required
Input parameters for the generation.
Show properties
Show properties
string
required
Text description of the video to generate. Supports Chinese and English. Recommended max 500 characters.
number
required
Video length in seconds.
- 1.0 series: integer from
2to12 - 1.5 Pro: integer from
4to12
string
default:"720p"
Video resolution. Options:
480p, 720p, 1080pDefault: 720p for 1.5 Pro and 1.0 Lite, 1080p for 1.0 Pro and Pro Fast.string
default:"16:9"
Aspect ratio. Options:
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveadaptive auto-selects the best ratio based on the prompt (1.5 Pro only for T2V).number
Random seed for reproducibility. Range:
-1 to 4294967295. -1 means random.boolean
default:false
Whether to fix the camera position.
boolean
default:false
Whether to add a watermark to the video.
boolean
default:true
Seedance 1.5 Pro only. Generate synchronized audio with the video. Supports voice, sound effects, and background music. Place dialogue in double quotes for best results.
boolean
default:false
Return the last frame of the generated video as an image. Useful for chaining multiple videos together.
boolean
default:false
Seedance 1.5 Pro only. Enable draft mode for faster generation at lower quality. Useful for rapid iteration.
string
default:"default"
Service tier. Options:
default (standard priority), flex (lower priority, may queue longer).string
URL to receive a webhook when the task completes.
object
Custom key-value metadata to attach to the task.
{
"success": true,
"data": {
"id": "task_abc123",
"status": "pending",
"type": "text-to-video",
"provider": "seedance",
"model": "seedance-1-5-pro",
"created_at": "2026-01-15T10:00:00Z",
"estimated_seconds": 40
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters"
}
}
⌘I