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

# Criar Campanha

> Cria e dispara uma nova campanha de mensagens via WhatsApp

# Criar e Disparar Campanha

Crie e dispare uma nova campanha de mensagens via WhatsApp usando este endpoint.

## Requisição

### Headers

```bash theme={null}
Content-Type: application/json
Authorization: Bearer seu_token_aqui
```

### Parâmetros

| Campo              | Tipo      | Obrigatório | Descrição                                                                                      | Exemplo                             |
| ------------------ | --------- | ----------- | ---------------------------------------------------------------------------------------------- | ----------------------------------- |
| agentId            | string    | Sim         | ID do agente que fará o disparo                                                                | "agent\_123"                        |
| name               | string    | Não         | Nome da campanha. Se não informado, será usado um nome padrão                                  | "Campanha de Marketing"             |
| useAgentContacts   | boolean   | Não         | CUIDADO! Essa opção dispara para todos os contatos que conversaram com o agente. Padrão: false | false                               |
| manualPhoneNumbers | string\[] | Não         | Array de números de telefone para disparo manual                                               | \["+5511999999999"]                 |
| preferredProvider  | string    | Não         | Provedor preferido para o disparo. Opções: "official", "evolution", "evolution-qr", "z-api"    | "evolution"                         |
| message            | string    | Sim         | Conteúdo da mensagem a ser enviada                                                             | "Olá, esta é uma mensagem de teste" |
| autoDispatch       | boolean   | Sim         | Define se a campanha será disparada automaticamente ou apenas criada                           | true                                |

### Exemplo de Requisição

```bash theme={null}
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "name": "Campanha de Marketing",
    "useAgentContacts": false,
    "manualPhoneNumbers": ["+5511999999999"],
    "preferredProvider": "evolution",
    "message": "Olá, esta é uma mensagem de teste",
    "autoDispatch": true
  }'
```

## Resposta

### Sucesso

```json theme={null}
{
  "id": "campaign_123",
  "name": "Campanha de Marketing",
  "status": "IN_PROGRESS",
  "message": "Olá, esta é uma mensagem de teste",
  "startedAt": "2024-03-21T10:00:00Z",
  "usedPhoneNumbers": [],
  "manualPhoneNumbers": ["+5511999999999"],
  "agentId": "agent_123"
}
```

### Erro

```json theme={null}
{
  "error": "Mensagem de erro",
  "details": "Detalhes adicionais do erro (se disponíveis)"
}
```

## Códigos de Status

* `200`: Sucesso
* `400`: Erro de validação ou dados inválidos
* `401`: Não autorizado (token inválido ou ausente)
* `403`: Proibido (sem permissão)
* `404`: Agente não encontrado
* `500`: Erro interno do servidor

## Observações Importantes

1. **Provedor de WhatsApp**
   * Se o `preferredProvider` especificado não estiver disponível, será usado o primeiro provedor conectado ao agente
   * O provedor deve estar ativo e configurado corretamente no agente

2. **Números de Telefone**
   * Os números devem estar no formato internacional (ex: +5511999999999)
   * Se `useAgentContacts` for true, os contatos do agente serão incluídos no disparo
   * Números duplicados serão automaticamente removidos

3. **Disparo Automático**
   * Se `autoDispatch` for false, a campanha será criada com status "DRAFT"
   * Se `autoDispatch` for true, a campanha será iniciada imediatamente
   * O disparo é feito de forma assíncrona com delay entre as mensagens

4. **Limitações**
   * O sistema possui limites de taxa para evitar bloqueios
   * As mensagens são enviadas com delay para evitar bloqueios do WhatsApp
   * Em caso de falha, o sistema fará até 3 tentativas de envio

## Exemplos de Uso

1. **Criar campanha sem disparar**

```bash theme={null}
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "message": "Mensagem de teste",
    "autoDispatch": false
  }'
```

2. **Disparar para números específicos**

```bash theme={null}
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "useAgentContacts": false,
    "manualPhoneNumbers": ["+5511999999999", "+5511888888888"],
    "message": "Mensagem de teste",
    "autoDispatch": true
  }'
```

3. **Usar provedor específico**

```bash theme={null}
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "preferredProvider": "z-api",
    "message": "Mensagem de teste",
    "autoDispatch": true
  }'
```


## OpenAPI

````yaml POST /campaigns/new
openapi: 3.0.1
info:
  title: SuperAgentes.ai | API OpenAPI specifications
  description: ''
  termsOfService: https://superagentes.ai/
  contact:
    email: support@superagentes.ai
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://dash.superagentes.ai/api
security:
  - bearerAuth: []
tags:
  - name: Agentes
  - name: Conteúdo
  - name: Fonte de Conteúdo
  - name: Logs
  - name: Conversas
  - name: Campanhas
paths:
  /campaigns/new:
    post:
      tags:
        - Campanhas
      summary: Criar e Disparar Campanha
      description: Cria e dispara uma nova campanha de mensagens via WhatsApp
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - agentId
                - message
                - autoDispatch
              properties:
                agentId:
                  type: string
                  description: ID do agente que fará o disparo
                name:
                  type: string
                  description: >-
                    Nome da campanha. Se não informado, será usado um nome
                    padrão
                useAgentContacts:
                  type: boolean
                  description: 'Define se deve usar os contatos do agente. Padrão: false'
                  default: false
                manualPhoneNumbers:
                  type: array
                  items:
                    type: string
                  description: Array de números de telefone para disparo manual
                preferredProvider:
                  type: string
                  enum:
                    - official
                    - evolution
                    - evolution-qr
                    - z-api
                  description: Provedor preferido para o disparo
                message:
                  type: string
                  description: Conteúdo da mensagem a ser enviada
                autoDispatch:
                  type: boolean
                  description: >-
                    Define se a campanha será disparada automaticamente ou
                    apenas criada
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Campaign'
        '400':
          description: Erro de validação ou dados inválidos
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  details:
                    type: string
        '401':
          description: Não autorizado (token inválido ou ausente)
        '403':
          description: Proibido (sem permissão)
        '404':
          description: Agente não encontrado
        '500':
          description: Erro interno do servidor
components:
  schemas:
    Campaign:
      type: object
      properties:
        id:
          type: string
          description: ID único da campanha
        name:
          type: string
          description: Nome da campanha
        status:
          type: string
          enum:
            - DRAFT
            - IN_PROGRESS
            - COMPLETED
            - FAILED
          description: Status atual da campanha
        message:
          type: string
          description: Conteúdo da mensagem
        startedAt:
          type: string
          format: date-time
          description: Data e hora de início da campanha
        usedPhoneNumbers:
          type: array
          items:
            type: string
          description: Números de telefone utilizados na campanha
        manualPhoneNumbers:
          type: array
          items:
            type: string
          description: Números de telefone fornecidos manualmente
        agentId:
          type: string
          description: ID do agente responsável pela campanha
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````