Keep one color, gray out the rest of a video: chromahold API
Sume's video filter allowlists chromahold, which keeps one key color and turns the rest gray. Set color, similarity and blend, then check the graph for free.

A selective-color or color-pop look keeps one hue, such as a red jacket, and drops the rest of the frame to gray. In Sume that is chromahold inside the filtergraph of Video filter, where it is listed under Tone / colour. In a one-pixel test with ffmpeg 9.0.1, a pure red frame stayed red and a green one came out gray with the settings below. The output is a new MP4.
Which chromahold options set the look?
| Option | What it does |
|---|---|
color | The key color to keep, default black. Name or hex. |
similarity | How close a pixel must be to the key to stay colored, 0.00001 to 1, default 0.01. The default is very tight, so raise it. |
blend | Softness at the edge of the kept range, 0 to 1, default 0. |
yuv | Set true if you give the key color in YUV instead of RGB, default false. |
How do I run a color-pop pass?
Pick the key from a frame of your clip (a video inspect still is enough to sample it), then check the graph. Real footage has shading, so expect to try a few similarity values between 0.1 and 0.4 on a short clip before running the full file.
curl -X POST https://api.sume.com/v1/video-filter/check \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/product.mp4",
"filtergraph": "chromahold=color=red:similarity=0.25:blend=0.1"
}'Why is only part of my subject staying colored?
Lighting. A red jacket in shadow and in sun are different pixel values, and a narrow similarity keeps only the band around the key. Raise similarity in small steps and add blend so the edge fades instead of cutting. If the wrong objects keep color, lower it again or choose a key closer to the subject's mid-tone.
How is this different from making a video black and white?
A full desaturate has no kept color at all; see make a video black and white. Chromahold is the in-between: one hue survives. It keys by color, not by object, so anything else of a similar hue in frame stays colored too. For isolating a subject by shape, Sume's video filter has no mask option.
What does a filter job cost and where are the limits?
The docs list $0.02 per encode job, with a source of at most 300 seconds, a filtergraph of at most 2048 characters and 32 named filters. The /v1/video-filter/check route runs the same allowlist and source checks for free and returns valid and next_action; a graph that passes can still fail on the worker (bad expression, memory, time), which comes back as a structured job error.
Sources
Related posts
More in Developers
- Kling Avatar v2 audio formats vs Sume Fabric audio_url
fal lists MP3, OGG, WAV, M4A and AAC audio for Kling Avatar v2. Sume Fabric takes an audio_url plus a still; here is how the two inputs compare.
- Krea 2 creativity parameter vs Sume's unsupported_parameter
Krea 2 exposes creativity as a tunable request parameter. Sume has no creativity field and rejects it with a 400.
- Deprecation and Sunset headers before 410 Gone: Sume's old names
Krea's retired Kling endpoints send Deprecation and Sunset headers, then 410 Gone. Here is how to detect that in code and which Sume aliases still work.
- Lambda durable functions with Pydantic AI: Sume submit as a step
AWS says each model and tool call becomes a durable step that is not repeated after an interruption. Here is how to shape a Sume submit as that step.
Written by Sume