Flip a video upside down with the API: vflip in video-filter
To flip a video upside down in Sume, send filtergraph vflip to video-filter; hflip mirrors it. vflip, hflip and transpose are all on the allowlist.

To flip a video upside down with Sume, send "filtergraph": "vflip" to POST /v1/video-filter. hflip mirrors it left to right, and transpose rotates in 90 degree steps. All three are in the geometry group of the filtergraph allowlist.
The job returns a new MP4 and leaves the source alone. The video filter page lists the contract.
Which filter does what?
Picking the wrong one is the usual mistake: a mirror is not a rotation.
| Goal | Filter | On the allowlist |
|---|---|---|
| Upside down | vflip | Yes |
| Left-right mirror | hflip | Yes |
| Quarter turn | transpose | Yes |
| Free angle | rotate | Yes |
What is the request?
Import the clip first, because off-host URLs are refused at admit. Writes need an Idempotency-Key. You can chain filters inside one graph with commas.
curl -X POST https://api.sume.com/v1/video-filter \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: vflip-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"filtergraph": "vflip,hflip"
}'What does the flip not change?
Only the picture changes. Audio is inherited from the source, so a clip with speech keeps its speech, and text in the frame ends up mirrored or upside down with the picture. Sume does not read text and does not fix it.
The output is a new MP4 produced by the worker's ffmpeg, so check the result in a player before you publish.
How do I avoid a failed job?
Run the program through POST /v1/video-filter/check first. It costs nothing and names an unknown filter with the allowlist. Then poll the job rather than waiting on one request; sync mode waits at most 30 seconds, as the jobs page explains.
Never send vf, ffmpeg or cmd fields; the server compiles ffmpeg itself and refuses those with ffmpeg_fields_rejected.
Sources
Related posts
More in Media tools
- Flow Insert: add an object to a video, and the Sume API equivalent
Flow's Insert adds objects to a generated scene. What Google's launch post says, and how to add a prop to an existing clip with Gemini Omni video edit on Sume.
- Gemini Omni Flash outputs 24 FPS: conform to 25 or 30 with Sume
The Gemini API model card lists 24 FPS for Omni Flash output. If your timeline is 25, 30 or 60, Sume's video trim can conform it with an output fps field.
- Gemini video understanding: 100 vs 300 tokens a second vs Sume
Gemini reads video at about 100 tokens a second, or 300 at high resolution: 60,000 or 180,000 tokens for 10 minutes. How Sume's stills route compares.
- Hook, demo, CTA: assemble a product ad from 3 clips in one render
Build a 15-second holiday product ad from a hook clip, a demo clip and a call-to-action card with one Sume timeline render. Plan first, render second.
Written by Sume