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.

4 min readSume
All posts

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.

Resource GET routes vs job-envelope-only surfaces in the Sume docs (read 2026-10-05)
SurfaceCreateResource GETWhere to read the result
Audio detachPOST /v1/audio-detachNone/v1/jobs/:id/result, kind audio_detach
Timeline audioPOST /v1/timeline-1.0/audioNone/v1/jobs/:id/result
Video captionsPOST /v1/video-captionsGET /v1/video-captions/:idResource, or the job
Avatar videoPOST /v1/avatar-1.0/talking-videoGET /v1/avatar-videos/:idResource, 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

All Developers posts

Written by Sume