Apply a LUT to video by API: no .cube file, use lutrgb curves
Sume's video filter cannot load a .cube LUT because lut3d is not allowlisted. Per-channel curves with lutrgb or lutyuv are the supported way to grade.

You cannot upload a .cube or other LUT file to Sume. The video filter docs name lut3d as not allowed, along with anything that reads a file. What a graph can use instead are lutrgb, lutyuv and lut, which take inline expressions, plus colour filters such as eq, colorbalance and colortemperature.
Blackmagic's DaVinci Resolve 21.1 notes mention additional camera transform LUTs and ACES Transform choices. Those are files and colour-managed transforms inside Resolve; none of them can be handed to Sume. Facts below are from Video filter and the compiler allowlist, read 2026-10-01.
Which grading filters are allowed?
| Group | Filters |
|---|---|
| Curves | lutrgb, lutyuv, lut |
| Balance and tone | eq, colorbalance, colorchannelmixer, colorlevels, colortemperature, colorcontrast, colorcorrect |
| Not allowed | lut3d, movie, drawtext, subtitles, trim, setpts |
How do I write a curve instead?
Put the expression in the filtergraph. This example applies a gamma to the red channel only; the expression syntax belongs to ffmpeg's lutrgb, so confirm the look on a short clip. You can approximate a creative LUT by hand, but a measured camera-to-display transform is a 3D table and cannot be reproduced with three 1D curves.
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/clip.mp4",
"filtergraph": "lutrgb=r=gammaval(0.9)"
}'What runs first, ops or the graph?
Ordered ops[] (dim and crop, max 8) run before the filtergraph. A dim darkens luma before your curve sees it, so grade expectations shift. See why ops run before the filtergraph.
What does it cost?
The docs list $0.02 per encode job and a free /check. If the clip is already graded in Resolve or another editor, export it graded and upload the result; Sume then only needs to cut or assemble it.
Sources
Related posts
More in Developers
- Colossyan callback vs polling, and Sume terminal-only webhooks
Colossyan posts finished or failed to your callback, or you poll every 5 s. Sume webhooks are terminal-only, so keep status_url polling as a backup.
- Colossyan intrinsicDurationTrackReference vs Sume scene duration
Colossyan can size a scene to the actor's speech. In Sume avatar videos you set voice.duration per scene, silence beats need it, and the total stays 4-60 s.
- Colossyan dynamicVariables vs Sume: fill placeholders yourself
Colossyan swaps {name} placeholders from dynamicVariables. Sume's avatar endpoint has no such field: fill the script yourself, one idempotent job per recipient.
- Creatify custom avatar lipsync_input and consent video, explained
Creatify custom avatars are built from a lipsync_input MP4 plus a consent video. On Sume, a photo input with an image_url creates a reusable avatar handle.
Written by Sume