curl --request POST \
--url https://api.krea.ai/generate/video/bytedance/seedance-2-5 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings."
}
'import requests
url = "https://api.krea.ai/generate/video/bytedance/seedance-2-5"
payload = { "prompt": "Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings." }
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: 'Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.'
})
};
fetch('https://api.krea.ai/generate/video/bytedance/seedance-2-5', 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-5",
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' => 'Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.'
]),
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-5"
payload := strings.NewReader("{\n \"prompt\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\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-5")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.krea.ai/generate/video/bytedance/seedance-2-5")
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\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\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>"
},
"progress": 0.5
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Seedance 2.5*
Most advanced Seedance with 30s clips, native audio, and up to 50 references. Default choice for most video generations — quality is head and shoulders above other models, it supports durations up to 30 seconds, and it outputs up to 1080p. Reach for this first unless the user asks for a specific model, needs 4k output, or cost is the priority.
- This API endpoint includes Krea prompt enhancement in addition to the base Seedance 2.5 model.
curl --request POST \
--url https://api.krea.ai/generate/video/bytedance/seedance-2-5 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings."
}
'import requests
url = "https://api.krea.ai/generate/video/bytedance/seedance-2-5"
payload = { "prompt": "Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings." }
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: 'Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.'
})
};
fetch('https://api.krea.ai/generate/video/bytedance/seedance-2-5', 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-5",
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' => 'Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.'
]),
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-5"
payload := strings.NewReader("{\n \"prompt\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\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-5")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.krea.ai/generate/video/bytedance/seedance-2-5")
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\": \"Majestic fortress in the clouds, winged guards patrolling, reminiscent of celestial anime settings.\"\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>"
},
"progress": 0.5
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Pricing
| Resolution | Video Reference | Price |
|---|---|---|
| 480p | Yes | $0.0614/sec |
| 480p | No | $0.1027/sec |
| 720p | Yes | $0.1382/sec |
| 720p | No | $0.2311/sec |
| 1080p | Yes | $0.3402/sec |
| 1080p | No | $0.5686/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 |
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. When signing is configured, deliveries are signed with ECDSA P-256 (ES256); verify them with the keys at https://api.krea.ai/.well-known/jwks.json (see X-Krea-Webhook-* headers). Treat requests without these headers as unauthenticated.
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.
102430Can be an external URL, base64 data URI, or uploaded asset URL.
102410Can be an external URL, base64 data URI, or uploaded asset URL.
102410Can be an external URL, base64 data URI, or uploaded asset URL.
10244 <= x <= 30480p, 720p, 1080p -9007199254740991 <= x <= 9007199254740991Deprecated and ignored. Accepted until 2026-10-30T00:00:00Z, then rejected. Remove this field from requests.
12Show child attributes
Show child attributes
When true, rewrites the prompt for Seedance 2 using Krea prompt enhancement before video generation.
When true, generates a fast 480p draft of the video instead of a full-quality one, billed at the 480p rate. Use it to validate scene structure, motion, and prompt intent cheaply before rerunning with draft off. Any resolution sent alongside is ignored.
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
0 <= x <= 1Was this page helpful?