ByteDance

Seedance 2.0

A multimodal video generation model for text prompts, first-frame animation, and reference-guided production clips.

Image to Video Fast
POST/sjolt-ai/v1/bytedance/seedance-2.0/fast/image-to-video

Seedance 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:

StatusMeaning
0Running
1Succeeded. Read generated MP4 URLs from data.output_urls.
2Failed. Read the failure reason from data.error.

Parameters

ParameterRequiredTypeSupported valuesDescription
promptYesstringNon-empty textDescribes the video to generate.
image_urlYesstringPublic image URLOpening frame used to drive the video.
end_image_urlNostringPublic image URLOptional ending frame for first/last-frame generation.
resolutionNostring480p, 720pOutput resolution. Defaults to 720p when omitted.
durationNostring or numberan integer from 4 to 15 secondsOutput duration. Defaults to 5 seconds when omitted.
aspect_ratioNostringauto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16Output frame ratio. auto lets the service choose.
seedNointegerAny integer, commonly -1 for randomControls reproducibility when supported by the backend.
webhookNostringCallback URL stringTop-level callback URL. See Webhook callback.

Notes

  • Send generation parameters under the top-level input object. Optional webhook is a top-level request field alongside input.
  • 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.