Add captions to a silent clip: cues instead of speech recognition
A clip with no speech fails caption_no_speech. Send cues with your own text and times to burn on-screen lines on silent or music-only video for $0.20.

Micro-dramas, product loops and music-only Shorts often have no speech to transcribe. Reported by HeyOrca (read 2026-10-07), micro-dramas are rising across TikTok, Reels and Shorts, and many of them tell the story with on-screen lines. A caption job that runs speech recognition on a silent clip fails with caption_no_speech.
The fix is to give Video captions the text and the timing yourself, so no speech step runs.
Use cues
cues is a list of phrase cards with text, start and end in seconds. Send exactly one of script_text, words, cues and segments. The video is a public HTTPS video_url of up to 60 seconds, and the job is $0.20 (read 2026-10-07).
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: silent-caps-001" \
-d '{"video_url": "https://media.sume.com/artifacts/example/loop.mp4", "style": "punch", "cues": [{"text": "He never called back.", "start": 0.5, "end": 2.5}, {"text": "Until tonight.", "start": 3.0, "end": 4.5}]}'Which input for which clip
| Clip | Input to send | Why |
|---|---|---|
| Spoken, no script | video_url only | Sume transcribes and burns the words |
| Spoken, you have the script | script_text | Text is aligned to the speech timing |
| Spoken, words already timed | words | No STT; your timings are used |
| Silent or music only | cues or segments | No speech to find; your times are used |
Check the timing
Keep every cue inside the video's length and keep end after start; out-of-range values are rejected with a 400 rather than clamped. Leave a gap between cards, because overlapping cues compete on screen. Preview one frame at each cue before you caption a batch.
Sources
Related posts
More in Developers
- After imagen-4.0-generate-001: read n from endpoints, use webhook mode
Do not assume your old image count carries over. Read supported_parameters.n from the Sume endpoints route, then submit in webhook mode and wait for.
- AI music generator API key: a Python script that polls and downloads
Use your SUME_API_KEY to generate a track with the Music Router, poll the job and read the audio URL. A 28-line Python script with the $0.125 price.
- aiohttp web server: verify a Sume webhook with await request.read()
An aiohttp 3.14 web handler that verifies the Sume HMAC on await request.read(), then calls request.json(). Exits on an empty secret and handles webhook.test.
- Alt text for a 30-image gallery in one Sume Agent Completion
One Agent Completion call can take up to 30 images and return an alts array under an object schema. Python stdlib script with the cap, poll and limits.
Written by Sume