ByteDance
Seedance 2.0
A multimodal video generation model for text prompts, first-frame animation, and reference-guided production clips.
POST
/sjolt-ai/v1/bytedance/seedance-2.0/fast/image-to-videoSeedance 2.0 Fast Image To Video API
Endpoint:
http
POST /sjolt-ai/v1/bytedance/seedance-2.0/fast/image-to-video
Generate a video from a required first-frame image and prompt, with an optional ending frame.
Authentication
Include your sjolt API key on every request:
http
Authorization: Bearer $SJOLT_API_KEY
Create a task
bash
curl /sjolt-ai/v1/bytedance/seedance-2.0/fast/image-to-video \
-H "Authorization: Bearer $SJOLT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "A cinematic product launch shot with slow camera movement, realistic lighting, synchronized ambient sound, and no text overlays.",
"resolution": "720p",
"duration": "8",
"aspect_ratio": "16:9",
"seed": -1,
"image_url": "https://example.com/first-frame.png",
"end_image_url": "https://example.com/last-frame.png"
},
"webhook": "https://example.com/webhook"
}'Request body:
json
{
"input": {
"prompt": "A cinematic product launch shot with slow camera movement, realistic lighting, synchronized ambient sound, and no text overlays.",
"resolution": "720p",
"duration": "8",
"aspect_ratio": "16:9",
"seed": -1,
"image_url": "https://example.com/first-frame.png",
"end_image_url": "https://example.com/last-frame.png"
},
"webhook": "https://example.com/webhook"
}Successful response:
json
{
"success": true,
"data": {
"task_id": "gen_7nz4q8x2"
}
}Query task status and results
bash
curl /sjolt-ai/v1/tasks/{task_id} \
-H "Authorization: Bearer $SJOLT_API_KEY"Successful response:
json
{
"success": true,
"data": {
"task_id": "gen_7nz4q8x2",
"status": 1,
"output_urls": [
"https://file.sjolt.ai/output/seedance-2-0-result.mp4"
],
"error": null,
"create_time": "2026-06-30T12:00:00.000Z",
"update_time": "2026-06-30T12:04:20.000Z"
}
}Status values:
| Status | Meaning |
|---|---|
0 | Running |
1 | Succeeded. Read generated MP4 URLs from data.output_urls. |
2 | Failed. Read the failure reason from data.error. |
Parameters
| Parameter | Required | Type | Supported values | Description |
|---|---|---|---|---|
prompt | Yes | string | Non-empty text | Describes the video to generate. |
image_url | Yes | string | Public image URL | Opening frame used to drive the video. |
end_image_url | No | string | Public image URL | Optional ending frame for first/last-frame generation. |
resolution | No | string | 480p, 720p | Output resolution. Defaults to 720p when omitted. |
duration | No | string or number | an integer from 4 to 15 seconds | Output duration. Defaults to 5 seconds when omitted. |
aspect_ratio | No | string | auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 | Output frame ratio. auto lets the service choose. |
seed | No | integer | Any integer, commonly -1 for random | Controls reproducibility when supported by the backend. |
webhook | No | string | Callback URL string | Top-level callback URL. See Webhook callback. |
Notes
- Send generation parameters under the top-level
inputobject. Optionalwebhookis a top-level request field alongsideinput. - Do not send an internal provider field. sjolt selects the backend provider internally.
- Only use parameters listed for this selected variant. Unsupported parameters may be ignored or rejected by validation.
- For reference-to-video variants, billable duration is based on input reference video duration plus output video duration.
Webhook callback
If you include a top-level webhook URL in the create-task request, sjolt sends a best-effort POST to that URL when the task reaches a terminal state.
http
Content-Type: application/json
Succeeded callback:
json
{
"task_id": "gen_7nz4q8x2",
"status": "succeeded",
"output": {
"output_url_list": [
"https://file.sjolt.ai/output/result.png"
]
},
"error": null
}Failed callback:
json
{
"task_id": "gen_7nz4q8x2",
"status": "failed",
"output": {
"output_url_list": []
},
"error": "failure reason"
}Webhook delivery is best-effort. Query /sjolt-ai/v1/tasks/{task_id} for final status and result URLs.