> ## Documentation Index
> Fetch the complete documentation index at: https://doc.omnitechsolucoes.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizar assistente

> Atualiza a configuração de um assistente de IA existente — prompt, voz, modelo, ferramentas e parâmetros — sem recriar o assistente do zero.

Este endpoint permite atualizar a configuração de um assistente de IA existente. Todos os campos são opcionais — informe apenas os campos que deseja atualizar.

### Parâmetros de Caminho

<ParamField path="id" type="integer" required>
  Identificador único do assistente a ser atualizado
</ParamField>

### Corpo da Requisição

#### Campos Principais

<ParamField body="assistant_name" type="string" optional>
  O nome do assistente (máximo de 255 caracteres)
</ParamField>

<ParamField body="voice_id" type="integer" optional>
  O ID da voz a ser utilizada pelo assistente (deve existir entre as vozes disponíveis)
</ParamField>

<ParamField body="language" type="string" optional>
  O idioma do assistente (máximo de 100 caracteres)
</ParamField>

<ParamField body="llm_model" type="string" optional>
  O nome do modelo LLM a ser utilizado (máximo de 100 caracteres)
</ParamField>

<ParamField body="calls_direction" type="string" optional>
  O tipo de direção da chamada. Opções: `receive`, `make`
</ParamField>

<ParamField body="engine_type" type="string" optional>
  O tipo de engine a ser utilizada. Opções: `pipeline`, `multimodal`
</ParamField>

<ParamField body="timezone" type="string" optional>
  O fuso horário do assistente (ex.: "America/New\_York")
</ParamField>

<ParamField body="initial_message" type="string" optional>
  A mensagem inicial que o assistente irá falar ao iniciar a chamada
</ParamField>

<ParamField body="system_prompt" type="string" optional>
  O prompt de sistema que define o comportamento e a personalidade do assistente
</ParamField>

#### Configurações Opcionais

<ParamField body="phone_number_id" type="integer" optional>
  O ID de um número de telefone a ser atribuído ao assistente (defina como null para remover a atribuição)
</ParamField>

<ParamField body="tool_ids" type="integer[]" optional>
  Lista de IDs de ferramentas de uso durante a chamada a serem sincronizadas com o assistente. Substitui todas as atribuições de ferramentas existentes. Envie um array vazio para remover todas as ferramentas. Cada item deve ser um ID válido pertencente à sua conta.
</ParamField>

<ParamField body="endpoint_type" type="string" optional>
  Tipo de detecção de atividade de voz. Opções: `vad`, `ai`
</ParamField>

<ParamField body="endpoint_sensitivity" type="number" optional>
  Nível de sensibilidade do endpoint (0-5)
</ParamField>

<ParamField body="interrupt_sensitivity" type="number" optional>
  Nível de sensibilidade de interrupção (0-5)
</ParamField>

<ParamField body="ambient_sound_volume" type="number" optional>
  Nível de volume do som ambiente (0-1)
</ParamField>

<ParamField body="post_call_evaluation" type="boolean" optional>
  Define se a avaliação pós-chamada estará habilitada
</ParamField>

<ParamField body="send_webhook_only_on_completed" type="boolean" optional>
  Define se os webhooks serão enviados apenas para chamadas concluídas
</ParamField>

<ParamField body="include_recording_in_webhook" type="boolean" optional>
  Define se a URL da gravação será incluída no payload do webhook
</ParamField>

#### Configuração de Webhook

<ParamField body="is_webhook_active" type="boolean" optional>
  Define se as notificações via webhook estão habilitadas
</ParamField>

<ParamField body="webhook_url" type="string" optional>
  A URL do webhook para notificações pós-chamada (pode ser definida como null para remover)
</ParamField>

#### Configurações de Interrupção

<ParamField body="use_min_interrupt_words" type="boolean" optional>
  Define se será utilizado o mínimo de palavras para permitir interrupção
</ParamField>

<ParamField body="min_interrupt_words" type="integer" optional>
  Número mínimo de palavras antes que a interrupção seja permitida (0-10)
</ParamField>

#### Variáveis e Esquema

<ParamField body="variables" type="object" optional>
  Pares chave-valor de variáveis personalizadas para o assistente
</ParamField>

<ParamField body="post_call_schema" type="array" optional>
  Definição do esquema para extração de dados pós-chamada

  <Expandable title="post_call_schema properties">
    <ParamField body="post_call_schema[].name" type="string" required>
      O nome do campo do esquema (apenas alfanumérico e underscore)
    </ParamField>

    <ParamField body="post_call_schema[].type" type="string" required>
      Tipo de dado. Opções: `string`, `number`, `bool`
    </ParamField>

    <ParamField body="post_call_schema[].description" type="string" required>
      Descrição do que este campo representa
    </ParamField>
  </Expandable>
</ParamField>

#### Ferramenta de Encerramento de Chamada

<ParamField body="end_call_tool.description" type="string" optional>
  Descrição da funcionalidade de encerramento de chamada (máximo de 500 caracteres)
</ParamField>

#### Configurações de Voz e Fala

<ParamField body="llm_temperature" type="number" optional>
  Configuração de temperatura do LLM (0-1)
</ParamField>

<ParamField body="voice_stability" type="number" optional>
  Configuração de estabilidade da voz (0-1)
</ParamField>

<ParamField body="voice_similarity" type="number" optional>
  Configuração de similaridade da voz (0-1)
</ParamField>

<ParamField body="speech_speed" type="number" optional>
  Multiplicador de velocidade da fala (0.7-1.2)
</ParamField>

#### Configurações de Comportamento da Chamada

<ParamField body="allow_interruptions" type="boolean" optional>
  Define se o chamador pode interromper o assistente
</ParamField>

<ParamField body="filler_audios" type="boolean" optional>
  Define se áudios de preenchimento serão utilizados durante o processamento
</ParamField>

<ParamField body="re_engagement_interval" type="integer" optional>
  Intervalo de reengajamento em segundos (7-600)
</ParamField>

<ParamField body="max_call_duration" type="integer" optional>
  Duração máxima da chamada em segundos (20-1200)
</ParamField>

<ParamField body="max_silence_duration" type="integer" optional>
  Duração máxima de silêncio em segundos (1-120)
</ParamField>

<ParamField body="end_call_on_voicemail" type="boolean" optional>
  Define se a chamada será encerrada ao detectar caixa postal
</ParamField>

<ParamField body="noise_cancellation" type="boolean" optional>
  Define se o cancelamento de ruído estará habilitado
</ParamField>

<ParamField body="record_call" type="boolean" optional>
  Define se a chamada será gravada
</ParamField>

<ParamField body="who_speaks_first" type="string" optional>
  Quem fala primeiro na chamada. Opções: `AI assistant`, `Customer`
</ParamField>

### Resposta

<ResponseField name="message" type="string">
  Mensagem de sucesso confirmando a atualização do assistente
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="propriedades">
    <ResponseField name="id" type="integer">
      Identificador único do assistente atualizado
    </ResponseField>

    <ResponseField name="name" type="string">
      Nome do assistente
    </ResponseField>

    <ResponseField name="status" type="string">
      Status atual do assistente
    </ResponseField>

    <ResponseField name="type" type="string">
      Tipo do assistente (`inbound` ou `outbound`)
    </ResponseField>

    <ResponseField name="mode" type="string">
      Modo da engine (`pipeline` ou `multimodal`)
    </ResponseField>
  </Expandable>
</ResponseField>

### Respostas de Erro

<ResponseField name="404 Not Found">
  <Expandable title="Resposta de Erro">
    <ResponseField name="message" type="string">
      Mensagem de erro quando o assistente não é encontrado ou não pertence ao usuário autenticado
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="422 Validation Error">
  <Expandable title="Resposta de Erro">
    <ResponseField name="message" type="string">
      Mensagem de erro indicando falha de validação
    </ResponseField>

    <ResponseField name="errors" type="object">
      Erros detalhados de validação para cada campo
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="500 Internal Server Error">
  <Expandable title="Resposta de Erro">
    <ResponseField name="message" type="string">
      Mensagem de erro indicando falha na atualização do assistente
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Success Response theme={null}
  {
    "message": "Assistente atualizado com sucesso",
    "data": {
      "id": 789,
      "name": "Assistente de Vendas Atualizado",
      "status": "active",
      "type": "outbound",
      "mode": "pipeline"
    }
  }
  {
    "message": "Assistente não encontrado"
  }
  {
    "message": "Falha na validação",
    "errors": {
      "speech_speed": [
        "A velocidade de fala deve estar entre 0.7 e 1.2."
      ],
      "webhook_url": [
        "A URL do webhook deve ser uma URL válida."
      ]
    }
  }
  {
    "message": "Falha na atualização do assistente"
  }
  ```
</ResponseExample>

Observações
Apenas os campos informados no corpo da requisição serão atualizados

Todas as regras de validação se aplicam da mesma forma que na criação de um assistente

Para remover a atribuição de número de telefone, defina phone\_number\_id como null

Para desativar o webhook, defina webhook\_url como null ou is\_webhook\_active como false

O assistente deve pertencer ao usuário autenticado para ser atualizado
