# Seedance 1.5 Pro Text To Video - Documentation

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown is available with `Accept: text/markdown` and `.md` URL variants.

Source: /docs/api-reference/model-apis-seedance-v1.5-pro-t2v

# Seedance 1.5 Pro Text To Video

POST

/

v3

/

async

/

seedance-v1.5-pro-t2v

Seedance 1.5 Pro Text To Video

cURL

```
curl --request POST \
--url https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v \
--header 'Authorization: ' \
--header 'Content-Type: ' \
--data '
{
"fps": 123,
"seed": 123,
"ratio": "",
"prompt": "",
"duration": 123,
"watermark": true,
"resolution": "",
"camera_fixed": true,
"service_tier": "",
"generate_audio": true,
"execution_expires_after": 123
}
'
```

```
import requests

url = "https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v"

payload = {
"fps": 123,
"seed": 123,
"ratio": "",
"prompt": "",
"duration": 123,
"watermark": True,
"resolution": "",
"camera_fixed": True,
"service_tier": "",
"generate_audio": True,
"execution_expires_after": 123
}
headers = {
"Content-Type": "",
"Authorization": ""
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

```
const options = {
method: 'POST',
headers: {'Content-Type': '', Authorization: ''},
body: JSON.stringify({
fps: 123,
seed: 123,
ratio: '',
prompt: '',
duration: 123,
watermark: true,
resolution: '',
camera_fixed: true,
service_tier: '',
generate_audio: true,
execution_expires_after: 123
})
};

fetch('https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
```

```
"https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v",
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([
'fps' => 123,
'seed' => 123,
'ratio' => '',
'prompt' => '',
'duration' => 123,
'watermark' => true,
'resolution' => '',
'camera_fixed' => true,
'service_tier' => '',
'generate_audio' => true,
'execution_expires_after' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: ",
"Content-Type: "
],
]);

$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.novita.ai/v3/async/seedance-v1.5-pro-t2v"

payload := strings.NewReader("{\n \"fps\": 123,\n \"seed\": 123,\n \"ratio\": \"\",\n \"prompt\": \"\",\n \"duration\": 123,\n \"watermark\": true,\n \"resolution\": \"\",\n \"camera_fixed\": true,\n \"service_tier\": \"\",\n \"generate_audio\": true,\n \"execution_expires_after\": 123\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "")
req.Header.Add("Authorization", "")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
```

```
HttpResponse response = Unirest.post("https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v")
.header("Content-Type", "")
.header("Authorization", "")
.body("{\n \"fps\": 123,\n \"seed\": 123,\n \"ratio\": \"\",\n \"prompt\": \"\",\n \"duration\": 123,\n \"watermark\": true,\n \"resolution\": \"\",\n \"camera_fixed\": true,\n \"service_tier\": \"\",\n \"generate_audio\": true,\n \"execution_expires_after\": 123\n}")
.asString();
```

```
require 'uri'
require 'net/http'

url = URI("https://api.novita.ai/v3/async/seedance-v1.5-pro-t2v")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = ''
request["Authorization"] = ''
request.body = "{\n \"fps\": 123,\n \"seed\": 123,\n \"ratio\": \"\",\n \"prompt\": \"\",\n \"duration\": 123,\n \"watermark\": true,\n \"resolution\": \"\",\n \"camera_fixed\": true,\n \"service_tier\": \"\",\n \"generate_audio\": true,\n \"execution_expires_after\": 123\n}"

response = http.request(request)
puts response.read_body
```

200

```
{
"id": ""
}
```

Seedance 1.5 pro text-to-video API.

This is an asynchronous API; only the task_id will be returned. You should use the task_id to request the [Task Result API](/docs/api-reference/model-apis-task-result) to retrieve the video generation results.

##

[​](#request-headers)

Request Headers

[​](#param-content-type)

Content-Type

string

required

Supports: `application/json`

[​](#param-authorization)

Authorization

string

required

Bearer authentication format, for example: Bearer {{API Key}}.

##

[​](#request-body)

Request Body

[​](#param-fps)

fps

integer

default:24

Frame rate (frames per second). Only 24 fps is supported.Optional values: `24`

[​](#param-seed)

seed

integer

Seed integer for controlling randomness. Range: [-1, 2^32-1]. -1 means using a random seed. The same seed with the same request produces similar (but not identical) results.Value range: [-1, 4294967295]

[​](#param-ratio)

ratio

string

default:"adaptive"

Aspect ratio of the generated video. ‘adaptive’: For text-to-video, the model intelligently selects the best ratio based on the prompt; for image-to-video, automatically selects based on the uploaded first frame image ratio.Optional values: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `adaptive`

[​](#param-prompt)

prompt

string

required

Text prompt describing the expected video content. Supports both Chinese and English. Recommended to be no more than 500 characters. To generate audio with dialogue, place the speech content in double quotes for better audio generation results.

[​](#param-duration)

duration

integer

default:5

Video duration in seconds. Supports specified duration within the range [4, 12]. Note: Duration affects billing.Value range: [4, 12]

[​](#param-watermark)

watermark

boolean

default:false

Whether the generated video includes a watermark. true: with watermark. false: without watermark.

[​](#param-resolution)

resolution

string

default:"720p"

Video resolution. Seedance 1.5 pro supports 480p, 720p and 1080p.Optional values: `480p`, `720p`, `1080p`

[​](#param-camera-fixed)

camera_fixed

boolean

default:false

Whether to fix the camera position. true: the platform appends a fixed camera instruction to the prompt (effect not guaranteed). false: camera is not fixed.

[​](#param-service-tier)

service_tier

string

default:"default"

Service tier for processing the request. ‘default’: Online inference mode with lower RPM and concurrency quotas, suitable for time-sensitive scenarios. ‘flex’: Offline inference mode with higher TPD quotas at 50% of the online mode price, suitable for latency-insensitive scenarios.Optional values: `default`, `flex`

[​](#param-generate-audio)

generate_audio

boolean

default:true

Whether the generated video includes synchronized audio. true: video includes automatically generated speech, sound effects, and background music based on the prompt and visual content. false: outputs silent video.

[​](#param-execution-expires-after)

execution_expires_after

integer

default:172800

Task timeout threshold in seconds, calculated from the created_at timestamp. Default: 172800 (48 hours). Range: [3600, 259200]. Tasks exceeding this time will be automatically terminated and marked as ‘expired’.Value range: [3600, 259200]

##

[​](#response)

Response

[​](#param-id)

id

string

The video generation task ID. Use this ID to query the task result API to check task status and retrieve the generated video URL upon success.

Last modified on April 10, 2026
