> ## 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.

# Criar assistente

> Cria um novo assistente de IA na OmniTech com voz, modelo LLM, prompt, ferramentas e demais configurações via uma requisição POST autenticada.

Este endpoint permite criar um novo assistente de IA com opções completas de configuração.

### Corpo da Requisição

#### Campos Obrigatórios Principais

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

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

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

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

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

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

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

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

<ParamField body="system_prompt" type="string" required>
  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 (deve existir entre os números do usuário)
</ParamField>

<ParamField body="tool_ids" type="integer[]" optional>
  Lista de IDs de ferramentas de uso durante a chamada a serem associadas ao assistente. 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 (obrigatório se is\_webhook\_active for true)
</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="propriedades do post_call_schema">
    <ParamField body="post_call_schema[].name" type="string" required>
      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 criação do assistente
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="propriedades">
    <ResponseField name="id" type="integer">
      Identificador único do assistente criado
    </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="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 criação do assistente
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 201 Success Response theme={null}
  {
    "message": "Assistente criado com sucesso",
    "data": {
      "id": 789,
      "name": "Assistente de Vendas",
      "status": "active",
      "type": "outbound",
      "mode": "pipeline"
    }
  }
  {
    "message": "Falha na validação",
    "errors": {
      "assistant_name": [
        "O campo nome do assistente é obrigatório."
      ],
      "webhook_url": [
        "A URL do webhook é obrigatória quando is_webhook_active é true."
      ]
    }
  }
  {
    "message": "Falha na criação do assistente"
  }
  ```
</ResponseExample>

Observações
Todos os campos obrigatórios devem ser informados para que o assistente seja criado com sucesso

O assistente será criado com configurações padrão para quaisquer campos opcionais não informados

A atribuição de número de telefone é opcional, mas o número deve pertencer ao usuário autenticado

A URL do webhook é obrigatória apenas quando is\_webhook\_active estiver definido como true

Os identificadores de voz e idioma devem corresponder às opções disponíveis no sistema OmniTech
