---
title: "Update Voice Agent Group"
method: PUT
path: "/api/v1/voice-ai/voice-agent-groups/{group_id}"
tags: ["voice_agent_groups"]
---

# Update Voice Agent Group

`PUT /api/v1/voice-ai/voice-agent-groups/{group_id}`

Update an existing voice agent group.

## Path parameters

- `group_id` string, uuid, required

## Request body

- VoiceAgentGroupUpdate
  - `name` string, nullable
  - `entries` VoiceAgentGroupEntry[], nullable
    - `label` string, required — Label for the transfer target. Max 39 chars because it's prefixed with 'transfer_to_voice_agent__' (25 chars) for a 64-char platform limit.
    - `description` string, nullable
    - `voice_agent_id` string, uuid, required
    - `transfer_config` VoiceTransferScenarioConfig — Operator-configurable transfer behavior for a voice agent entry. Lives on the TARGET entry — the Reservations entry defines how other agents transfer TO Reservations, regardless of which source agent initiates.
      - `condition` string, nullable
      - `pre_instruction` string, nullable
      - `post_instruction` string, nullable
      - `transfer_announcement` 'silent' | 'announced'
      - `speak_first_message_on_transfer` boolean
      - `languages` string[]
  - `enabled` boolean, nullable
  - `pre_pickup_enabled` boolean, nullable
  - `pre_pickup_mode` 'audio' | 'text' | 'synthesized' — How a group's pre-pickup message is sourced before the AI picks up. - AUDIO: play the operator-uploaded file at ``pre_pickup_audio_object_key``. - TEXT: synthesize ``pre_pickup_text`` live with the group's TTS voice at call time. - SYNTHESIZED: a message pre-rendered from ``pre_pickup_text`` with an operator-chosen provider/voice/language (the "recipe" columns), stored to the same audio slot as AUDIO and played identically by the worker. Enum grows, never renames.
  - `pre_pickup_text` string, nullable
  - `pre_pickup_voice_provider` 'elevenlabs' | 'cartesia' | 'google' — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
  - `pre_pickup_voice_id` string, nullable
  - `pre_pickup_language` string, nullable
  - `pre_pickup_variants` VoicePrePickupVariantWrite[], nullable
    - `language` string, required
    - `text` string, required
    - `voice_provider` 'elevenlabs' | 'cartesia' | 'google', required — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
    - `voice_id` string, required
    - `dtmf_digit` string, nullable
    - `greeting` string, nullable
  - `pre_pickup_menu_grace_seconds` number, nullable
  - `agent_voice_variants` AgentVoiceVariant[], nullable
    - `language` string, required
    - `voice_provider` 'elevenlabs' | 'cartesia' | 'google', required — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
    - `voice_id` string, required

## Response `200`

Successful Response

- VoiceAgentGroupRead
  - `id` string, uuid, required
  - `pre_pickup_enabled` boolean
  - `pre_pickup_mode` 'audio' | 'text' | 'synthesized' — How a group's pre-pickup message is sourced before the AI picks up. - AUDIO: play the operator-uploaded file at ``pre_pickup_audio_object_key``. - TEXT: synthesize ``pre_pickup_text`` live with the group's TTS voice at call time. - SYNTHESIZED: a message pre-rendered from ``pre_pickup_text`` with an operator-chosen provider/voice/language (the "recipe" columns), stored to the same audio slot as AUDIO and played identically by the worker. Enum grows, never renames.
  - `pre_pickup_text` string, nullable
  - `pre_pickup_voice_provider` 'elevenlabs' | 'cartesia' | 'google' — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
  - `pre_pickup_voice_id` string, nullable
  - `pre_pickup_language` string, nullable
  - `pre_pickup_prompt_segments` VoicePrePickupPromptSegment[]
    - `language` string, required
    - `text` string, required
    - `voice_provider` 'elevenlabs' | 'cartesia' | 'google', required — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
    - `voice_id` string, required
    - `audio_object_key` string, nullable
    - `audio_filename` string, nullable
  - `pre_pickup_variants` VoicePrePickupVariant[]
    - `language` string, required
    - `text` string, required
    - `voice_provider` 'elevenlabs' | 'cartesia' | 'google', required — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
    - `voice_id` string, required
    - `audio_object_key` string, nullable
    - `audio_filename` string, nullable
    - `dtmf_digit` string, nullable
    - `greeting` string, nullable
  - `pre_pickup_menu_grace_seconds` number, nullable
  - `agent_voice_variants` AgentVoiceVariant[]
    - `language` string, required
    - `voice_provider` 'elevenlabs' | 'cartesia' | 'google', required — TTS provider used to synthesize a SYNTHESIZED pre-pickup message. Stored on ``VoiceAgentGroup.pre_pickup_voice_provider`` (as a plain string column) and used to dispatch synthesis to the matching TTS client.
    - `voice_id` string, required
  - `name` string, required
  - `entries` VoiceAgentGroupEntry[]
    - `label` string, required — Label for the transfer target. Max 39 chars because it's prefixed with 'transfer_to_voice_agent__' (25 chars) for a 64-char platform limit.
    - `description` string, nullable
    - `voice_agent_id` string, uuid, required
    - `transfer_config` VoiceTransferScenarioConfig — Operator-configurable transfer behavior for a voice agent entry. Lives on the TARGET entry — the Reservations entry defines how other agents transfer TO Reservations, regardless of which source agent initiates.
      - `condition` string, nullable
      - `pre_instruction` string, nullable
      - `post_instruction` string, nullable
      - `transfer_announcement` 'silent' | 'announced'
      - `speak_first_message_on_transfer` boolean
      - `languages` string[]
  - `enabled` boolean
  - `direction` 'inbound' | 'outbound' — Whether the group handles inbound calls or outbound calls.
  - `tenant_id` string, uuid, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `pre_pickup_audio_filename` string, nullable

## Other responses

- `400` — Invalid update (e.g. duplicate name/entries)
- `403` — Missing MANAGE_AGENTS permission
- `404` — Voice agent group not found
- `422` — Invalid pre-pickup message configuration

## Changes

- **2026-09-07** `f074102ed7eb` — 2 info
  - added the new optional request property `agent_voice_variants`
  - added the optional property `agent_voice_variants` to the response with the `200` status
- **2026-09-05** `84afa6f06b87` — 1 info
  - added the optional property `pre_pickup_prompt_segments` to the response with the `200` status
- **2026-09-05** `38166468bfc5` — 2 warning, 2 info
  - added the new `google` enum value to the `pre_pickup_variants/items/voice_provider` response property for the response status `200`
  - added the new `google` enum value to the `pre_pickup_voice_provider/anyOf[subschema #1: PrePickupVoiceProvider]/` response property for the response status `200`
  - added the new `google` enum value to the request property `pre_pickup_variants/anyOf[subschema #1]/items/voice_provider`
  - added the new `google` enum value to the request property `pre_pickup_voice_provider/anyOf[subschema #1: PrePickupVoiceProvider]/`

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/voice-ai/voice-agent-groups/:group_id/put.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getanana/apis/cleon-api/revisions/d782acd3a884?raw)
