curl --request POST \
--url https://api.krea.ai/generate/video/bytedance/seedance-2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water."
}
'import requests
url = "https://api.krea.ai/generate/video/bytedance/seedance-2"
payload = { "prompt": "A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water." }
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({
prompt: 'A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.'
})
};
fetch('https://api.krea.ai/generate/video/bytedance/seedance-2', 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.krea.ai/generate/video/bytedance/seedance-2",
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([
'prompt' => 'A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.'
]),
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.krea.ai/generate/video/bytedance/seedance-2"
payload := strings.NewReader("{\n \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\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.krea.ai/generate/video/bytedance/seedance-2")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.krea.ai/generate/video/bytedance/seedance-2")
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 \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "backlogged",
"created_at": "2023-11-07T05:31:56Z",
"completed_at": null,
"result": null,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Seedance 2.0*
Flagship video model with native audio, references, and frame animation.
- This API endpoint includes additional Krea functionality beyond the base Seedance 2 model, including prompt enhancement and upscaling support.
curl --request POST \
--url https://api.krea.ai/generate/video/bytedance/seedance-2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water."
}
'import requests
url = "https://api.krea.ai/generate/video/bytedance/seedance-2"
payload = { "prompt": "A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water." }
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({
prompt: 'A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.'
})
};
fetch('https://api.krea.ai/generate/video/bytedance/seedance-2', 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.krea.ai/generate/video/bytedance/seedance-2",
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([
'prompt' => 'A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.'
]),
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.krea.ai/generate/video/bytedance/seedance-2"
payload := strings.NewReader("{\n \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\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.krea.ai/generate/video/bytedance/seedance-2")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.krea.ai/generate/video/bytedance/seedance-2")
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 \"prompt\": \"A tranquil bay with colorful fishing boats anchored, their reflections mirrored in the still water.\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "backlogged",
"created_at": "2023-11-07T05:31:56Z",
"completed_at": null,
"result": null,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Pricing
| Resolution | Video Reference | Price |
|---|---|---|
| 480p | Yes | $0.0809/sec |
| 480p | No | $0.1348/sec |
| 720p | Yes | $0.182/sec |
| 720p | No | $0.3034/sec |
| 1080p | Yes | $0.4096/sec |
| 1080p | No | $0.6826/sec |
| 4k | Yes | $1.6384/sec |
| 4k | No | $2.7306/sec |
Deprecated request aliases
Deprecated request aliases
| Deprecated | Use instead | Accepted until |
|---|---|---|
startImage | start_image | 2026-06-19 |
aspectRatio | aspect_ratio | 2026-06-19 |
endImage | end_image | 2026-06-19 |
referenceImages | reference_images | 2026-06-19 |
referenceVideos | reference_videos | 2026-06-19 |
referenceAudios | reference_audios | 2026-06-19 |
generateAudio | generate_audio | 2026-06-19 |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
URL to receive a POST request when the job completes. The webhook will receive the job data including results.
Body
Can be an external URL, base64 data URI, or uploaded asset URL.
102416:9, 4:3, 1:1, 3:4, 9:16, 21:9 Can be an external URL, base64 data URI, or uploaded asset URL.
10249Can be an external URL, base64 data URI, or uploaded asset URL.
10243Can be an external URL, base64 data URI, or uploaded asset URL.
10243Can be an external URL, base64 data URI, or uploaded asset URL.
10244 <= x <= 15480p, 720p, 1080p, 4k -9007199254740991 <= x <= 900719925474099112Show child attributes
Show child attributes
When true, upscales the completed Seedance 2 video to produce an output up to 8K.
When true, rewrites the prompt for Seedance 2 using Krea prompt enhancement before video generation.
Response
The resulting job data. This will be returned in a pending state until the job is completed. See /jobs/{id} for retrieving the results.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$backlogged, queued, scheduled, processing, sampling, intermediate-complete, completed, failed, cancelled ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Show child attributes
Show child attributes
Was this page helpful?