video_filter_too_many_ops: more than 8 ops, use filtergraph

Sume video-filter accepts at most 8 ops. A ninth returns video_filter_too_many_ops; move extra pixel work into the filtergraph, which has its own caps.

4 min readSume
All posts

A Sume video-filter program takes at most 8 entries in ops[]. A ninth returns video_filter_too_many_ops. The ops list only knows dim and crop, so more steps, or any other pixel work, go in the filtergraph field of the same request.

Limits are from the Video filter docs, read 2026-10-01. Blackmagic's Resolve 21.1 announcement says assistants such as Claude can batch render; if an assistant builds your program, this is the limit it will hit.

What are the program limits?

The ops list holds at most 8 entries and runs before the filtergraph. A request needs at least one op or a filtergraph.

Where each kind of step goes, from the Video filter docs, read 2026-10-01.
StepGoes inCount that matters
Luma dimops[] as dimCounts toward 8
Rectangle cropops[] as cropCounts toward 8
Blur, tone, geometry, fadefiltergraphCounts toward 32 filters
Anything beyond ops and graphA second video-filter job on the first job's MP4New request, new limits

What do I do with a ninth step?

If the ninth step is a crop or dim, fold it into the graph: the filtergraph is applied after ops[] and can hold up to 32 named filters. If it is other pixel work, such as a blur or a geometry change, it was always a filtergraph job, because ops[] refuses every op name except dim and crop.

Order is fixed: ops first, then the graph. See video-filter order of operations.

Does a long program stay one request?

Yes. Ops and filtergraph travel in one body, and the result is one new MP4 from one job, with the source untouched. Since each result is a new artf_ file, you can also feed it to a second request when a program truly needs more than one pass.

How do I find the error without paying?

Use POST /v1/video-filter/check, or the hosted MCP video_filter tool with check_only: true. Both are free and return diagnostics instead of a job.

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/talk.mp4",
    "ops": [
      { "op": "crop", "x": 0, "y": 0, "width": 1, "height": 0.9 },
      { "op": "dim", "amount": 0.9 }
    ],
    "filtergraph": "gblur=sigma=2,hflip"
  }'

Sources

Related posts

More in Developers

All Developers posts

Written by Sume