detach_source_has_no_audio: check probe.has_audio first
Audio detach fails with detach_source_has_no_audio on silent video. Probe has_audio with a free frames-false video inspect first. Refusal codes listed.

detach_source_has_no_audio means the video you passed to audio detach has no audio track. Prevent it by probing first: a video inspect with frames: false returns probe.has_audio and makes no stills. The probe-only inspect is not billed, per the Sume pricing notes, so the check costs nothing.
The guard
Probe, then detach only when the clip has sound. The inspect default is mode: sync, which waits up to 30 seconds.
import os, requests
BASE = "https://api.sume.com"
H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
url = "https://media.sume.com/artifacts/artf_demo/talk.mp4"
r = requests.post(BASE + "/v1/video-inspect",
headers={**H, "Idempotency-Key": "probe-001"},
json={"video_url": url, "frames": False})
r.raise_for_status()
print(r.json()) # read probe.has_audio before detachingStable refusal codes
These are the codes the detach docs list; each means a different fix.
| Code | Meaning | Fix |
|---|---|---|
detach_source_has_no_audio | No audio track | Probe first; skip silent clips |
audio_detach_range_empty | end <= start, or range over 900 s | Correct the range |
detach_start_past_source | start beyond the duration | Use a start inside the clip |
source_duration_exceeded | Source over 1800 s | Trim first |
unsupported_media_source | Not a media.sume.com URL | Import with POST /v1/media-imports |
source_not_found | Dead URL or other workspace | Check the artifact id |
Cost of the mistake
A detach is $0.01. The point of the probe is less the cent than the batch: a loop over 500 clips with 40 silent ones fails 40 jobs and leaves 40 failed jobs to sort out. Filter on has_audio and you queue only the files that will succeed.
Sources
Related posts
More in Developers
- detach_source_has_no_audio: the free probe that prevents it on Sume
Sume audio detach fails with detach_source_has_no_audio on a video with no sound track. A frames-off video inspect reads probe.has_audio first. Codes inside.
- Deterministic Sume Idempotency-Key: body hash plus a take counter
Hash customer, take number and canonical body into one key. A retry replays the job; a deliberate redo bumps the take. Python, stdlib only.
- Does a replayed sume/auto video submit get the same model and price?
Yes. The Sume docs say Auto resolves from the normalized request and catalog version, so an idempotent replay returns the same route and price.
- Does Seedance audio cost extra on Sume? generate_audio and the price
Seedance prices on Sume are per video token and carry no separate audio line. What generate_audio does, what it defaults to, and the 10 s price either way.
Written by Sume