Seedance 2 · Video
First/Last Frame VideoNEW
📌 What is this:Given a first frame (optionally a last frame too), generate a video that starts from the first frame and transitions toward the last.
💡 When to use:Use 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
| Usage | Method | Path |
|---|---|---|
| Submit task | POST | /api/cqt/generator/seedance2 |
| Query Result | GET | /api/cqt/info/seedance2?id={taskId} |
⏱ Recommended polling interval:Video generation is slow (~1-4 min); poll every 15s until status = succeeded / failed.
Request Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| model | string | — | Fixed seedance2 |
| firstFrameUrl | string | Required | First-frame image URL (required) |
| lastFrameUrl | string | — | Last-frame image URL (optional; produces a first-to-last transition) |
| prompt | string | — | Transition / camera description (optional) |
| seconds | integer | — | Duration (sec) 4-15, default 5 (alias duration) |
| resolution | string | — | Resolution 480p / 720p, default 720p |
| generateAudio | boolean | — | Whether 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
| Field | Type | Description |
|---|---|---|
| code | number | Status code; 200 means success |
| msg | string | Status message; "success" on success |
| data.id | string | Task ID (taskId); use it to poll GET /api/cqt/info |
| data.status | string | Task status: succeeded / failed / otherwise still processing |
| data.resultUrl | string | URL of the generated video; returned when status = succeeded, null otherwise |
| data.errorMsg | string | null | Failure reason; null on success |
| data.createTime | string | Task creation time |
| data.completeTime | string | null | Task completion time; null until finished |
Billing & Credits
5 credits x duration (sec) (x your user rate). Auto-refunded on failure.