> ## Documentation Index
> Fetch the complete documentation index at: https://docs.suasofia.online/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar campanha

> Criar uma nova campanha de chamadas de saída

Este endpoint permite criar uma nova campanha de chamadas de saída com a configuração especificada.

### Corpo da Requisição

<ParamField body="name" type="string" required>
  O nome da campanha. Máximo de 255 caracteres.
</ParamField>

<ParamField body="assistant_id" type="integer" required>
  O ID do assistente a ser usado para a campanha. Deve ser um assistente capaz de fazer chamadas de saída.
</ParamField>

<ParamField body="timezone" type="string">
  Identificador de fuso horário para a campanha (ex.: `America/Sao_Paulo`, `Europe/London`). Padrão para o fuso horário da sua conta.
</ParamField>

<ParamField body="max_calls_in_parallel" type="integer" default="3">
  Número máximo de chamadas simultâneas. Mínimo: 1. Máximo depende do limite de chamadas paralelas do seu plano (até 10).
</ParamField>

<ParamField body="allowed_hours_start_time" type="string" default="00:00">
  Início da janela de horário permitido para chamadas no formato `H:i` (ex.: `09:00`).
</ParamField>

<ParamField body="allowed_hours_end_time" type="string" default="23:59">
  Fim da janela de horário permitido para chamadas no formato `H:i` (ex.: `17:00`).
</ParamField>

<ParamField body="allowed_days" type="array" default="todos os 7 dias">
  Array de nomes dos dias da semana quando as chamadas são permitidas. Valores válidos: `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.
</ParamField>

<ParamField body="max_retries" type="integer" default="3">
  Número máximo de tentativas de reenvio para chamadas falhadas. Faixa: 1-5.
</ParamField>

<ParamField body="retry_interval" type="integer" default="60">
  Intervalo em minutos entre tentativas de reenvio. Faixa: 10-4320 (até 3 dias).
</ParamField>

<ParamField body="retry_on_voicemail" type="boolean">
  Se deve tentar novamente chamadas que alcançaram a caixa postal.
</ParamField>

<ParamField body="retry_on_goal_incomplete" type="boolean">
  Se deve tentar novamente chamadas onde o objetivo não foi completado.
</ParamField>

<ParamField body="goal_completion_variable" type="string">
  Nome de uma variável booleana do esquema pós-chamada do seu assistente para rastrear a conclusão do objetivo. Máximo de 255 caracteres.
</ParamField>

<ParamField body="mark_complete_when_no_leads" type="boolean" default="true">
  Se deve marcar automaticamente a campanha como concluída quando não há mais leads para ligar.
</ParamField>

<ParamField body="phone_number_ids" type="array">
  Array de IDs de números de telefone para usar na campanha. Cada ID deve ser um número inteiro distinto.
</ParamField>

### Resposta

<ResponseField name="message" type="string">
  Mensagem de sucesso confirmando que a campanha foi criada
</ResponseField>

<ResponseField name="data" type="object">
  Os dados da campanha criada

  <Expandable title="propriedades dos dados">
    <ResponseField name="id" type="integer">
      O ID da campanha criada
    </ResponseField>

    <ResponseField name="name" type="string">
      O nome da campanha
    </ResponseField>

    <ResponseField name="status" type="string">
      O status da campanha (começa como `draft`)
    </ResponseField>

    <ResponseField name="max_calls_in_parallel" type="integer">
      Número máximo de chamadas simultâneas
    </ResponseField>

    <ResponseField name="mark_complete_when_no_leads" type="boolean">
      Se deve marcar a campanha como concluída quando não há leads
    </ResponseField>

    <ResponseField name="allowed_hours_start_time" type="string">
      Início da janela de horário permitido para chamadas
    </ResponseField>

    <ResponseField name="allowed_hours_end_time" type="string">
      Fim da janela de horário permitido para chamadas
    </ResponseField>

    <ResponseField name="allowed_days" type="array">
      Dias da semana quando as chamadas são permitidas
    </ResponseField>

    <ResponseField name="max_retries" type="integer">
      Número máximo de tentativas de reenvio
    </ResponseField>

    <ResponseField name="retry_interval" type="integer">
      Intervalo em minutos entre tentativas
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Timestamp de quando a campanha foi criada
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Timestamp de quando a campanha foi atualizada pela última vez
    </ResponseField>
  </Expandable>
</ResponseField>

### Respostas de Erro

<ResponseField name="403 Forbidden">
  <Expandable title="Resposta de Erro">
    <ResponseField name="message" type="string">
      Mensagem de erro quando o usuário atingiu o limite de campanhas do plano
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="404 Not Found">
  <Expandable title="Resposta de Erro">
    <ResponseField name="message" type="string">
      Mensagem de erro quando o assistente especificado não é encontrado ou não é um assistente de saída
    </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 de validação detalhados para cada campo
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "message": "Campanha criada com sucesso",
    "data": {
      "id": 1,
      "name": "Campanha de Demo do Produto",
      "status": "draft",
      "max_calls_in_parallel": 3,
      "mark_complete_when_no_leads": true,
      "allowed_hours_start_time": "09:00:00",
      "allowed_hours_end_time": "17:00:00",
      "allowed_days": [
        "monday",
        "tuesday",
        "wednesday",
        "thursday",
        "friday"
      ],
      "max_retries": 3,
      "retry_interval": 60,
      "created_at": "2026-02-23T10:00:00.000000Z",
      "updated_at": "2026-02-23T10:00:00.000000Z"
    }
  }
  ```

  ```json 403 Forbidden theme={null}
  {
    "message": "Você chegou ao número máximo de campanhas permitido pelo seu plano."
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "message": "Assistente não encontrado ou não é um assistente de saída."
  }
  ```

  ```json 422 Validation Error theme={null}
  {
    "message": "Os dados fornecidos eram inválidos.",
    "errors": {
      "name": [
        "O campo nome é obrigatório."
      ],
      "assistant_id": [
        "O campo ID do assistente é obrigatório."
      ]
    }
  }
  ```
</ResponseExample>
