Overview
Seedance 1.5 Pro is a ByteDance video generation model for short text-to-video, image-to-video, and video extension workflows. Use this page when you are ready to call the API after trying the model in the APIXO playground.| Capability | Value |
|---|---|
| Model ID | seedance-1-5-pro |
| Modes | text-to-video, image-to-video, video-extend |
| Prompt length | 3-2500 characters |
| Reference images | 1-2 URLs for image-to-video; the second image is used as the end frame |
| Source video | Exactly 1 public video URL for video-extend |
| Aspect ratios | auto, 1:1, 3:4, 4:3, 9:16, 16:9, 21:9 for text-to-video and image-to-video |
| Resolutions | 480p, 720p, 1080p |
| Duration | 4-12 seconds; use 4, 8, or 12 for predictable tier matching |
| Audio | Required sound toggle |
| Output | Generated or extended video URL in resultJson.resultUrls |
Endpoint and authentication
Base URL:| Method | Endpoint | Purpose |
|---|---|---|
POST | /generateTask/seedance-1-5-pro | Submit a generation task |
GET | /statusTask/seedance-1-5-pro?taskId={taskId} | Poll task status and retrieve results |
Copy-paste async quickstart
This minimal request submits a text-to-video task and returns ataskId.
taskId; you need it to poll for the final result.
Poll for result
resultJson after state becomes success:
Request body
Text-to-video
Image-to-video
Video extend
Parameters
Result delivery mode. Use
async for polling with statusTask, or callback for webhook delivery.Required when
request_type is callback. Must be a public HTTPS URL that can receive the final task payload. See Webhooks.Seedance 1.5 Pro input parameters.
Response format
Submit task response
POST /generateTask/seedance-1-5-pro returns a task ID when the task is accepted:
API status code.
200 means the task was accepted.Human-readable status message.
Unique task identifier used with the status endpoint.
Status response fields
Unique task identifier.
Current task state:
pending, processing, success, or failed.JSON string containing the generated or extended video URLs. Present when
state is success.Machine-readable failure code. Present when
state is failed.Human-readable failure message. Present when
state is failed.Task creation timestamp in Unix milliseconds.
Task completion timestamp in Unix milliseconds. Present after completion.
Processing duration in milliseconds. Present after completion when available.
Webhook callback mode
Use callback mode when your backend should receive the final result automatically instead of polling.Billing
Seedance 1.5 Pro is billed per second. The selectedresolution, duration, and sound value determine the total cost for all supported modes, including video-extend.
| Resolution | sound | Price |
|---|---|---|
480p | false | $0.012 / second |
480p | true | $0.024 / second |
720p | false | $0.024 / second |
720p | true | $0.048 / second |
1080p | false | $0.052 / second |
1080p | true | $0.104 / second |
720p with sound: false for 8 seconds costs $0.192.
For current route and market comparison pricing, see Pricing.
Latency and polling
Actual latency may vary by prompt complexity, input media, mode, route selection, and current queue load.video-extend includes source clip analysis and final stitching, so it can take longer than direct text-to-video or image-to-video generation.
| Mode | Duration | Typical generation time | Recommended first poll | Poll interval |
|---|---|---|---|---|
text-to-video, image-to-video | 4 seconds | 40s-60s | 40s after task creation | 5s-10s |
text-to-video, image-to-video | 8 seconds | 60s-90s | 60s after task creation | 5s-10s |
text-to-video, image-to-video | 12 seconds | 90s-120s | 90s after task creation | 5s-10s |
video-extend | 4 seconds | 45s-75s | 45s after task creation | 5s-10s |
video-extend | 8 seconds | 60s-110s | 60s after task creation | 5s-10s |
video-extend | 12 seconds | 90s-150s | 90s after task creation | 5s-10s |
429, slow down requests and retry with backoff. For account-level details, see System APIs.
Errors and troubleshooting
HTTP errors
| Code | Meaning | What to do |
|---|---|---|
400 | Invalid request body, missing required field, unsupported mode, unsupported resolution, invalid duration, malformed source URL array, or rejected prompt/media | Fix the request before retrying |
401 | Missing or invalid API key | Check the Authorization header |
402 | Insufficient balance or quota | Add balance or switch account/key |
403 | Key or route cannot access the model | Check permissions and route strategy |
429 | Rate limit or concurrency limit reached | Retry with exponential backoff |
500 | Server error or unmapped upstream error | Retry with backoff; contact support if it repeats |
502 | Upstream error | Retry with backoff |
504 | Upstream timeout | Retry or use callback mode for long-running jobs |
Task failure codes
| Fail code | Meaning | What to do |
|---|---|---|
MISSING_REQUIRED_PARAM | A required field such as prompt, video_urls, resolution, duration, or sound is missing | Fix the request before retrying |
INVALID_PARAMETER | One or more fields use an unsupported value or type | Check mode, media URLs, resolution, duration, sound, camera_fixed, seed, and watermark |
API_SERVICE_UNAVAILABLE | Video extension processing or generation is temporarily unavailable | Retry later |
PromptInvalid | The prompt was rejected or malformed | Rewrite the prompt and retry |
SensitiveContent | The prompt or generated content violated upstream policy | Change the prompt or reference media |
ImageFormatIncorrect | A reference image could not be accepted | Use a public JPG, PNG, or WebP image URL |
RateLimited | The upstream route rate limited the task | Retry later with backoff |
Timeout | The workflow did not finish in time | Retry, simplify the prompt, or use callback mode |
InsufficientBalance | The route could not continue because of balance or quota | Add balance before retrying |
Unknown error | The failure did not match a known public mapping | Retry or contact support with the taskId |
Common validation fixes
| Symptom | Fix |
|---|---|
mode is rejected | Use text-to-video, image-to-video, or video-extend |
image_urls is missing for image-to-video | Provide 1-2 public image URLs |
video_urls is missing for video-extend | Set input.mode to video-extend and provide exactly 1 public video URL |
resolution is rejected | Use 480p, 720p, or 1080p |
duration is rejected | Send an integer from 4 to 12 |
sound is rejected | Send a boolean: true or false |
| Prompt length error | Keep the trimmed prompt within 3-2500 characters |