FFmpeg drawtext on a hosted API: why Sume filters refuse it, and cues
Sume video-filter refuses drawtext and subtitles because they read files. To burn text onto a clip, send cues to video-captions: text, start and end seconds.

Sume's video filter does not accept drawtext: it is not on the allowlist, and the docs say drawtext, subtitles, movie and lut3d are out, along with anything that reads a file or socket. To put your own text on a clip, send cues to video captions: each cue is text, start and end in seconds, and Sume burns exactly that copy at those times with no speech-to-text.
FFmpeg's description of drawtext is from its filters documentation, read 2026-10-02.
Why is drawtext refused?
FFmpeg's entry says drawtext draws a text string, or text from a specified file, using libfreetype, and takes a font setup. The Sume filter list is limited to filters with only inline options so that nothing on it can read a path. An off-list name returns invalid_filtergraph naming the allowed filters. A free POST /v1/video-filter/check shows that before you pay.
How do cues work?
cues (alias segments) holds 1 to 200 items; each has text up to 400 characters, and start and end from 0 to 60 seconds. Text may contain a newline for a two-line card. cues cannot be combined with words, segments or script_text. Pick a style (slam, punch, tiktok-green, or a Hangul style) and tune it with design. A standalone caption job is $0.20 for videos up to 60 seconds.
The video_url must be a fetchable public HTTPS URL. Poll GET /v1/jobs/:id/status and read the result, or GET /v1/video-captions/:id.
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: cue-text-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/example/clean.mp4",
"style": "punch",
"cues": [{ "text": "Free shipping today", "start": 0.5, "end": 3 }]
}'When is cues the wrong tool?
A silent clip with no cues fails as caption_no_speech; the fix is the cue form above.
| Task | Where it goes on Sume | Note |
|---|---|---|
| Free text on a clip | cues on video captions | 0 to 60 s per cue |
| Speech to captions | Omit cues; STT runs | Needs audible speech |
| A logo or image plate | Timeline compose overlay | One still on one video |
| Arbitrary drawtext options | Not offered | Not on the allowlist |
Sources
Related posts
More in Media tools
- Adjust video brightness, contrast, saturation by API: eq filter
Send eq=brightness=0.06:contrast=1.1:saturation=1.2 as the filtergraph of Sume video-filter. Ranges come from FFmpeg: brightness -1 to 1, saturation 0 to 3.
- Fill a timeline gap with generated B-roll through an API
Premiere 26.5 can generate clips inside the timeline. Here is the API version: generate a 3 to 10 second clip, then place it in a Timeline 1.0 slot.
- Find the video frame where a phrase is spoken: hypit tile around
hypit tile with around {phrase} resolves a spoken phrase on the transcript and returns labeled frames around it. Parameters, limits and the error codes.
- 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.
Written by Sume