Brighten an underexposed AI video: exposure in video-filter
To lift a dark clip in Sume, send filtergraph exposure=exposure=0.6 to video-filter. Range -3 to 3 stops, one $0.02 job, source clip up to 300 seconds.

To brighten a dark video with the Sume API, send exposure=exposure=0.6 as the filtergraph of a video-filter job. The exposure filter is on Sume's allowlist, takes only inline numbers, and returns a new MP4 for one flat $0.02 job. The source clip is never changed.
This is the opposite of the dim op in the same endpoint, which only darkens. If a generated or recorded clip comes out too dark to read on a phone, exposure is the right lift.
What does the exposure filter do?
The FFmpeg documentation describes exposure as adjusting the exposure of the input video, with an exposure option from -3 to 3 (default 0) and a black level option from -1 to 1 (default 0). Positive values brighten; negative values darken. Because the filter takes plain numbers and no file path, it passes Sume's allowlist check, which refuses any filter that could read a path or a socket.
Start small. A value of 0.4 to 0.8 usually recovers a murky clip without clipping the highlights. A value of 2 or more will blow out skin tones and bright backgrounds.
How do I send the request?
Import the clip into your workspace first, because video_url must be a media.sume.com artifact or asset. Then submit the job with an Idempotency-Key; the endpoint is async by default, so poll the job and read the result.
The result has kind: video_filter and a new video_url (a fresh artf_), plus the compiled filters[]. Send POST /v1/video-filter/check with the same body first if you want a free, unbilled validation of the program.
curl -X POST https://api.sume.com/v1/video-filter \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: exposure-lift-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
"filtergraph": "exposure=exposure=0.6"
}'Which Sume model clips are in range?
Any clip that lives on the Sume media host works, whatever made it. The only hard limit is on length: the video filter refuses a source longer than 300 seconds with output_duration_exceeded. The generation models in the table below all produce clips well inside that cap, so the filter runs on a single result with no pre-trimming.
| Model id | Clip length | Fits the filter cap? |
|---|---|---|
| wan-3.0 | 2 to 30 seconds | Yes |
| gemini-omni-flash-1.1 | 3 to 10 seconds | Yes |
| grok-imagine-video-1.5 | 4 to 15 seconds | Yes |
| Uploaded footage | Up to 300 seconds | Trim longer clips first |
When should I use exposure instead of normalize or histeq?
Use exposure when you want a predictable, uniform lift and you know roughly how many stops you need. Reach for normalize or histeq when the clip looks flat and washed out and you want the tool to stretch contrast automatically. If the picture is both dark and flat, chain them in one graph, separated by commas, for example exposure=exposure=0.5,normalize. A graph can hold up to 32 named filters and 2,048 characters.
Whatever you pick, run the free check first. A program that passes can still fail on the box for a bad expression, in which case you get a structured job error rather than a silent bad render.
Sources
Related posts
More in Media tools
- Thicken or thin bright shapes in a video: dilation and erosion by API
dilation grows bright areas and erosion shrinks them, two allowlisted filters in Sume's video filter. When they help and how to check cheaply.
- Make the spoken caption word bigger or bolder: typography ranges
Sume's design.typography sets weight, spoken-word scale, size, safe width and outline width for burned-in captions. Here are the exact ranges and the 400s.
- Reduce green spill on a subject: despill in Sume video-filter
To remove a green cast from a person shot against a green backdrop, send despill=type=green:mix=0.6 to Sume's video-filter. One $0.02 job per clip.
- Swap the colours of a video by API: the swapuv chroma-swap look
swapuv exchanges a clip's U and V chroma channels and leaves brightness alone, a quick surreal colour look. How to run it in Sume's video filter.
Written by Sume