detach_source_has_no_audio: check for an audio track first
Audio detach fails with detach_source_has_no_audio on a silent clip. Probe has_audio with a video inspect that skips frames, then detach only clips with sound.

detach_source_has_no_audio means the video you asked Sume to detach audio from has no audio track, so there is nothing to extract. Avoid it by reading probe.has_audio first with POST /v1/video-inspect and frames: false, which returns the probe alone.
This page follows the Audio detach and Video inspect docs, read 2026-09-29.
Where does the error come from?
It is raised by the worker, after the job is admitted, not at submit. The neighboring refusals are below.
| Code | When |
|---|---|
detach_source_has_no_audio | The source has no audio track |
detach_start_past_source | range.start is past the probed duration |
audio_detach_range_empty | range.end is at or before range.start, or the range is over 900 s |
source_duration_exceeded | The source is longer than 1800 s |
How do I check has_audio without paying for stills?
Send a video inspect with frames: false. The docs say probe and stills are unbilled, and that this is enough to read probe.has_audio. Inspect defaults to mode: sync, waiting up to 30 seconds.
curl -X POST https://api.sume.com/v1/video-inspect \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: inspect-probe-001" \
-d '{"video_url":"https://media.sume.com/artifacts/artf_demo/talk.mp4","frames":false}'What does a successful detach return?
A new audio artifact: audio_url, duration_seconds, format, channels, sample_rate (null when inherited), source_duration_seconds and optional range and warnings[]. The default format is sample-exact wav; mp3 at 128 kbps is the other option. The video is untouched.
Does a silent clip block the rest of my pipeline?
Only the audio step. Inspect's transcript has its own guard, inspect_source_has_no_audio, so branch on probe.has_audio once and skip both. To add sound to a silent video, see checking for silent audio before adding music.
Sources
Related posts
More in Developers
- Automate video editing in Python with an editing API
Automate video editing in Python by calling an editing API with Requests: submit a caption, cut, or crop job, poll until it ends, chain the output.
- Bash for loop with curl: one API request per line
Loop over a file with while IFS= read -r, build each JSON body with jq --arg, send it with curl --fail-with-body, and pace it under the API's rate limit.
- Batch image generation API: how many images can run at once?
Sume queues extra generation jobs instead of rejecting them. The per-plan concurrency and queue table, the 429 queue_full case, and how to size an image batch.
- Batch video processing by API: one edit, many videos
Batch video processing by API is a loop: one edit job per file, each with its own idempotency key, collected by webhook. How it works on Sume, and costs.
Written by Sume