# Case - Utilizando envios automáticos de whatsapp via API

Este documento descreve o processo de configuração e envio de mensagens através de **automação de campanhas utilizando primariamente um canal oficial do WhatsApp (Meta/Gupshup)**.

## Pré-requisitos

Antes de iniciar, é necessário que:

- O **canal de WhatsApp** já esteja devidamente configurado no sistema.
- O **template de mensagem** esteja aprovado pela Meta.

⚠️ **Importante**

A API oficial da Meta **não permite o envio de mensagens livres**.  
Somente é permitido o envio de **templates previamente aprovados pela moderação da Meta**.

Além disso:

> A criação do template **deve obrigatoriamente ser feita através do sistema da Tallk.me**.  
> Não crie templates diretamente pela Meta ou por BSPs parceiros.

---

# 1. Criação do Template

O primeiro passo é criar um **template de mensagem** dentro da plataforma.

[![image.png](https://wiki.tallk.me/uploads/images/gallery/2026-03/scaled-1680-/OQ9image.png)](https://wiki.tallk.me/uploads/images/gallery/2026-03/OQ9image.png)

Após a criação, o template será enviado para aprovação da Meta.

---

# 2. Criação da Campanha

Após a criação do template, é necessário criar uma **campanha de envio**.

[![image.png](https://wiki.tallk.me/uploads/images/gallery/2026-03/scaled-1680-/Mrwimage.png)](https://wiki.tallk.me/uploads/images/gallery/2026-03/Mrwimage.png)

Caso o template utilize **variáveis**, será necessário informar a correlação entre a ordem da variável (1ª,2ª,3ª...) e o valor que ela deve assumir (dentre as opções disponíveis) no momento da criação da campanha e posteriormente os valores devem ser passados no payload da URI apropriada.

---

# 3. Envio das Mensagens

Depois que o **template** e a **campanha** estiverem configurados, existem duas formas de adicionar contatos para envio:

- Importação de lista de contatos pela interface
- Envio automático através da **API**

Neste documento vamos tratar somente os dois **métodos disponíveis** na API.

Localização na plataforma de informações importantes:

[![image.png](https://wiki.tallk.me/uploads/images/gallery/2026-03/scaled-1680-/XY3image.png)](https://wiki.tallk.me/uploads/images/gallery/2026-03/XY3image.png)

---

# Método 1 — Template sem Variáveis

Caso o template **não utilize variáveis**, é possível inserir o contato na campanha através de uma requisição **HTTP GET**.

## Exemplo de URI

<div class="relative w-full mt-4 mb-1" id="bkmrk-https%3A%2F%2Fapi.tallk.me"><div class=""><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="pe-11 pt-3"><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼ5 ͼj" dir="ltr" id="bkmrk-https%3A%2F%2Fapi.tallk.me-1"><div class="cm-scroller"><div class="cm-content q9tKkq_readonly">https://api.tallk.me/dbdial_webapi.php?acao=insere_whats_simples&amp;id_cliente=123&amp;id_wpp=123&amp;token=XJS83HAUQORDIGHA82&amp;num_dest=11988887777&amp;txtmsg=teste&amp;id_campanha=12345</div></div></div></div></div></div></div></div></div></div></div></div>## Parâmetros da URL

<div class="TyagGW_tableContainer" id="bkmrk-par%C3%A2metro-descri%C3%A7%C3%A3o-"><div class="group TyagGW_tableWrapper flex flex-col-reverse w-fit" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2768" data-start="2161"><thead data-end="2186" data-start="2161"><tr data-end="2186" data-start="2161"><th class="" data-col-size="sm" data-end="2173" data-start="2161">Parâmetro</th><th class="" data-col-size="lg" data-end="2186" data-start="2173">Descrição</th></tr></thead><tbody data-end="2768" data-start="2197"><tr data-end="2279" data-start="2197"><td data-col-size="sm" data-end="2204" data-start="2197">acao</td><td data-col-size="lg" data-end="2279" data-start="2204">Identifica internamente a ação a ser executada (`insere_whats_simples`)</td></tr><tr data-end="2374" data-start="2280"><td data-col-size="sm" data-end="2293" data-start="2280">id\_cliente</td><td data-col-size="lg" data-end="2374" data-start="2293">Identificador do cliente (disponível no canto superior direito da plataforma)</td></tr><tr data-end="2463" data-start="2375"><td data-col-size="sm" data-end="2384" data-start="2375">token</td><td data-col-size="lg" data-end="2463" data-start="2384">Token de autorização do cliente para acesso à API</td></tr><tr data-end="2525" data-start="2464"><td data-col-size="sm" data-end="2472" data-start="2464">num\_dest</td><td data-col-size="lg" data-end="2525" data-start="2472">Número de telefone que receberá a mensagem</td></tr><tr data-end="2583" data-start="2526"><td data-col-size="sm" data-end="2537" data-start="2526">txtmsg</td><td data-col-size="lg" data-end="2583" data-start="2537">Texto da mensagem. **Em caso de API oficial este campo é ignorado**, pois a mensagem enviada será o template</td></tr><tr data-end="2705" data-start="2584"><td data-col-size="sm" data-end="2593" data-start="2584">id\_wpp</td><td data-col-size="lg" data-end="2705" data-start="2593">Identifica o canal utilizado (Opcional) (Desnecessário se informada a **id\_campanha**)</td></tr><tr data-end="2768" data-start="2706"><td data-col-size="sm" data-end="2720" data-start="2706">id\_campanha</td><td data-col-size="lg" data-end="2768" data-start="2720">Identificador da campanha previamente criada. (Opcional) (Desnecessário se informado a **id\_wpp**)</td></tr></tbody></table>

</div></div>---

# Método 2 — Template com Variáveis

Caso o template utilize **variáveis**, é necessário enviar os valores dessas variáveis no **payload da requisição**.

Neste caso deve ser utilizada uma requisição **HTTP POST**.

## Endpoint

<div class="relative w-full mt-4 mb-1" id="bkmrk-https%3A%2F%2Fapi.tallk.me-2"><div class=""><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="pe-11 pt-3"><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼ5 ͼj" dir="ltr" id="bkmrk-https%3A%2F%2Fapi.tallk.me-3"><div class="cm-scroller"><div class="cm-content q9tKkq_readonly">https://api.tallk.me/dbdial_webapi.php?acao=envio_whats_simples_v2&amp;id_cliente=123&amp;token=XJS83HAUQORDIGHA82</div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div><table class="w-fit min-w-(--thread-content-width)" data-end="2768" data-start="2161" id="bkmrk-par%C3%A2metro-descri%C3%A7%C3%A3o--1" style="width: 96.6667%;"><thead data-end="2186" data-start="2161"><tr data-end="2186" data-start="2161"><th class="" data-col-size="sm" data-end="2173" data-start="2161" style="width: 14.3742%;">Parâmetro</th><th class="" data-col-size="lg" data-end="2186" data-start="2173" style="width: 85.6258%;">Descrição</th></tr></thead><tbody data-end="2768" data-start="2197"><tr data-end="2279" data-start="2197"><td data-col-size="sm" data-end="2204" data-start="2197" style="width: 14.3742%;">acao</td><td data-col-size="lg" data-end="2279" data-start="2204" style="width: 85.6258%;">Identifica internamente a ação a ser executada (`envio_simples_whats_v2`)</td></tr><tr data-end="2374" data-start="2280"><td data-col-size="sm" data-end="2293" data-start="2280" style="width: 14.3742%;">id\_cliente</td><td data-col-size="lg" data-end="2374" data-start="2293" style="width: 85.6258%;">Identificador do cliente (disponível no canto superior direito da plataforma)</td></tr><tr data-end="2463" data-start="2375"><td data-col-size="sm" data-end="2384" data-start="2375" style="width: 14.3742%;">token</td><td data-col-size="lg" data-end="2463" data-start="2384" style="width: 85.6258%;">Token da conta do cliente.</td></tr></tbody></table>

---

# Exemplo de Payload da Requisição

<div class="relative w-full mt-4 mb-1" id="bkmrk--9"><div class=""><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼ5 ͼj" dir="ltr" id="bkmrk--10"><div class="cm-scroller">  
</div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div>```json
{
   "txtmsg":"Texto da mensagem",
   "id_wpp":1234,
   "email_dest":"email@email.com.br",
   "numero_dest":"1133332222",
   "id_campanha":123456,
   "assunto":"Alerta",
   "info_contato":{
      "documento":"01234567890",
      "nome":"Fulano de tal",
      "telefone1":"1133332222",
      "telefone2":"",
      "telefone3":"",
      "email":"email@email.com.br",
      "endereco":"Rua A",
      "bairro":"Centro",
      "cep":"11200000",
      "cidade":"Cidade",
      "estado":"UF",
      "pais":"BR",
      "geral1":"Informação Genérica 1",
      "geral2":"Informação Genérica 2",
      "geral3":"Informação Genérica 3",
      "geral4":"Informação Genérica 4",
      "geral5":"Informação Genérica 5"
   }
}
```

---

# Descrição dos Campos

## Campos Principais

<div class="TyagGW_tableContainer" id="bkmrk-campo-descri%C3%A7%C3%A3o-txtm"><div class="group TyagGW_tableWrapper flex flex-col-reverse w-fit" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="4566" data-start="4085"><thead data-end="4106" data-start="4085"><tr data-end="4106" data-start="4085"><th class="" data-col-size="sm" data-end="4093" data-start="4085">Campo</th><th class="" data-col-size="lg" data-end="4106" data-start="4093">Descrição</th></tr></thead><tbody data-end="4566" data-start="4117"><tr data-end="4235" data-start="4117"><td data-col-size="sm" data-end="4126" data-start="4117">txtmsg</td><td data-col-size="lg" data-end="4235" data-start="4126">Texto da mensagem. **Ignorado quando utilizado com API oficial**, pois o conteúdo enviado será o template</td></tr><tr data-end="4283" data-start="4236"><td data-col-size="sm" data-end="4245" data-start="4236">numero\_dest</td><td data-col-size="lg" data-end="4283" data-start="4245">Número para o qual será enviada a mensagem</td></tr><tr data-end="4371" data-start="4284"><td data-col-size="sm" data-end="4297" data-start="4284">email\_dest</td><td data-col-size="lg" data-end="4371" data-start="4297">Email do destinatário (opcional, pode ser usado em campanhas de email)</td></tr><tr data-end="4432" data-start="4372"><td data-col-size="sm" data-end="4386" data-start="4372">id\_wpp</td><td data-col-size="lg" data-end="4432" data-start="4386">Identifica o canal utilizado (Opcional) (Desnecessário se informada a **id\_campanha**)</td></tr><tr data-end="4495" data-start="4433"><td data-col-size="sm" data-end="4447" data-start="4433">id\_campanha</td><td data-col-size="lg" data-end="4495" data-start="4447">Identificador da campanha previamente criada. (Opcional) (Desnecessário se informado a **id\_wpp**)</td></tr><tr data-end="4566" data-start="4496"><td data-col-size="sm" data-end="4506" data-start="4496">assunto</td><td data-col-size="lg" data-end="4566" data-start="4506">Assunto do email (Opcional) (Ssado em campanhas de email, ou de outros tipos que fluem para campanha de email)</td></tr></tbody></table>

</div></div>---

# Variáveis do Contato (info\_contato)

As variáveis utilizadas nos templates são enviadas dentro do objeto `info_contato`.

<div class="TyagGW_tableContainer" id="bkmrk-campo-descri%C3%A7%C3%A3o-docu"><div class="group TyagGW_tableWrapper flex flex-col-reverse w-fit" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="5300" data-start="4697"><thead data-end="4718" data-start="4697"><tr data-end="4718" data-start="4697"><th class="" data-col-size="sm" data-end="4705" data-start="4697">Campo</th><th class="" data-col-size="lg" data-end="4718" data-start="4705">Descrição</th></tr></thead><tbody data-end="5300" data-start="4729"><tr data-end="4865" data-start="4729"><td data-col-size="sm" data-end="4741" data-start="4729">documento</td><td data-col-size="lg" data-end="4865" data-start="4741">Identificador do cliente (CPF, CNPJ ou outro identificador único). Caso ausente, pode ser utilizado o número de telefone</td></tr><tr data-end="4901" data-start="4866"><td data-col-size="sm" data-end="4873" data-start="4866">nome</td><td data-col-size="lg" data-end="4901" data-start="4873">Nome completo do cliente</td></tr><tr data-end="4987" data-start="4902"><td data-col-size="sm" data-end="4914" data-start="4902">telefone1</td><td data-col-size="lg" data-end="4987" data-start="4914">Número principal do cliente (geralmente igual ao campo `numero_dest`)</td></tr><tr data-end="5021" data-start="4988"><td data-col-size="sm" data-end="5000" data-start="4988">telefone2</td><td data-col-size="lg" data-end="5021" data-start="5000">Número secundário</td></tr><tr data-end="5062" data-start="5022"><td data-col-size="sm" data-end="5034" data-start="5022">telefone3</td><td data-col-size="lg" data-end="5062" data-start="5034">Terceiro número opcional</td></tr><tr data-end="5091" data-start="5063"><td data-col-size="sm" data-end="5071" data-start="5063">email</td><td data-col-size="lg" data-end="5091" data-start="5071">Email do contato</td></tr><tr data-end="5115" data-start="5092"><td data-col-size="sm" data-end="5103" data-start="5092">endereco</td><td data-col-size="lg" data-end="5115" data-start="5103">Endereço</td></tr><tr data-end="5135" data-start="5116"><td data-col-size="sm" data-end="5125" data-start="5116">bairro</td><td data-col-size="lg" data-end="5135" data-start="5125">Bairro</td></tr><tr data-end="5149" data-start="5136"><td data-col-size="sm" data-end="5142" data-start="5136">cep</td><td data-col-size="lg" data-end="5149" data-start="5142">CEP</td></tr><tr data-end="5169" data-start="5150"><td data-col-size="sm" data-end="5159" data-start="5150">cidade</td><td data-col-size="lg" data-end="5169" data-start="5159">Cidade</td></tr><tr data-end="5185" data-start="5170"><td data-col-size="sm" data-end="5179" data-start="5170">estado</td><td data-col-size="lg" data-end="5185" data-start="5179">UF</td></tr><tr data-end="5210" data-start="5186"><td data-col-size="sm" data-end="5193" data-start="5186">pais</td><td data-col-size="lg" data-end="5210" data-start="5193">País (ex: BR)</td></tr><tr data-end="5300" data-start="5211"><td data-col-size="sm" data-end="5229" data-start="5211">geral1 – geral5</td><td data-col-size="lg" data-end="5300" data-start="5229">Campos genéricos que podem ser utilizados como variáveis adicionais</td></tr></tbody></table>

</div></div>⚠️ Observação:

Caso a variável **`PRIMEIRO_NOME`** seja utilizada no template, o sistema automaticamente extrai o primeiro nome a partir do campo **`nome`**.