Voice agent narrates a long task: poll a Sume video job meanwhile

Decagon Voice 3 narrates progress during long tasks. The same pattern for a voice agent that starts a Sume job: submit, speak, poll jobs_wait.

5 min readSume
All posts

A voice agent should not leave a caller in silence while slow work runs. Decagon's Voice 3 narrates its progress and answers follow-up questions during a long-running task instead of putting the customer on hold, and an agent that starts a Sume job can do the same: submit, say what is happening, then check the job.

The pattern Decagon describes

Decagon's Dialogues 2026 post says conversation and task execution run in parallel in Voice 3. The agent keeps talking while work happens in the background, rather than going quiet.

Mapping it to a Sume job

Sume jobs are asynchronous. A paid create tool such as tts_create or generate_video returns a job id, and jobs_wait then jobs_result return the output. A voice agent's loop looks like this:

  • Submit the job with a new idempotency key and note the job id.
  • Tell the caller what is running and roughly how long it takes.
  • Keep the conversation open for follow-up questions.
  • Call jobs_wait in slices, shorter than the tool timeout.
  • When the job completes, read the result URL and offer it.

Why slices

The hosted MCP tools run under a time limit, and script_run limits a call to 5 to 55 seconds. A video job usually outlasts one call, so the agent loops on jobs_wait and speaks between checks instead of blocking.

Idempotency keys also make retries safe: replaying the same key does not pay twice.

Agent states and what to say (read 2026-10-07)
Job stateWhat the agent doesWhat the caller hears
SubmittedStore the job idWe started it
WaitingCall jobs_wait againStill rendering, ask me anything meanwhile
Completedjobs_resultIt is ready, I sent the link
FailedRead the error codeIt did not work, here is why

What this does not give you

Sume does not provide live speech for the agent itself. The agent's own voice comes from its voice layer. Sume supplies the media jobs the agent triggers, and the cost of those jobs is separate from the call. Use dry_run and max_spend_usd to keep an unattended agent inside a budget.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume