Extract audio from a video URL: why example.com is refused
Audio detach only reads a video already on this workspace's media.sume.com. An outside URL fails unsupported_media_source, so import it first, then detach.

Audio detach has no open-internet fetch. A video_url on any host other than this workspace's media.sume.com is rejected at admit with unsupported_media_source. Import the video first with POST /v1/media-imports, then send the resulting media.sume.com URL to detach.
Which errors mean what?
From the Audio detach docs:
| Code | When |
|---|---|
unsupported_media_source | video_url is not on the Sume media host |
source_not_found | Dead or foreign media.sume.com URL |
unsupported_media_type | HEAD is not a video |
detach_source_has_no_audio | Source has no audio track (worker) |
What is the two-step flow?
Import, then detach. The docs name POST /v1/media-imports (MCP tool media-imports_create). The MCP tools page calls media-imports_create the social URL mirror and the docs do not list which sites it supports, so test your source before you depend on it. Idempotency-Key is required on the detach.
curl -X POST https://api.sume.com/v1/audio-detach \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: detach-url-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4"
}'Can the hosted MCP read my laptop file?
No. The MCP docs say hosted MCP cannot read files from your laptop; upload with assets_create, assets_upload_url and assets_complete, then use the asset. The flow for detach is audio_detach, then jobs_wait, then jobs_result.
How do I avoid a no-audio failure?
Probe first with video inspect: probe.has_audio tells you before you pay for a detach, and frames: false is enough. The failure itself is covered in the no-audio-track error.
How does the job run?
Audio detach defaults to mode: "async". Pass mode: "sync" to wait up to 30 seconds for a 200 finished job, or you get 202 and poll GET /v1/jobs/:id/status and GET /v1/jobs/:id/result. There is no GET /v1/audio-detach/:id. Idempotency-Key is required. The result is kind: audio_detach with audio_url, duration_seconds, format, channels and sample_rate; sample_rate is null when you omitted it and the source rate was inherited. The audio_url is a new artf_ artifact; the video is untouched.
Detach is not clip inspection. For probing, stills or transcripts use video inspect; for a new MP4 cut use video trim, described in the Audio detach docs.
Sources
Related posts
More in Media tools
- Lyria 3.5 outputs MP3 or WAV: what you get from Sume music
Google lists MP3 by default or WAV for Lyria 3.5. Sume's music request has no format field and returns an audio file; timeline audio can make a wav.
- Start a video's audio 45 seconds into a song: audio.source_in
Timeline 1.0's audio.source_in sets the in-point into a single audio spine. Output length stays duration_seconds, and it is illegal with parts or silence mode.
- Timeline audio segments: re-base video start times after concat
After a concat, use segments[] (index, start, duration_seconds) as the on-spine start of each video slot in Timeline 1.0. Declared starts are authoritative.
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
Written by Sume