No GET /v1/audio-detach/:id: poll the job instead
Audio detach and timeline audio have no GET resource route. Read /v1/jobs/:id/status and /result. Video captions and avatar video do have resource GETs.

If you call GET /v1/audio-detach/:id you will not find it: Sume's audio detach page states there is no such route. A detach job lives only in the job envelope. Read GET /v1/jobs/:id/status, and when result_ready is true, read GET /v1/jobs/:id/result. Timeline audio works the same way and has no GET /v1/timeline-1.0/audio/:id.
Which surfaces have a resource route
The distinction matters in code. A client written for captions, which keeps a resource id and fetches it later, will 404 on detach. For detach, keep the job id.
| Surface | Create | Resource GET | Where to read the result |
|---|---|---|---|
| Audio detach | POST /v1/audio-detach | None | /v1/jobs/:id/result, kind audio_detach |
| Timeline audio | POST /v1/timeline-1.0/audio | None | /v1/jobs/:id/result |
| Video captions | POST /v1/video-captions | GET /v1/video-captions/:id | Resource, or the job |
| Avatar video | POST /v1/avatar-1.0/talking-video | GET /v1/avatar-videos/:id | Resource, or the job |
The three calls
The create call needs video_url from your workspace's media.sume.com, and an Idempotency-Key. The default mode is async. With mode: "sync" you wait up to 30 seconds for a 200, and otherwise get a 202 and poll.
curl -X POST https://api.sume.com/v1/audio-detach \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: audio-detach-001" \
-d '{"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4"}'
curl https://api.sume.com/v1/jobs/job_123/status -H "Authorization: Bearer $SUME_API_KEY"
curl https://api.sume.com/v1/jobs/job_123/result -H "Authorization: Bearer $SUME_API_KEY"What the result holds
A completed detach result is kind: audio_detach. It contains audio_url (a new artf_ artifact), duration_seconds, format, channels, sample_rate, source_duration_seconds, and optionally range and warnings[]. sample_rate is null when you did not set one, because the value comes from the source.
The job costs $0.01 and runs on worker ffmpeg with no provider inference. The docs ask you to confirm the live rate in GET /v1/catalog.
On hosted MCP
The hosted tool is audio_detach. Writes need idempotency_key. The flow is audio_detach, then jobs_wait, then jobs_result. The same job-envelope idea applies: the job id is the handle.
Error handling
Because the job envelope is the only record, store the job id as soon as the create call returns, before you do anything else. A 202 is a normal accepted state. Poll with backoff, and do not resubmit a paid job after a client timeout.
If a job fails, status shows failed with a public error code, for example detach_source_has_no_audio. Fix the input and create a new job with a new idempotency key.
Sources
Related posts
More in Developers
- Node 22 batch runner for a prompt file: four lanes on Sume
Read one prompt per line, render each on Sume POST /v1/videos with four concurrent lanes and a stable idempotency key per line, and save clip-N.mp4. Node 22.
- Node quickstart: your first Wan 3.0 video on Sume and what 30 s costs
Node 18 fetch script: POST /v1/videos with wan-3.0, poll, print the URL. The list-price arithmetic for 30 s at 480p, 720p and 1080p, times the 1.25 margin.
- Node stream.pipeline to save a Sume MP4 and catch truncation
Stream a finished Sume video to disk with stream.pipeline, then compare bytes written with content-length so a cut-off MP4 never reaches your users.
- Gemini Omni edit input is capped at 10 seconds: trim first on Sume
Google says Omni edit inputs must be 10 seconds or less. Cut the clip with Sume's video-trim at $0.02 a job, then send the short clip to the edit request.
Written by Sume