Troubleshooting
If requests fail, run okou doctor check-connector --env-name SEEDANCE_TOKEN or okou doctor check-connector --url https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks --method POST
Video preview
- Before generating a video, prepare a few keyframes matching the user's subject, style, and aspect ratio. Reuse suitable supplied or already approved images.
- Show the actual images through accessible links, briefly describe the intended motion, and ask the user to confirm. End the turn and wait; do not start a video job before confirmation. Revise the preview if requested.
- After confirmation, generate the video. Use the approved images as first/last frames or references when supported by the selected model; otherwise follow the approved visual direction in the prompt. Reuse existing confirmation for an unchanged preview.
Keep the preview message short: the images, a brief motion description, and one confirmation question.
How to Use
Video generation is asynchronous: submit a task → get a task ID → poll until succeeded → use the video URL (valid for 24 hours).
1. Text-to-Video (Standard — 1080p)
Write to /tmp/seedance_request.json:
{
"model": "dreamina-seedance-2-0-260128",
"content": [
{ "type": "text", "text": "A golden retriever puppy playing in autumn leaves, cinematic slow motion" }
],
"resolution": "1080p",
"ratio": "16:9",
"duration": 5
}
curl -s -X POST "https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks" --header "Authorization: Bearer $SEEDANCE_TOKEN" --header "Content-Type: application/json" -d @/tmp/seedance_request.json | jq -r '.id'
2. Text-to-Video (Fast — 720p, lower cost)
Write to /tmp/seedance_request.json:
{
"model": "dreamina-seedance-2-0-fast-260128",
"content": [
{ "type": "text", "text": "A timelapse of clouds rolling over mountain peaks, epic wide angle" }
],
"resolution": "720p",
"ratio": "16:9",
"duration": 5
}
curl -s -X POST "https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks" --header "Authorization: Bearer $SEEDANCE_TOKEN" --header "Content-Type: application/json" -d @/tmp/seedance_request.json | jq -r '.id'
3. Poll for Task Status
Replace <task-id> with the ID returned from the create call above.
curl -s "https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks/<task-id>" --header "Authorization: Bearer $SEEDANCE_TOKEN" | jq '{status: .status, video_url: .content.video_url, duration: .duration, resolution: .resolution}'
Poll until status is succeeded. Terminal states: succeeded, failed, expired, cancelled.
4. Image-to-Video (Animate a First Frame)
Write to /tmp/seedance_request.json:
{
"model": "dreamina-seedance-2-0-260128",
"content": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/your-image.jpg" },
"role": "first_frame"
},
{ "type": "text", "text": "The camera slowly zooms in on the subject" }
],
"resolution": "1080p",
"ratio": "16:9",
"duration": 5
}
curl -s -X POST "https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks" --header "Authorization: Bearer $SEEDANCE_TOKEN" --header "Content-Type: application/json" -d @/tmp/seedance_request.json | jq -r '.id'
5. Reference-to-Video (Character/Style Reference)
Write to /tmp/seedance_request.json:
{
"model": "dreamina-seedance-2-0-260128",
"content": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/character.jpg" },
"role": "reference_image"
},
{ "type": "text", "text": "The character walks forward confidently in an urban environment" }
],
"resolution": "1080p",
"ratio": "9:16",
"duration": 5
}
curl -s -X POST "https://ark.ap-southeast.bytepluses.com/api/v3/contents/generations/tasks" --header "Authorization: Bearer $SEEDANCE_TOKEN" --header "Content-Type: application/json" -d @/tmp/seedance_request.json | jq -r '.id'
6. Download Generated Video
Replace <video-url> with the content.video_url from the completed task.
curl -sL "<video-url>" -o /tmp/seedance_output.mp4
Model Reference
| Model ID | Tier | Max Resolution | Duration |
|---|---|---|---|
dreamina-seedance-2-0-260128 |
Standard | 1080p | 4–15s or -1 (smart) |
dreamina-seedance-2-0-fast-260128 |
Fast | 720p | 4–15s or -1 (smart) |
Key Parameters
| Parameter | Values | Default | Description |
|---|---|---|---|
resolution |
480p, 720p, 1080p |
720p |
Output resolution |
ratio |
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
adaptive |
Aspect ratio |
duration |
4–15 or -1 |
5 |
Duration in seconds; -1 = smart auto |
generate_audio |
true/false |
true |
Include AI-generated audio |
seed |
integer | -1 |
Fixed seed for reproducibility; -1 = random |
watermark |
true/false |
false |
Add watermark to output |
return_last_frame |
true/false |
false |
Also return the last frame as a PNG URL |
Image Role Values
| Role | Description |
|---|---|
first_frame |
Image used as the first frame of the video |
last_frame |
Image used as the last frame of the video |
reference_image |
Character/style reference (up to 9 images) |
reference_video |
Video style reference (up to 3 videos, URL only — no Base64) |
reference_audio |
Audio reference (up to 3 clips) |
Guidelines
- Video URLs expire in 24 hours — download immediately after
status: succeeded - Async flow — always poll GET after POST; do not re-submit the same task
- Rate limits — 3 concurrent tasks and 180 RPM for individual accounts
- Image input — supports public URLs or Base64 (
data:image/jpeg;base64,...); video input is URL only - No flex tier — Seedance only supports
service_tier: "default" - Task records expire — task IDs are deleted after 7 days