Review a 30-second Wan 3.0 clip: video inspect caps at 24 stills

Video inspect returns at most 24 stills per call, so a 30-second clip needs a sample rate of 0.8 fps or an explicit list of 24 times. Python builds the request.

3 min readSume
All posts

To review a 30-second Wan 3.0 clip frame by frame, ask Video inspect for 24 stills: either { "fps": 0.8 }, which gives 24 mid-bin samples over 30 seconds, or an at list of up to 24 timestamps you choose. The docs cap a frames program at 24 values, so you cannot ask for every second of a 30-second clip in one call.

A 30 fps clip holds 900 frames (30 x 30), and Alibaba lists 30 fps MP4 for wan3.0-video (read 2026-10-08). Twenty-four stills are under 3 percent of them, which is enough to catch a cut, a morphing hand or a logo drift.

Two sampling choices

Video inspect frames program, per the docs
frames programResult for 30 sUse it for
{ "fps": 0.8 }24 evenly spaced stillsSkimming the whole clip
{ "at": [0, 1.25, 2.5, ...] }Up to 24 chosen timesChecking known moments, such as the last second
{ "fps": 1 }30 stills, more than the limit of 24Do not use on a 30 s clip

Build the request

Send either at or fps, never both. The clip must be a media.sume.com artifact or asset in your workspace; import it first with POST /v1/media-imports if it is not.

import json, os
duration, shots = 30, 24
# mid-bin timestamps: one still per 1.25 s bin
at = [round((i + 0.5) * duration / shots, 2) for i in range(shots)]
body = {
    "video_url": "https://media.sume.com/artifacts/artf_demo/wan-30s.mp4",
    "frames": {"at": at, "format": "jpeg", "max_edge": 768},
}
print(len(at), "stills; last at", at[-1], "s")
print("curl -X POST https://api.sume.com/v1/video-inspect \\")
print('  -H "Authorization: Bearer $SUME_API_KEY" -H "Content-Type: application/json" \\')
print('  -H "Idempotency-Key: review-wan-30s-001" -d', "'" + json.dumps(body) + "'")

Checking the end of the clip

Long takes tend to drift late, so put the extra stills where you doubt the clip. An at list such as [0, 5, 10, 15, 20, 24, 26, 28, 29, 29.8] samples the final seconds more densely than an even 0.8 fps would. Keep the list at 24 values or fewer and each value at least 0.

Reading the result

When the job completes, the resource carries probe and frames[{t,url,width,height}] as durable image artifacts. Check probe for duration and frame rate, then flip through the stills. The default mode is sync, which waits up to 30 seconds and returns 202 with a queued job if it takes longer; poll that job instead of resubmitting.

Inspect bills by its Modal compute, so it is a small line next to the video, which is why reviewing a draft at 480p before a 1080p re-render is cheap insurance.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume