roasOS
Workflows

Extend a video

Continue one video from its last frame and get one longer clip.

Extend a video continues one video that your workspace owns. roasOS takes the last frame of the video, makes new footage from that frame, and joins the two parts. You get ONE longer clip: the source, then the new footage.

1. Choose the source

Send exactly one source.

FieldUse it for
video_urlA video on https://cdn.roasos.com that your workspace owns
source_generation_idA finished video in your library

The source plus the new footage must fit in 178 seconds. To extend a longer video, cut it first with POST /v1/assembly/trim-video.

2. Write a prompt

Send a prompt that says what happens next. The new footage starts at the last frame of the source.

She puts the cup down, smiles at the camera and walks out of frame.

3. Choose the model and the length

The default model is seedance-2.5. You can send any image-to-video model as model. Refer to Models.

FieldRule
duration_secondsThe ADDED length. It must be one of the lengths of the model. The default is 5 seconds. auto is not accepted.
resolutionOptional. It must be one of the resolutions of the model. When you send none, roasOS uses the model resolution that is closest to the source.
generate_audioOptional. Send it only to a model that has a sound switch.

There is no aspect_ratio. The shape of the new footage follows the source.

4. Quote

Send quote_only: true. A quote spends nothing.

curl -X POST https://api.roasos.com/v1/workflows/extend \
  -H "Authorization: Bearer roasos_sk_..." \
  -H "Idempotency-Key: extend-cafe-001" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://cdn.roasos.com/uploads/.../videos/....mp4",
    "prompt": "She puts the cup down and walks out of frame.",
    "duration_seconds": 5,
    "quote_only": true
  }'

The quote has two parts: the new footage and one merge credit.

{
  "data": {
    "kind": "quote",
    "quote_id": "f70b2d51-...",
    "credits": 16,
    "credits_breakdown": { "continuation": 15, "merge": 1 },
    "pricing_version": "customer-pricing@2026-10-30.v14"
  }
}

5 seconds of new footage on seedance-2.5 at 720p costs 15 credits. The merge costs 1 credit. The total is 16 credits.

5. Confirm

Send the same body with the quote_id. Use the same idempotency key. The answer is 201 with the job envelope of the new footage (the continuation).

6. Read the run

curl https://api.roasos.com/v1/workflows/extend/1e9c4a70-... \
  -H "Authorization: Bearer roasos_sk_..."

Use the job id from step 5. When the continuation completes, roasOS starts the merge. The run tells you where the work is.

stageMeaning
continuationThe new footage is in progress.
mergingThe new footage is done. The merge is in progress.
completedmerged.result.url is the one longer clip.
failedThe new footage failed and was refunded.
merge_failedThe merge did not run. The new footage stays in your library and stays charged.

A webhook_url in the confirm request is delivered for the joined clip, not for the continuation.

Both parts are ordinary jobs. They appear in GET /v1/jobs and in your library. Refer to Jobs.

On this page