Does my Short have audio? Check probe.has_audio before captions
Transcribing a silent clip returns inspect_source_has_no_audio. Probe has_audio first with a frames:false video inspect, then caption only clips with a voice.

Call POST /v1/video-inspect with frames: false and read probe.has_audio. If it is false, skip transcription: transcribe: true on a silent clip returns inspect_source_has_no_audio. The probe-only call returns no stills, so it is the cheap check. Read from the Sume docs on 2026-10-06.
Why would a Short have no audio?
A Timeline render in audio.mode: "silence" with no soundtrack, a clip exported with the audio dropped by video-trim (audio: "drop"), or a generated clip that ships without a track. Any of these will fail a transcription request.
What does the call look like?
Inspect is a sync-capable route: the default waits up to 30 seconds, and a longer run returns 202 for polling. The source limit is 1800 seconds.
import os, requests
r = requests.post(
"https://api.sume.com/v1/video-inspect",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Idempotency-Key": "probe-short-001"},
json={"video_url": "https://media.sume.com/artifacts/artf_demo/short.mp4",
"frames": False},
timeout=60,
)
print(r.status_code, r.json())What next if it has audio?
Send the same clip with transcribe: true and segmentation: {"mode": "sentence"}. Speech-to-text is $0.01 per audio minute, and sentence segments come back without gaps.
Sources
Related posts
More in Developers
- Envoy's 15 s route timeout vs a 30 s Sume sync call
Envoy's RouteAction timeout defaults to 15s. Sume sync mode can wait 30 s. Behind Envoy or Istio, use async, or raise the route timeout above the sync wait.
- Excel VBA: submit an AI video job and poll it with Application.OnTime
An Excel macro posts a Wan 3.0 job to Sume with ServerXMLHTTP, saves the job id in a cell and re-checks status with Application.OnTime without blocking Excel.
- Express receiver for Sume TTS job webhooks: raw body and HMAC
A Node Express route that verifies Sume job webhooks over the raw body, accepts rotated secrets, rejects an empty secret and answers 204 before any work.
- Fall back to a second image model after three 502s: a Python breaker
Sume returns 502 when an image job fails inside the wait budget. Count them, switch to a second model id after three, and use a new idempotency key per model.
Written by Sume