Green screen removal by API: chromakey in a video filter graph
Sume's video filter allowlists chromakey and colorkey, but an MP4 holds no alpha, so a key must be composited inside the graph. Not AI background removal.

For footage shot on a solid green or blue backdrop, POST /v1/video-filter can run chromakey or colorkey, both on its filter allowlist. The result is a new MP4, which cannot carry transparency, so the keyed subject has to be composited onto something inside the same graph.
Adobe's September 2026 Firefly notes describe a Remove Background feature that detects subjects and strips the background across a clip with no frame-by-frame masking. That is matting by detection; Sume's filter is a color key. What Sume offers for detection is covered in what Sume covers for video background removal. Filter facts are from Video filter, read 2026-10-01.
Which key filters can a graph use?
| Filter | Listed under |
|---|---|
chromakey | Tone / colour |
colorkey | Tone / colour |
despill | Tone / colour |
overlay, split | Compositing, internal labels only |
lut3d, movie | Not allowed |
Where does the keyed subject go?
There is one input clip and no second file, so there is no background image to key onto. The graph can split the clip and composite the keyed copy over a processed copy of itself. This sketch greys out and blurs the backdrop copy; the similarity and blend values are ffmpeg options you tune per footage, and the graph is untested here. Validate it with the free /check first. Stream specifiers like [0:v] are refused; internal labels are fine.
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/greenscreen.mp4",
"filtergraph": "split[fg][bg];[bg]hue=s=0,gblur=sigma=20[bgb];[fg]chromakey=color=0x00FF00:similarity=0.15:blend=0.05[k];[bgb][k]overlay"
}'What if I want the subject on a new background?
Compose is the surface for that: Timeline compose places one Sume-hosted still and one video on screen together, but it takes a finished video layer and has no key option. A keyed result with real transparency is not something the video filter returns.
What does a filter job cost?
The docs list $0.02 per encode job, source up to 300 seconds, a filtergraph of at most 2048 characters and 32 named filters. The check is free and runs the same allowlist, but a bad expression or memory limit can still fail on the worker.
Sources
Related posts
More in Developers
- Claude mcp_tool_listing pin: what a Sume tool list depends on
A pinned mcp_tool_listing holds the Sume tool list fetched for one session scope. Sume's list depends on mcp:read vs mcp:write and never pushes list changes.
- Claude Code MCP 403 insufficient_scope: re-auth Sume with Write
Claude Code 2.1.274 names the missing permission on a 403 insufficient_scope. For Sume, a read-only grant lacks mcp:write: re-authenticate and turn Write on.
- Claude Code alwaysLoad meta false: deferred Sume tools
Claude Code 2.1.285: a tool with _meta anthropic/alwaysLoad false stays deferred under a server alwaysLoad. What that means for Sume's tool set.
- Claude Code API 400 after a tool returned an object: Sume results
Claude Code 2.1.286 fixed API 400s when a tool returned an object, number or boolean. Sume tools return text content blocks, errors too.
Written by Sume