Skip to main content
Every setting on this page goes through one method:
Three rules apply to every argument:
  • Omitted means unchanged. Pass only what you want to change.
  • Settings are agent-wide. One change reaches every voice of the agent.
  • It takes effect on the next call. Calls already in progress keep the settings they started with.
update() returns the stored Agent. Read it again at any time with client.agents.get(agent_id). The examples use the my-support agent from the Quickstart and assume your .env is set up as described there.

Read the current settings

read_agent.py
A value of None means the agent uses the platform default for that setting.

Change the voice

Swap the agent’s voice profile in place. The brain, number, and call history stay as they are.
update_voice.py
voice_profile takes a profile name (case-insensitive) or its profile_id - list them with client.voice_profiles.list(). To run several voices on one agent - for example one per language - add voices instead of replacing one:
Get <voice_profile_id> from agent.voices[i].voice_profile_id.

Change the greeting

The greeting is the agent’s opening line. It overrides the voice profile’s own greeting.

Change the phone number

Pass number= to attach a number to the agent, or to move a number that another of your agents is using:
update_number.py
Output
  • Free number in your org → it is attached.
  • Number already on another of your agents → it moves here. No detach needed; inbound calls follow it to this agent.
  • Only your organization’s numbers can be used. Any other number returns 404.
To move a number without editing anything else, call the numbers API directly:
To release a number from its agent (it goes back to not_assigned and can be attached again):
When you pass number= together with other settings, the settings are saved first. If the number step then fails, the other settings stay saved - re-run with just number= once you fix the cause.

Background sound

A background sound plays a quiet room ambience under the agent’s voice, so the call sounds like a real office instead of studio silence.
background_sound.py
Output
To turn the sound off, use the switch - the chosen room is kept, so turning it back on needs no other change:
background_sound_volume=0.0 is not “off” - it plays a silent bed. Use background_sound_enabled=False to switch the sound off.

Noise cancellation

Noise cancellation cleans up the caller’s audio before the agent hears it - traffic, fans, TV, a crowded street. It changes what the agent understands, never how the agent sounds.
noise_cancellation.py
Output
Not setting the field at all leaves the platform default in charge, which is not the same as "none". Once you set a value, you cannot reset the agent to “platform default” - name the canceller you want instead. If a canceller’s model or licence is missing on the server, the call still runs - just without filtering. An accepted value is not proof the canceller loaded.
Start with the default. Set a canceller only if the transcripts show the agent mishearing callers in noisy places, then compare a few calls before and after.

Mute the caller during the greeting

By default the agent ignores the caller’s audio until its first reply has finished playing. Without this, a caller saying “hello?” over the greeting is transcribed as their first turn and the agent answers it. Turn it off for an agent that must react the moment the caller speaks:

Who speaks first

"agent" (default) - the agent opens with its greeting. "user" - the agent waits for the caller to speak first.

Recording and call limits


The LLM the brain runs on

Use the provider/model form - a bare model name such as "gpt-4.1-mini" is rejected because the prefix is what routes the request. Not set means the platform’s default model.

Change the brain

A brain change reaches every voice of the agent. See Agents → The Brain for the four brain types.

Silence timeout (built in)

If the caller says nothing, the agent checks in and then ends the call:
  1. After about half of the timeout, the agent says “Are you still there?”
  2. It asks once more shortly before the timeout.
  3. At the timeout (60 seconds of silence by default) the call ends with end_reason="IDLE_TIMEOUT".
The clock pauses during a handover, so a transfer is never cut off. The timeout is not configurable from the SDK yet.

All update arguments


Next steps

Handover & follow-up

Transfer to a human, voicemail message, automatic callbacks.

Domain dictionaries

Fix misheard product names and pronunciations.

Analytics

Structured data from every call.