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
- 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.
- LLaDA-Image is open weights: Sume's Image API is a hosted catalog
LLaDA-Image (6B, Apache 2.0, released 2026-09-04) is a download, not an API id. Sume does not list it; use a catalog model with a text-in-image prompt.
- LMNT has shut down: what to know moving to Sume TTS
LMNT's site says it has shut down. If you move to Sume TTS 1.0, voice ids do not carry over, language must be set for non-English text, and text caps at 20000.
- LTX /v1/extend limits, and chaining clips with Sume frame_images
LTX's /v1/extend is 1080p only, adds 2-20 seconds, needs 73+ input frames. Sume has no extend call here: chain clips with frame_images, then join in Timeline.
Written by Sume