Dim a bright clip so captions are readable: Sume filter, free check
Sume video filter dims or crops a clip for $0.02 an encode, and POST /v1/video-filter/check validates the program free. How to dim 45 percent before captioning.

Dim it before you caption. Sume video filter applies an allowlisted dim, crop or filtergraph to one clip and returns a new MP4 for $0.02 per encode job. White captions on a bright beach or a studio-white background lose contrast; a dim pass is the cheap fix, and the source file stays untouched.
Check first, for free
POST /v1/video-filter/check runs the same schema, op whitelist and source preflight as the real encode, but creates no job, reserves no credits and touches no encoder. It returns valid, diagnostics, the compiled filter names, an estimate when valid, and next_action: submit_video_filter or fix_program_and_recheck. It needs no Idempotency-Key. A program that passes can still fail on the box, for example on memory or time, and that comes back as a structured job error.
The pipeline for one bright Short
Run the caption job on the new MP4's video_url, not the original. Over 20 clips a week, the dim pass adds $0.40.
| Step | Route | Cost |
|---|---|---|
| Validate the dim | POST /v1/video-filter/check | Free |
| Dim 0.45 | POST /v1/video-filter | $0.02 |
| Burn captions | POST /v1/video-captions | $0.20 |
| Total | $0.22 |
Limits
- The clip must be on media.sume.com. Import it first.
- You send ops, such as dim with an amount, or a filters-only filtergraph. Fields such as vf, ffmpeg, cmd and codec are rejected with ffmpeg_fields_rejected: the server compiles ffmpeg.
- An Idempotency-Key is required on the encode, not on the check.
Check, then encode
BODY='{"video_url":"https://media.sume.com/artifacts/artf_demo/talk.mp4","ops":[{"op":"dim","amount":0.45}]}'
curl -X POST https://api.sume.com/v1/video-filter/check \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" -d "$BODY"
curl -X POST https://api.sume.com/v1/video-filter \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: dim-1" -d "$BODY"Sources
Related posts
More in Media tools
- Dim bright footage before burning Reel captions: video filter 0.45
A dim op multiplies luma by an amount between 0 and 1 for $0.02, and the check call is free. Use it to keep captions legible on bright clips, then caption.
- Does Instagram accept a 60 fps Reel? Render 30 or 60 in Sume
Instagram's Reel page gives a 30 FPS minimum and I found no maximum on it. How Sume's Timeline renders 30 or 60 fps, and why 24 fps footage gains nothing at 60.
- Does Recast change the background? Check frames with video inspect
Docs say Recast keeps motion, camera, cuts and sound, not props. Compare matching stills from source and output with POST /v1/video-inspect.
- Dream Track prompt limit: 50 characters, and a longer brief on Sume
Dream Track takes a 50-character prompt in the YouTube app and 85 in YouTube Create. Who can use it, what you can't download, and a longer prompt on Sume.
Written by Sume