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

# API de Campanhas: Envio em Massa e Gestão de Campanhas

> Crie, agende, inicie, pause e acompanhe relatórios de campanhas em massa pelo WhatsApp via API do PanÐá Zap. Compatível com substituição de variáveis por destinatário.

As campanhas permitem enviar mensagens em massa para uma lista de contatos através de um canal do WhatsApp. Use os endpoints abaixo para criar, agendar e monitorar campanhas inteiramente a partir do seu próprio sistema.

Todas as requisições exigem o cabeçalho `Authorization: Bearer {BearerToken}`.

***

## Criar campanha

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/create
```

```json theme={null}
{
  "name": "June Promotion",
  "sessionId": 12,
  "start": "2026-06-10T10:00:00.000Z",
  "message1": "Hi {{name}}, we have a special offer just for you!",
  "message2": "{{name}}, your exclusive offer is waiting!",
  "message3": "Don't miss out, {{name}} — check our latest deal!",
  "delay": "20"
}
```

| Campo        | Tipo    | Obrigatório | Descrição                                                                       |
| ------------ | ------- | ----------- | ------------------------------------------------------------------------------- |
| `name`       | string  | Sim         | Nome interno da campanha.                                                       |
| `sessionId`  | integer | Sim\*       | Canal do qual enviar. Use `whatsappId` como alias.                              |
| `whatsappId` | integer | Sim\*       | Alias para `sessionId`.                                                         |
| `start`      | string  | Não         | Horário de início agendado no formato ISO 8601. Omita para iniciar manualmente. |
| `message1`   | string  | Não         | Primeira variação de mensagem.                                                  |
| `message2`   | string  | Não         | Segunda variação de mensagem.                                                   |
| `message3`   | string  | Não         | Terceira variação de mensagem.                                                  |
| `delay`      | string  | Não         | Atraso em segundos entre as mensagens (ajuda a evitar a detecção de spam).      |

<Note>
  `message1`, `message2` e `message3` são **variações aleatórias** — cada contato recebe **uma** delas, escolhida aleatoriamente. Elas não são enviadas em sequência. Para canais WABA, use `templateName` e `templateLanguage` em vez dos campos de mensagem. Anexos de mídia devem ser adicionados através do painel após a criação da campanha; eles não podem ser definidos via API.
</Note>

***

## Adicionar contatos à campanha

Adicione um ou mais contatos a uma campanha. Você pode chamar este endpoint várias vezes para adicionar contatos de forma incremental.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/contacts/add/{campaignId}
```

```json theme={null}
[
  { "name": "Maria Silva", "number": "5511999990001" },
  { "name": "João Costa", "number": "5511999990002" }
]
```

O corpo da requisição é um array JSON de objetos de contato. Cada objeto deve incluir, no mínimo, `name` e `number`.

***

## Listar contatos de uma campanha

```http theme={null}
GET https://{BaseUrl}/v2/api/external/{ApiID}/campaign/contacts/{campaignId}
```

Retorna todos os contatos atualmente registrados na campanha, junto com seu status de entrega, caso a campanha já tenha começado.

***

## Remover contato da campanha

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/contacts/remove/{campaignId}/{contactId}
```

Remove um único contato, identificado por `contactId`, da campanha.

***

## Remover todos os contatos da campanha

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/contacts/removeAll/{campaignId}
```

Limpa toda a lista de contatos da campanha. Útil quando você deseja substituir a lista completamente antes do envio.

***

## Listar campanhas

```http theme={null}
GET https://{BaseUrl}/v2/api/external/{ApiID}/campaign/list?page=1&limit=10
```

| Query param | Descrição                            |
| ----------- | ------------------------------------ |
| `page`      | Número da página (padrão: `1`).      |
| `limit`     | Campanhas por página (padrão: `10`). |

***

## Iniciar campanha

Inicia o envio de mensagens imediatamente, independentemente de qualquer horário de início agendado.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/start/{campaignId}
```

***

## Pausar campanha

Pausa uma campanha que está atualmente no estado `processing`. Mensagens já enfileiradas ainda podem ser enviadas; a pausa impede que novas mensagens sejam disparadas.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/pause/{campaignId}
```

***

## Retomar campanha pausada

Retoma o envio de onde a campanha parou.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/resume/{campaignId}
```

***

## Cancelar campanha

Cancela uma campanha permanentemente. Campanhas canceladas podem ser atualizadas ou duplicadas, mas não reiniciadas.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/cancel/{campaignId}
```

***

## Obter relatório da campanha

Obtenha estatísticas de entrega de uma campanha, incluindo quantas mensagens foram enviadas, entregues, lidas e que falharam.

```http theme={null}
GET https://{BaseUrl}/v2/api/external/{ApiID}/campaign/report/{campaignId}
```

***

## Atualizar campanha

Atualize a configuração de uma campanha existente.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/update/{campaignId}
```

Aceita os mesmos campos de [Criar campanha](#criar-campanha).

<Note>
  Você só pode atualizar uma campanha cujo status seja `pending`, `scheduled`, `paused` ou `canceled`. Tentar atualizar uma campanha no estado `processing` ou `finished` retorna um erro `404`.
</Note>

***

## Duplicar campanha

Crie uma cópia exata de uma campanha existente, incluindo o conteúdo das mensagens e as configurações, mas com uma lista de contatos nova e status `pending`.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/duplicate/{campaignId}
```

<Tip>
  Duplicar é a forma mais rápida de executar novamente uma campanha anterior com uma nova lista de contatos — duplique, limpe os contatos, adicione a nova lista e, em seguida, inicie.
</Tip>

***

## Excluir campanha

Exclua permanentemente uma campanha e todos os seus dados associados.

```http theme={null}
POST https://{BaseUrl}/v2/api/external/{ApiID}/campaign/delete/{campaignId}
```
