# Disparar Mensagem

> Envia mensagens através da API Oficial do WhatsApp Cloud para um número destinatário.

`POST https://crm.wavups.com/api/v1/whatsapp/send-message`

Página: https://crm.wavups.com/docs/api/whatsapp/enviar-mensagem

## Visão Geral

Este endpoint permite disparar mensagens no WhatsApp Oficial (WhatsApp Cloud API) de forma assíncrona. O disparo é processado e enfileirado na infraestrutura de alta performance da WavUps.

> [!IMPORTANT]
> O parâmetro `accountIntegrationId` é **obrigatório**. Obtenha o ID correspondente à sua integração de WhatsApp através do endpoint [Listar Integrações](https://crm.wavups.com/docs/api/integracoes/listar) ou utilize a propriedade `accountIntegration` retornada no endpoint [Listar Setores](https://crm.wavups.com/docs/api/setores/listar).

---

## Requisição

`POST https://crm.wavups.com/api/v1/whatsapp/send-message`

- `Token` (string, obrigatório, header):
  Seu token de autenticação.

### Body

- `accountIntegrationId` (string, obrigatório, body):
  ID da integração de WhatsApp na sua conta (consulte [Listar Integrações](https://crm.wavups.com/docs/api/integracoes/listar) ou a propriedade `accountIntegration` em [Listar Setores](https://crm.wavups.com/docs/api/setores/listar)).

- `to` (string, obrigatório, body):
  Número de telefone do destinatário com DDI e DDD, sem o símbolo `+` (ex: `5511999999999`).

- `type` (string, obrigatório, body):
  Tipo de mensagem a ser enviada. Valores suportados:
  `text`, `image`, `audio`, `video`, `document`, `template`, `sticker`, `location`, `contacts`, `reaction`, `interactive`.

- `accountCRMLeadId` (string, body):
  ID do Lead a ser associado à conversa caso a conversa ainda não exista no sistema.

- `senderId` (string, body):
  Membro da conta que está enviando a mensagem (opcional): `User.id` ou `id` do vínculo, ambos de [Listar Membros da Conta](https://crm.wavups.com/docs/api/membros/listar). Se não for um membro desta conta, a API responde `404` e a mensagem não é enviada. Se omitido, a mensagem é registrada como enviada por IA/Automação.

---

### Tipos de Mensagem e Payloads

#### 1. Texto (`text`)
```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "text",
  "text": {
  "body": "Olá! Como posso ajudar você hoje?",
  "preview_url": true
  }
}
```

#### 2. Imagem (`image`)
```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "image",
  "image": {
  "link": "https://meusite.com/imagem.png",
  "caption": "Confira nossa nova tabela de preços!"
  }
}
```

#### 3. Áudio (`audio`)
```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "audio",
  "audio": {
  "link": "https://meusite.com/audio.mp3"
  }
}
```

#### 4. Vídeo (`video`)
```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "video",
  "video": {
  "link": "https://meusite.com/apresentacao.mp4",
  "caption": "Apresentação da solução"
  }
}
```

#### 5. Documento / PDF (`document`)
```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "document",
  "document": {
  "link": "https://meusite.com/proposta.pdf",
  "filename": "Proposta_Comercial.pdf",
  "caption": "Segue em anexo a sua proposta."
  }
}
```

#### 6. Template (`template`)

**Dica:**
  O código do idioma retornado em [Listar Templates](https://crm.wavups.com/docs/api/whatsapp/listar-templates) (campo `language`, ex: `"pt_BR"`) deve ser informado dentro do objeto `language: { "code": "pt_BR" }`.

```json
{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "template",
  "template": {
  "name": "confirmacao_pedido",
  "language": {
  "code": "pt_BR"
  },
  "components": [
  {
  "type": "body",
  "parameters": [
  { "type": "text", "text": "João Silva" },
  { "type": "text", "text": "#98765" }
  ]
  }
  ]
  }
}
```

---

## Exemplos de Envio

### Exemplo de requisição

```bash Texto Simples
curl --request POST \
  --url 'https://crm.wavups.com/api/v1/whatsapp/send-message' \
  --header 'Token: SEU_TOKEN_DE_API' \
  --header 'Content-Type: application/json' \
  --data '{
  "accountIntegrationId": "cmint1234567890",
  "to": "5511999999999",
  "type": "text",
  "text": {
  "body": "Olá! Tudo bem?"
  }
  }'
```

```javascript Node.js
const res = await fetch('https://crm.wavups.com/api/v1/whatsapp/send-message', {
  method: 'POST',
  headers: {
  'Token': 'SEU_TOKEN_DE_API',
  'Content-Type': 'application/json'
  },
  body: JSON.stringify({
  accountIntegrationId: 'cmint1234567890',
  to: '5511999999999',
  type: 'text',
  text: {
  body: 'Olá! Tudo bem?'
  }
  })
});
const data = await res.json();
console.log(data);
```

```python Python
import requests

response = requests.post(
  'https://crm.wavups.com/api/v1/whatsapp/send-message',
  headers={
  'Token': 'SEU_TOKEN_DE_API',
  'Content-Type': 'application/json'
  },
  json={
  'accountIntegrationId': 'cmint1234567890',
  'to': '5511999999999',
  'type': 'text',
  'text': {
  'body': 'Olá! Tudo bem?'
  }
  }
)
print(response.json())
```

### Exemplo de resposta

```json 200
{
  "message": "WhatsApp Cloud API message send task queued successfully."
}
```

```json 400
{
  "error": "Invalid request payload",
  "details": {
  "accountIntegrationId": ["accountIntegrationId is required"]
  }
}
```

```json 404
{
  "error": "WhatsApp integration not found for this account"
}
```
