CQTAI
Seedance 2 · Video

First/Last Frame VideoNEW

📌 What is thisGiven a first frame (optionally a last frame too), generate a video that starts from the first frame and transitions toward the last.
💡 When to useUse to precisely control the opening frame; add a last frame to also control the ending and produce a transition. First/last frames are independent from image-to-video reference images.

Endpoints

UsageMethodPath
Submit taskPOST/api/cqt/generator/seedance2
Query ResultGET/api/cqt/info/seedance2?id={taskId}
Recommended polling intervalVideo generation is slow (~1-4 min); poll every 15s until status = succeeded / failed.

Request Parameters

ParamTypeRequiredDescription
modelstringFixed seedance2
firstFrameUrlstringRequiredFirst-frame image URL (required)
lastFrameUrlstringLast-frame image URL (optional; produces a first-to-last transition)
promptstringTransition / camera description (optional)
secondsintegerDuration (sec) 4-15, default 5 (alias duration)
resolutionstringResolution 480p / 720p, default 720p
generateAudiobooleanWhether to generate audio, default false

Request Example

curl -X POST https://api.cqtai.com/api/cqt/generator/seedance2 \
  -H 'Authorization: Bearer <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "seedance2",
    "prompt": "smooth transition between the two frames",
    "firstFrameUrl": "https://example.com/first.jpg",
    "lastFrameUrl": "https://example.com/last.jpg",
    "seconds": 5,
    "resolution": "720p"
  }'
# -> { "code":200, "data":"<taskId>" }

Response Example

{
  "code": 200,
  "data": {
    "id": "<taskId>",
    "status": "succeeded",
    "resultUrl": "https://.../result.mp4",
    "createTime": "2026-06-15 10:00:00",
    "completeTime": "2026-06-15 10:02:00"
  }
}

Response Fields

FieldTypeDescription
codenumberStatus code; 200 means success
msgstringStatus message; "success" on success
data.idstringTask ID (taskId); use it to poll GET /api/cqt/info
data.statusstringTask status: succeeded / failed / otherwise still processing
data.resultUrlstringURL of the generated video; returned when status = succeeded, null otherwise
data.errorMsgstring | nullFailure reason; null on success
data.createTimestringTask creation time
data.completeTimestring | nullTask completion time; null until finished

Billing & Credits

5 credits x duration (sec) (x your user rate). Auto-refunded on failure.