Overview
Seedance 2.5 is a next-generation video creation model with major improvements in long-form storytelling, omni reference support, and editing. It can generate up to 30 seconds of video in one request, extend videos over multiple rounds, accept up to 50 omni reference assets per request, and perform precise timestamp-based editing. Improved visual quality produces results with a more realistic, cinematic look.
1. Before you begin
You need two things: an API key, and a funded API balance.
- Click Get API Key in the card above to generate a key instantly.
- Click Add Balance to fund your account — billed in USD, and separate from your kaze.ai web credits.
- Buying at volume? Contact sales for discounted rates.
Base URL
https://api-srv.kaze.ai
Use this root with the /api/ext/v1 paths below.
Authorization
Bearer <KAZE_API_KEY>
Send it in the Authorization header.
Content type
application/json
All examples use JSON request bodies.
2. Pricing
Billed per second of output. Cost scales with resolution and duration. Enterprise saves 30% on every generation.
dreamina-seedance-2-5-hc
Seedance 2.5
3. Quick Start
The fastest way to test the API is to create a video from text. No asset upload is required.
Start Here
Create Your API Key
Generate a key to call Seedance 2.5. Usage draws from your API Balance.
Step 1. Set up your API key
Create an API key and store it securely on your server.
export API_BASE_URL="https://api-srv.kaze.ai"
export KAZE_API_KEY="<YOUR_API_KEY>"Every request must include:
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/jsonDo not expose your API key in browser code, mobile apps, or public repositories.
Step 2. Create a video (Text-to-Video Generation)
curl --request POST "$API_BASE_URL/api/ext/v1/video/generate" \
--header "Authorization: Bearer $KAZE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-5-hc",
"content": [
{
"type": "text",
"text": "A cat and a dog are running through a sunny park."
}
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9"
}'The API accepts the task immediately and returns a task ID:
{
"task": {
"id": "mvt-xxxxxxxx",
"status": "pending"
}
}A successful response means the task was created. It does not mean the video is ready.
Step 3. Check the task status
Replace mvt-xxxxxxxx with the task ID returned in Step 2.
curl "$API_BASE_URL/api/ext/v1/video/tasks/mvt-xxxxxxxx" \
--header "Authorization: Bearer $KAZE_API_KEY"Check the endpoint every 5–10 seconds until the task reaches a final status.
| Status | Meaning |
|---|---|
pending | The task is waiting to start. |
processing | The video is being generated. |
completed | The video is ready. |
Step 4. Get the video
When the status is completed, read the generated video URL from task.outputs.
{
"task": {
"id": "mvt-xxxxxxxx",
"status": "completed",
"outputs": [
"https://media.example.com/generated-video.mp4"
],
"last_frame_url": "https://media.example.com/last-frame.jpg"
}
}last_frame_url is included only when return_last_frame is enabled. You have now completed your first Seedance API request.
4. Reference-to-Video Generation
Skip this section if you only need text-to-video. Images, videos, and uploaded audio must be added through the Asset API before they can be used in a video request. The workflow is:
- Add the media URL as an asset.
- Save the returned asset ID.
- Wait until the asset status is completed.
- Use
asset://{asset_id}in the video request. - Create and poll the video task normally.
Step 1. Add an asset
curl --request POST "$API_BASE_URL/api/ext/v1/assets" \
--header "Authorization: Bearer $KAZE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-5-hc",
"url": "https://media.example.com/reference.webp",
"asset_type": "Image",
"name": "reference-image"
}'Example response:
{
"id": "asset-xxxxxxxx",
"status": "processing"
}Save the value of id.
Step 2. Wait for the asset
Use the asset status endpoint until the returned status is completed.
curl --request POST "$API_BASE_URL/api/ext/v1/assets/get" \
--header "Authorization: Bearer $KAZE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-5-hc",
"asset_id": "asset-xxxxxxxx",
"task_id": ""
}'Do not submit the video task while the asset is still processing.
Step 3. Reference the asset
- Add the completed asset to the
contentarray - The request must still contain at least one text item.
curl --request POST "$API_BASE_URL/api/ext/v1/video/generate" \
--header "Authorization: Bearer $KAZE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-5-hc",
"content": [
{
"type": "text",
"text": "Use @image1 as the character and @image2 as the background. Follow the camera movement from @video1 and use @audio1 as ambient sound."
},
{
"type": "image_url",
"image_url": {
"url": "asset://asset-xxxxxxxx"
},
"role": "reference_image"
},
{
"type": "image_url",
"image_url": {
"url": "asset://asset-xxxxxxxx"
},
"role": "reference_image"
},
{
"type": "video_url",
"video_url": {
"url": "asset://asset-xxxxxxxx"
},
"role": "reference_video"
},
{
"type": "audio_url",
"audio_url": {
"url": "asset://asset-xxxxxxxx"
},
"role": "reference_audio"
}
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9"
}'The API accepts the task immediately and returns a task ID:
{
"task": {
"id": "mvt-xxxxxxxx",
"status": "pending"
}
}Then Check the task status and Get the video.
Supported reference types
| Media | Type | Roles |
|---|---|---|
| Image | image_url | reference_image, first_frame, last_frame |
| Video | video_url | reference_video |
| Audio | audio_url | reference_audio |
Uploaded images and videos use an asset:// URL. Audio can use either an uploaded asset or a public HTTPS URL.
Referencing media in a prompt
Reference media by its position in the content array:
@image1,@image2@video1@audio1
Example:
Use @image1 as the character and @image2 as the background.
Follow the camera movement from @video1 and use @audio1 as ambient sound.Configuration methods
Omni reference-to-video without specifying a subtask
For an omni reference-to-video task, if you do not need to distinguish the specific subtask type and do not need to customize the video aspect ratio or duration, use the following configuration method . This can avoid errors caused by task-type constraints.
- Set
omni_reference_task_typetoauto. - Set
content.roletoreference_image,reference_video, orreference_audio. ratiomust beadaptive; duration must be-1; the reference video must be4-30seconds long.
Common Recipes
| Recipe | Description |
|---|---|
| Text to video | Use one text item. No asset upload is required. |
| Image to video | Add an image with the reference_image or first_frame role. |
| First and last frame | Add two image items using the first_frame and last_frame roles. |
| Video reference | Upload and process a video asset, then add it with the reference_video role. |
| Audio reference | Use an uploaded audio asset or a public HTTPS audio URL with the reference_audio role. |
API Reference
Endpoints
| Action | Method | Path |
|---|---|---|
| Check balance | POST | /api/ext/v1/get_quota |
| Add an asset | POST | /api/ext/v1/assets |
| Check an asset | POST | /api/ext/v1/assets/get |
| Rename an asset | POST | /api/ext/v1/assets/update |
| Create a video | POST | /api/ext/v1/video/generate |
| Get a video task | GET | /api/ext/v1/video/tasks/{task_id} |
| List video tasks | GET | /api/ext/v1/video/tasks |
Video parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | Seedance model ID. Use one of the enabled IDs above. |
content | array | Yes | - | 1-50 content items. Include at least one text item. |
duration | integer | No | 10 | Output length in seconds. Supported range depends on the model, commonly 4-30 seconds. |
resolution | string | No | 720p | 480p, 720p. |
ratio | string | No | 16:9 | 21:9, 16:9, 4:3, 1:1, 3:4, or 9:16. |
generate_audio | boolean | No | false | Generate synchronized audio in the same request. |
watermark | boolean | No | false | Add an AI watermark to the generated video. |
return_last_frame | boolean | No | false | Return the last frame URL with the completed task. |
Model
| Model ID | Notes |
|---|---|
dreamina-seedance-2-5-hc | Seedance 2.5 |
Troubleshooting
The request returned HTTP 200, but there is no video
Video generation is asynchronous. Save task.id and check the task endpoint until the status is completed.
The asset cannot be used
Make sure the asset status is completed and the URL uses this format: asset://asset-xxxxxxxx
The request is rejected
Check that:
- The API key is valid.
- The account has sufficient balance.
- content contains at least one text item.
- The model ID is enabled for your account.
- Parameter values are supported by the selected model.