Cut a Seedance 2.5 clip shorter: video-trim or regenerate?
To shorten a Seedance 2.5 clip, cut it with video-trim at $0.02 a job. Regenerating re-rolls the whole video and cannot go under the model's 4-second minimum.

If a Seedance 2.5 clip is good but too long, cut it with Sume's POST /v1/video-trim instead of regenerating. Trim is $0.02 per job, keeps the footage you already approved, and runs worker ffmpeg with no model inference. Regenerating with a shorter duration produces a different video, and Seedance 2.5 accepts 4 to 30 seconds, so it cannot make anything shorter than 4.
Use the cut when the first seconds are right. Regenerate when the motion, the framing or the dialogue is wrong. The rest of this post covers the request, the two precision modes and a script.
When is a cut enough?
A cut is enough when you want a prefix or a middle range of what you already have: a 12-second clip trimmed to its best 6 seconds, or a 30-second Seedance 2.5 render whose ending drifts. The model's length range is 4 to 30 seconds on seedance-2.5, and other catalog models top out at 15, so the cut can also reach lengths the generator cannot produce, down to 0.2 seconds.
A cut is not enough when the problem is inside the frames. Trimming never fixes a face, a product shape or a line of dialogue. It also does not sequence clips; joining several is a Timeline job, and the trim page points there.
What does the request look like?
Trim needs a video_url on your workspace's media.sume.com storage, which includes Sume-generated artifacts, a start in seconds, and exactly one of end or duration. Duration runs from 0.2 to 900 seconds. An end past the source clamps and the result warns trim_clamped_to_source. An Idempotency-Key is required. Default mode is async, and mode: "sync" waits up to 30 seconds.
The result is a new MP4 artifact; the source is untouched. Read it at GET /v1/jobs/{id}/result, where kind is video_trim and video_url is the new file.
Exact or keyframe: which precision?
precision decides how the cut is made. Pick by what you do next.
| Precision | How it cuts | Trade-off |
|---|---|---|
| exact (default) | Frame-accurate re-encode (libx264, yuv420p) | Slower; allows an output width, height and fps conform |
| keyframe | Stream copy | Cut may start a GOP early; re-base against actual_start_seconds; no output conform |
How do I run it from a script?
This script keeps seconds 2 to 10 of a clip, waits up to 30 seconds, and prints the new file's URL. If the job is still running it prints the job id for polling instead.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.post(
"https://api.sume.com/v1/video-trim",
json={"video_url": os.environ["CLIP_URL"], "start": 2,
"end": 10, "mode": "sync"},
headers={**H, "Idempotency-Key": "trim-" + os.environ["CLIP_URL"][-24:]},
timeout=60,
)
r.raise_for_status()
job_id = r.json()["request_id"]
if r.status_code == 202:
print("still running; poll /v1/jobs/" + job_id + "/status")
else:
out = requests.get(f"https://api.sume.com/v1/jobs/{job_id}/result",
headers=H, timeout=30)
print(out.json())
What if the clip is not on media.sume.com?
Off-host URLs are rejected at admit with unsupported_media_source. Import the clip first with POST /v1/media-imports. A dead or foreign media.sume.com URL returns source_not_found, and a non-video returns unsupported_media_type.
Also remember that the audio belongs to the clip. audio: keep is the default and remuxes AAC; audio: drop removes the track. For other options see cutting a product video into feed cutdowns, and the Video trim reference for every refusal code.
Sources
Related posts
More in Media tools
- Cut out then upscale, or upscale then cut out? Order for PNG alpha
Upscale first, then remove the background last so nothing can drop alpha. Sume RMBG returns PNG with alpha; upscale takes output_format png, jpg or webp.
- Cyber Monday ad in 9:16, 1:1 and 16:9 from one clip with Timeline
Resize one offer video to vertical, square and landscape with Timeline 1.0 output width and height, fit blur or cover, for $0.30 across three renders.
- Edit Video in Sume: which models appear and why H3 Max does not
Sume's Edit Video mode lists Auto, Kling 3.0, Wan 3.0 and MiniMax H3 and needs a reference video. H3 Max and Grok Imagine are missing; the API differs.
- ElevenLabs sound effects API: 0.5-30 s, loop, and Sume's route
ElevenLabs POST /v1/sound-generation takes duration_seconds 0.5-30 and a loop flag. Sume lists no sound-effect endpoint; here is the music route and its limits.
Written by Sume