Validate a video filter program for free before you encode

POST /v1/video-filter/check runs the same validation as the encode with no job and no credits. See what it returns and what it cannot promise about the encode.

4 min readSume
All posts

Yes: POST /v1/video-filter/check validates a video filter program without creating a job or reserving credits. It runs the same schema, operation whitelist, filtergraph allowlist and source preflight as the encode, and returns diagnostics instead of an error. It needs no Idempotency-Key.

Details are from the Video filter docs, read 2026-09-29.

What does the check return?

A valid response is an object of type video_filter_check.

Fields of a video filter check response, from the Video filter docs, read 2026-09-29.
FieldMeaning
validWhether the program passed
encodeAlways not_run
diagnostics[]Why a program failed
program.filtersCompiled filter names only, no argv
estimatePresent when valid
next_actionsubmit_video_filter or fix_program_and_recheck

How do I call it?

Send the same body you would send to the encode, without the idempotency header.

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":"dim","amount":0.45}]}'

Does a passing check guarantee the encode?

No. The docs say a program that passes can still fail on the worker, for example a bad expression, memory or time, and that failure comes back as a structured job error. The check confirms the contract, not the render.

What does the check cost?

Nothing; the docs call it free. The encode itself is listed at $0.02 per job, to be confirmed in GET /v1/catalog. Over MCP the same flow is video_filter with check_only: true, then video_filter, then jobs_wait and jobs_result.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume