<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Blog GoZAP</title><link>https://blog.gozap.dev/</link><description>Conteúdo técnico sobre APIs, integrações e automação com WhatsApp.</description><language>pt-BR</language><item><title>Agendar mensagens WhatsApp API com a GoZAP</title><link>https://blog.gozap.dev/posts/agendar-mensagens-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/agendar-mensagens-whatsapp-api/</guid><description>Aprenda a agendar mensagens na API GoZAP com data RFC3339, entender o fuso, listar pendências, cancelar por ID e controlar a fila da instância.</description><content:encoded><![CDATA[# Agendar mensagens WhatsApp API: data, fuso e cancelamento

Aprenda a agendar mensagens na API GoZAP com data RFC3339, entender o fuso, listar pendências, cancelar por ID e controlar a fila da instância.

**Resumo:** O scheduler GoZAP agenda envios por data ou atraso, lista pendências, permite cancelar por ID e limpar a fila da instância. Veja o formato RFC3339, o uso do fuso e os limites documentados para cancelamento.

## Quais rotas fazem parte do scheduler?

O conjunto tem operações para agendar, consultar, cancelar, pausar e retomar. As rotas usam autenticação da instância pelo header `token` ou por `Authorization: Bearer SEU_TOKEN`. O identificador da instância vem dessa autenticação.

| Rota | O que faz |
|---|---|
| `POST /scheduler/schedule` | Agenda uma mensagem para uma data e hora. |
| `POST /scheduler/delay` | Agenda uma mensagem após um atraso em milissegundos. |
| `GET /scheduler/pending` | Lista agendamentos pendentes; aceita filtro opcional `jid`. |
| `DELETE /scheduler/{id}` | Cancela um agendamento pelo ID. |
| `DELETE /scheduler/cancel-all` | Cancela todos os agendamentos pendentes da instância. |
| `POST /scheduler/pause` | Pausa o scheduler da instância. |
| `POST /scheduler/resume` | Retoma o scheduler da instância. |

Todos os exemplos usam `https://SEU-DOMINIO/` como domínio ilustrativo e `SEU_TOKEN` como credencial fictícia. Substitua ambos pelos dados da sua instância.

## Como informar data e fuso horário?

`POST /scheduler/schedule` requer `jid`, `content_type`, `content` e `scheduled_at`. A data deve seguir RFC3339 e incluir offset, por exemplo `2026-10-10T15:00:00-03:00`. O serviço armazena o instante em UTC. O campo `timezone` é opcional e guardado como uma string separada.

Este exemplo agenda conteúdo de texto para um JID de telefone:

```bash
curl -X POST 'https://SEU-DOMINIO/scheduler/schedule' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"jid":"5511999999999@s.whatsapp.net","content_type":"text","content":{"text":"Lembrete: reunião hoje às 15h"},"scheduled_at":"2026-10-10T15:00:00-03:00"}'
```

O offset faz parte da data enviada e determina o instante representado. Se a aplicação já trabalha com um fuso local, converta a hora desejada para uma data RFC3339 com o offset correspondente antes da chamada.

Embora `timezone` exista como campo opcional, seu formato exigido e uma eventual conversão para definir o instante não estão documentados. Não dependa desse campo para corrigir um offset ausente: inclua o offset no próprio `scheduled_at`.

Por exemplo, a data local das 15h com offset `-03:00` representa um instante distinto de 15h em UTC. Como o armazenamento é em UTC, mantenha no sistema de origem tanto a intenção local quanto a data enviada se sua interface precisar apresentar a hora original. O campo opcional separado não muda a exigência de `scheduled_at` RFC3339 com offset.

## Que tipos de conteúdo podem ser agendados?

O campo `content_type` aceita `text`, `media`, `location`, `contact`, `interactive`, `status`, `group_status` e `channel_status`, sem distinção de maiúsculas após normalização. O campo `content` precisa ser um objeto validado conforme o tipo. Para status, o JID deve ser `status@broadcast`; status de grupo usa JID terminado em `@g.us`; status de canal usa JID terminado em `@newsletter`. O tipo `interactive` não agenda em canais.

O JID identifica o destino do agendamento. Para uma conversa individual, o exemplo usa um JID de telefone terminado em `@s.whatsapp.net`; destinos de grupo e canal seguem sufixos próprios quando os tipos de status correspondentes são usados. O scheduler valida o conteúdo conforme o tipo, portanto não trate `content` como texto arbitrário para todos os formatos. Escolha `content_type` conforme a operação planejada e envie um objeto compatível com aquele tipo.

Para atraso relativo, use `/scheduler/delay` com `jid`, `content_type`, `content` e `delay_ms` inteiro. O valor representa milissegundos somados ao horário atual:

```bash
curl -X POST 'https://SEU-DOMINIO/scheduler/delay' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN' \
--data '{"jid":"5511999999999@s.whatsapp.net","content_type":"text","content":{"text":"Lembrete em quinze minutos"},"delay_ms":900000}'
```

Os fatos disponíveis não estabelecem um limite máximo de atraso nem uma regra explícita para valores negativos. Faça a validação do prazo no seu sistema e use atrasos com unidade clara. Para formatos de texto e mídia em envio direto, veja [exemplos de envio pela API](/posts/enviar-mensagem-whatsapp-api-exemplos/); a seleção de conteúdo está no guia de [tipos de mensagem WhatsApp API](/posts/tipos-de-mensagem-whatsapp-api/).

## Como acompanhar e cancelar uma mensagem?

`GET /scheduler/pending` lista os agendamentos pendentes da instância. A query `jid` é opcional: com ela, restringe a lista ao JID informado; sem ela, retorna os pendentes da instância. A resposta contém `success`, `count` e `messages`.

```bash
curl 'https://SEU-DOMINIO/scheduler/pending?jid=5511999999999%40s.whatsapp.net' \
-H 'token: SEU_TOKEN'
```

Para cancelar uma entrada específica, use o ID do agendamento no caminho:

```bash
curl -X DELETE 'https://SEU-DOMINIO/scheduler/ID_DO_AGENDAMENTO' \
-H 'token: SEU_TOKEN'
```

O cancelamento individual responde com `success`. Para interromper todos os pendentes da instância, use `DELETE /scheduler/cancel-all`; a resposta também informa quantos foram cancelados. A API não documenta cancelamento por JID: o filtro por JID serve para listar, enquanto o cancelamento individual é por ID e a limpeza ampla atua sobre a instância autenticada.

Uma rotina de controle pode listar os pendentes, apresentar o ID retornado para a equipe e, após a decisão, enviar a exclusão daquele ID. Isso mantém clara a diferença entre escolher mensagens de uma conversa para visualização e executar o cancelamento efetivamente disponível. A resposta de cancelamento sinaliza a operação do scheduler, mas não altera o histórico de mensagens já processadas.

## Como pausar e retomar a fila?

`POST /scheduler/pause` pausa o scheduler da instância e `POST /scheduler/resume` retoma o processamento. Essas rotas não usam campos de body. A fila aplica um limite por instância; quando a configuração está ausente ou não é positiva, o padrão é 1.000 agendamentos pendentes.

Trate a resposta da requisição como confirmação da operação da API, sem inferir que a mensagem futura foi entregue ou lida. Para integrar observabilidade de eventos além da consulta dos pendentes, veja [webhooks e SSE da GoZAP](/posts/webhooks-sse-gozap/).

Planeje também como sua aplicação reage se a fila atingir o limite configurado. O valor padrão documentado é por instância e não substitui acompanhamento de pendências em operações que agendam muitos itens. Pause ou retome o scheduler de forma intencional, e mantenha registro das respostas para relacionar cada solicitação ao ID usado em consultas e cancelamentos.

Inclua no desenho da integração o ciclo completo: criar o agendamento, reter o identificador recebido, listar pendências quando for necessário verificar o estado e cancelar pelo ID se a decisão operacional mudar. Para consultar por JID, codifique corretamente o parâmetro de URL. A listagem por JID ajuda a localizar entradas relacionadas a uma conversa, mas não substitui o identificador requerido pela rota de cancelamento individual.

## Quando não escolher a GoZAP

Não escolha a GoZAP se seu fluxo exige cancelamento por JID, regras de fuso cuja conversão dependa do campo `timezone`, ou precisão de execução em horário exato que não esteja formalizada para sua operação. Projete a aplicação com base no ID retornado pelo agendamento e no offset enviado na data. A GoZAP conecta pelos modos nativos Web e Mobile, ambos fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/agendar-mensagens-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Anti-delete WhatsApp API: transparência e retenção</title><link>https://blog.gozap.dev/posts/anti-delete-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/anti-delete-whatsapp-api/</guid><description>Entenda como o anti-delete da GoZAP registra mensagens revogadas, controla armazenamento, envia webhooks e exige aviso, finalidade e retenção responsável.</description><content:encoded><![CDATA[# Anti-delete WhatsApp API com transparência e controle

Entenda como o anti-delete da GoZAP registra mensagens revogadas, controla armazenamento, envia webhooks e exige aviso, finalidade e retenção responsável.

**Resumo:** O anti-delete da GoZAP acompanha revogações de mensagens e pode guardar o conteúdo recuperado e emitir webhook. Em instância nova, ele vem ligado com armazenamento e notificação habilitados. O sistema não define prazo de retenção: quem usa precisa informar os interlocutores, definir finalidade e base legal, limitar o período e remover os registros pela API.

## O que o anti-delete registra?

Quando uma mensagem é revogada, o serviço procura a mensagem original no histórico recebido. Se ela não estiver disponível, por exemplo porque expirou ou nunca foi recebida, o conteúdo não é recuperado. Com `store_recovered` ativo, o registro armazenado inclui o conteúdo original e dados como tipo, identificador, conversa, remetente e datas.

Em instância nova, a configuração padrão tem anti-delete habilitado, armazenamento ativado e notificação por webhook ativada. Isso torna essencial entender o comportamento antes de colocar uma instância em uso. Uma mensagem apagada pode permanecer guardada e ser usada depois conforme a finalidade definida pela organização. Avise claramente os interlocutores antes de ativar ou manter esse tratamento.

| Rota | O que faz |
|---|---|
| `GET /anti-delete/config` | Consulta a configuração atual. |
| `POST /anti-delete/config` | Altera os campos enviados: `enabled`, `store_recovered`, `notify_webhook` e `include_original`. |
| `GET /anti-delete/recovered` | Lista mensagens recuperadas; aceita `limit` e `offset`. |
| `GET /anti-delete/recovered/{id}` | Consulta um registro pelo identificador. |
| `DELETE /anti-delete/recovered/{id}` | Exclui o registro armazenado. |

As rotas usam o token da instância no header `token` ou `Authorization: Bearer SEU_TOKEN`. O ID da instância não autentica a requisição. O exemplo abaixo mantém o recurso ligado, guarda os registros e envia o webhook sem o conteúdo original; ajuste os valores à finalidade da sua operação.

```bash
curl -X POST 'https://SEU-DOMINIO/anti-delete/config' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"enabled":true,"store_recovered":true,"notify_webhook":true,"include_original":false}'
```

Os quatro campos são booleanos opcionais, e o POST atualiza somente os campos enviados. `include_original` controla a inclusão do conteúdo no webhook; não controla se o banco guarda o registro. Para evitar persistência do conteúdo, configure `store_recovered` como `false`. Se a operação não deve acompanhar revogações, use `enabled:false`.

## Como funciona o webhook `message.revoked`?

O evento pode ser `message.revoked` ou `message.revoked.recovered`. O payload inclui dados como chave da mensagem, conversa, remetente, nome exibido, indicador de recuperação e horário da exclusão. Com `include_original` ativo, o webhook pode incluir conteúdo original, texto e tipo da mensagem. Sem essa opção, o sistema ainda pode armazenar o conteúdo se `store_recovered` estiver ligado.

Essa separação permite reduzir o que trafega até o consumidor do webhook, mas não substitui a decisão sobre armazenamento. Trate o endpoint receptor com controle de acesso, limite de pessoas que podem consultar mensagens e evite replicar conteúdo em logs, ferramentas de análise ou notificações amplas. Encaminhe apenas os campos necessários à finalidade explicada aos participantes.

O evento sinaliza uma revogação e a disponibilidade de conteúdo segundo a configuração; não restaura a mensagem na conversa. A API permite listar e consultar os registros persistidos, mas não oferece uma rota documentada para reenviar a mensagem apagada ao chat. Para integrar outros eventos, veja o guia de [webhooks e SSE da GoZAP](/posts/webhooks-sse-gozap/).

## Qual prazo de retenção devo definir?

O sistema não configura TTL ou expiração automática para mensagens recuperadas. Elas ficam armazenadas até serem excluídas pela rota DELETE ou até a exclusão da instância. Portanto, não deixe a duração depender do comportamento padrão: defina um prazo adequado à finalidade e à base legal escolhida, registre a decisão e implemente uma rotina de revisão e exclusão.

A listagem aceita `limit` e `offset`; o padrão é 100 registros, o limite aceito vai de 1 a 500 e o offset não pode ser negativo. Uma rotina pode consultar os registros, aplicar o prazo interno definido e excluir cada registro expirado com `DELETE /anti-delete/recovered/{id}`. Defina também quem pode executar essa rotina, como lidar com falhas e como verificar que a remoção ocorreu. A API não determina qual prazo sua empresa deve adotar.

Antes de ativar, avalie e documente uma base legal aplicável ao contexto, explique o motivo da retenção e aplique minimização: guarde apenas o necessário, restrinja acesso e estabeleça a data de descarte. Uma finalidade possível, definida com transparência, é manter respaldo para analisar uma mensagem caluniosa enviada por um cliente e apagada depois. A utilidade pretendida não transforma automaticamente o registro em prova válida.

### Modelo de aviso para adaptar

> Para proteger e documentar o atendimento, mensagens apagadas nesta conversa poderão ser armazenadas e consultadas pela equipe por até [prazo definido]. O tratamento tem a finalidade de [finalidade específica] e segue a base legal [base legal avaliada pela organização]. Após o prazo, os registros serão excluídos, salvo necessidade justificada conforme nossas regras de retenção.

Adapte o texto à prática real: não anuncie prazo, exclusão ou uso que sua organização ainda não implementou. Informe os participantes de forma clara antes de iniciar a retenção e mantenha o aviso acessível durante o relacionamento. A escolha da base legal e dos textos deve considerar o contexto e a orientação adequada à organização.

## O registro serve como prova jurídica?

Não há garantia de que uma mensagem recuperada seja aceita como prova. A relevância, autenticidade, contexto, integridade do registro e demais circunstâncias dependem do caso concreto e da decisão judicial. Use a função como recurso operacional de registro, sem prometer um resultado jurídico.

O artigo não é aconselhamento jurídico. A organização que usa o recurso precisa avaliar a base legal, explicar o tratamento, limitar os dados e o acesso, definir um prazo e executar uma rotina de exclusão conforme sua realidade. Para contextualizar o risco de operação por API não oficial, leia o [guia de risco de restrição](/posts/risco-banimento-whatsapp-api-nao-oficial/) e conheça os [recursos de grupos, comunidades e canais](/posts/grupos-comunidades-canais-status-api-whatsapp/).

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio. O recurso de retenção não altera esse risco nem substitui uma política interna de dados.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua organização não pode avisar os interlocutores, não consegue definir finalidade e base legal, ou não tem processo para revisar e apagar registros dentro de um prazo escolhido. A GoZAP conecta em Web e Mobile, modos que estão fora da API oficial da Meta. Também não adote o recurso com a expectativa de que uma mensagem guardada será aceita como prova em qualquer disputa.

Leia a [documentação da API GoZAP](https://gozap.dev/docs) para planejar configuração, consulta e exclusão dos registros.


Versão Markdown: https://blog.gozap.dev/posts/anti-delete-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Segurança</category></item>
<item><title>API WhatsApp híbrida: oficial e não oficial</title><link>https://blog.gozap.dev/posts/api-whatsapp-hibrida-oficial-e-nao-oficial/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/api-whatsapp-hibrida-oficial-e-nao-oficial/</guid><description>Entenda a arquitetura híbrida de WhatsApp: o cliente integra a Cloud API da Meta e a GoZAP como duas pontas separadas, com custos e eventos distintos.</description><content:encoded><![CDATA[# API de WhatsApp híbrida: como combinar a Cloud API e uma API não oficial

Entenda a arquitetura híbrida de WhatsApp: o cliente integra a Cloud API da Meta e a GoZAP como duas pontas separadas, com custos e eventos distintos.

**Resumo:** Nesta arquitetura, a aplicação do cliente integra diretamente a Cloud API da Meta e usa a GoZAP como uma segunda conexão, para fluxos separados. A GoZAP conecta pelo modo Web, com QR ou código de pareamento, ou pelo modo Mobile, que registra a conta pelo número, direto no socket mobile e sem celular nem emulador. O envio Cloud API sai da integração direta do cliente com a Meta.

## O que significa usar uma arquitetura híbrida?

“Híbrida” descreve como o cliente compõe seu sistema: um serviço próprio tem duas integrações distintas, uma com a WhatsApp Business Platform da Meta e outra com a API GoZAP. O sistema escolhe qual conexão atende cada fluxo. São duas pontas independentes na arquitetura.

A Meta descreve a [WhatsApp Business Platform](https://developers.facebook.com/docs/whatsapp/) e a Cloud API como plataforma empresarial de mensagens. A GoZAP oferece dois modos nativos: Web, por QR ou código de pareamento, e Mobile, com registro pelo número diretamente no socket mobile, sem celular nem emulador. No modo Web, a API usa `whatsmeow`, uma implementação multidevice do WhatsApp Web. O envio pela Cloud API ocorre na integração direta entre a aplicação do cliente e a Meta.

## Como a coexistência da GoZAP se encaixa?

No modo Web, a GoZAP tem a rota `POST /device/coexistence/connect`, que recebe o QR e a origem do provedor de tecnologia e vincula um companion à conta WhatsApp Business móvel. Esse QR é o exibido pelo provedor durante Embedded Signup. É uma conexão de coexistência; não transforma a GoZAP em cliente de envio pela Graph/Cloud API.

O endpoint recebe os campos `qr` e `origin` e é autenticado como parte da API da instância. Para parear pelo modo Web por outros caminhos, a API também oferece `POST /device/pair/qr` e `POST /device/pair/code`.

```text
POST /device/coexistence/connect
Content-Type: application/json

&#123;"qr":"QR_DA_COEXISTENCIA","origin":"ORIGEM_DO_PROVEDOR"&#125;
```

Na arquitetura híbrida, o próprio cliente mantém sua credencial e chamada oficial à Meta. Nesse fluxo do modo Web, a rota GoZAP vincula o companion indicado pelo QR. A GoZAP também oferece o modo Mobile, que registra a conta pelo número; veja o [guia do modo Mobile sem celular](/posts/modo-mobile-sem-celular/). As duas integrações têm autenticação, mensagens, eventos e cobrança separados.

## Como separar responsabilidades e eventos?

Registre quais casos de uso passam pela Cloud API e quais passam pela GoZAP. Encaminhe cada operação por uma integração definida, sem duplicar automaticamente a mesma ação nas duas pontas.

A aplicação que escolhe a Cloud API faz a chamada oficial à Meta e processa os eventos correspondentes. A política de cobrança também é da Meta e depende da categoria e do mercado da mensagem.

O pareamento por QR ou código inicia o modo Web. A GoZAP dispõe ainda de webhooks por instância em `/webhook` e eventos SSE em `/sse`; esses eventos pertencem ao caminho GoZAP.

Identifique a plataforma que processou cada envio e acompanhe a resposta correspondente. Uma resposta HTTP ou confirmação de transporte não equivale a entrega ou leitura da mensagem.

```text
Aplicação do cliente → Cloud API da Meta
Aplicação do cliente → API GoZAP → modo Web ou Mobile
```

O diagrama representa uma divisão de chamadas feita pelo sistema do cliente. Não há compartilhamento automático de credenciais ou sincronização implícita entre as plataformas.

## Como organizar o roteamento dos fluxos?

Registre se o fluxo usa a plataforma oficial ou a API GoZAP e identifique o sistema que inicia cada envio. Na conexão Meta, considere as categorias marketing, utilidade, autenticação e serviço. Na conexão GoZAP, mapeie o recurso usado, como envio de texto ou mídia.

Mantenha os eventos Cloud API e GoZAP em caminhos diferentes na aplicação. Para GoZAP, a instância dispõe de webhooks configuráveis em `/webhook` e eventos transmitidos por `/sse`. Seu consumidor pode aplicar regras próprias de registro e encaminhamento a cada origem.

Registre qual conexão iniciou o envio e qual endpoint recebeu o evento. Assim a equipe consegue distinguir um erro da chamada Meta de uma falha no caminho GoZAP, sem atribuir a uma plataforma a resposta emitida pela outra.

O desenho de roteamento também define as responsabilidades de suporte e cobrança: uma operação iniciada pela Cloud API segue a conta e as categorias da Meta; uma operação GoZAP usa a instância e a assinatura GoZAP.

## Como funciona a cobrança de cada ponta?

A Meta lista quatro categorias de mensagens na sua [página oficial de preços](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing): marketing, utilidade, autenticação e serviço. Desde 1º de julho de 2025, a cobrança descrita é por mensagem empresarial entregue, segundo categoria e mercado. A página registra mudanças com vigência a partir de 1º de outubro de 2026. A tarifa aplicável depende da categoria e do mercado da conta.

A GoZAP usa assinatura mensal por plano e quantidade de instâncias, sem tarifa por mensagem nesse modelo. Preços vigentes em 5 de outubro de 2026:

| Faixa da assinatura GoZAP | Valor mensal |
|---|---:|
| 1 instância | R$ 27,00 |
| 2 a 10 instâncias | R$ 25,00 por instância |
| Starter, até 100 instâncias | R$ 200,00 |
| Enterprise, até 300 instâncias | R$ 449,99 |

Essas cobranças não se misturam: a aplicação administra a integração Cloud API diretamente com a Meta e paga a assinatura da GoZAP separadamente.

Na assinatura GoZAP, cinco instâncias na faixa de 2 a 10 custam R$ 125,00 por mês.

## Quando não escolher a GoZAP

Se todos os envios precisam ocorrer pela Cloud API oficial, implemente essa integração diretamente com a Meta. A GoZAP conecta pelos modos Web e Mobile, ambos fora da API oficial da Meta, e não substitui esse caminho de envio. Se sua regra interna proíbe APIs não oficiais, use apenas plataformas oficiais.

Se a equipe precisa instalar e operar o servidor da API na própria infraestrutura, o serviço hospedado da GoZAP não atende a esse requisito. Se o projeto exige SLA contratual, região específica de hospedagem ou política de retenção detalhada, exija esses termos no contrato antes de selecionar o serviço.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

Para outros caminhos de integração, veja a [migração de sessão WhatsApp](/posts/migrar-sessao-whatsapp/), a configuração de [webhooks GoZAP no n8n](/posts/gozap-n8n-disparo/) e a integração de [Chatwoot com GoZAP](/posts/chatwoot-nativo-gozap/).


Versão Markdown: https://blog.gozap.dev/posts/api-whatsapp-hibrida-oficial-e-nao-oficial.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>API oficial vs não oficial do WhatsApp</title><link>https://blog.gozap.dev/posts/api-whatsapp-oficial-vs-nao-oficial/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/api-whatsapp-oficial-vs-nao-oficial/</guid><description>Compare a Cloud API da Meta, opções self-host e serviços hospedados por operação, cobrança, recursos e responsabilidades para escolher uma API WhatsApp.</description><content:encoded><![CDATA[# API oficial vs não oficial do WhatsApp: Cloud API, self-host ou hospedada?

Compare a Cloud API da Meta, opções self-host e serviços hospedados por operação, cobrança, recursos e responsabilidades para escolher uma API WhatsApp.

**Resumo:** A Cloud API da Meta, projetos self-host e serviços hospedados distribuem operação, cobrança e responsabilidade de formas diferentes. Escolha pelo modelo que atende seus requisitos técnicos e comerciais.

## O que muda entre a Cloud API e uma API não oficial?

A WhatsApp Business Platform da Meta inclui a Cloud API, uma plataforma empresarial acessada por integrações próprias. A página de preços da Meta descreve cobrança por mensagem empresarial entregue, conforme categoria e mercado; lista marketing, utilidade, autenticação e serviço. As tarifas em reais não entram nesta comparação porque variam por mercado e categoria.

As soluções não oficiais se conectam ao WhatsApp por fora da API da Meta. A maioria usa clientes ou sessões ligados ao WhatsApp Web; a GoZAP oferece esse modo e também o modo Mobile, que registra a conta pelo número e conversa direto com o backend do WhatsApp, sem celular nem emulador. O projeto pode ser uma biblioteca incorporada à aplicação, um servidor que a própria equipe instala, ou um serviço operado por fornecedor. A forma de conexão, a licença e as tarefas de infraestrutura mudam de um projeto para outro.

No modelo self-host, a empresa controla o servidor e assume atualização, monitoramento, disponibilidade de infraestrutura, cópias e resposta a incidentes. Em uma API hospedada, o fornecedor mantém a plataforma e entrega um endpoint para integração; a empresa continua responsável por credenciais, fluxos, contatos e operação do próprio negócio.

## Como os modelos se comparam por critério?

| Critério | Cloud API da Meta | Self-host | Serviço hospedado |
|---|---|---|---|
| Operação | Plataforma empresarial da Meta, integrada ao sistema da empresa. | O operador instala e executa o software em seus servidores. | O fornecedor opera a API e disponibiliza acesso às instâncias. |
| Exemplos documentados | WhatsApp Business Platform / Cloud API. | Evolution API via Docker; WAHA REST; WPPConnect Server; biblioteca Baileys. | GoZAP hospedada com control plane de autosserviço; W-API oferece instância SaaS mensal. |
| Licença | Plataforma empresarial da Meta. | Evolution: Apache 2.0 com condições adicionais; WAHA e WPPConnect Server: Apache 2.0; Baileys: MIT. | GoZAP e W-API são serviços hospedados com cobrança por assinatura. |
| Conexão e componentes | Cloud API oficial da Meta. | WAHA lista engines WEBJS, NOWEB, GOWS e WPP; Baileys é uma biblioteca TypeScript/WebSocket para WhatsApp Web. | GoZAP oferece Web e Mobile; W-API se identifica como API não oficial. |
| Recursos documentados | Categorias de mensagem e regras de cobrança constam na plataforma. | WPPConnect Server lista sessões múltiplas, texto e mídia, contatos, grupos e webhooks; Evolution informa integração Baileys e Cloud API. | W-API lista webhooks, contatos, grupos e envio de mensagens/mídia; GoZAP oferece envio de conteúdo, grupos, webhooks e SSE. |
| Cobrança | Por mensagem empresarial entregue, categoria e mercado. | O software WAHA é gratuito; infraestrutura, manutenção e horas de operação seguem por conta do operador. | GoZAP cobra assinatura por plano/quantidade; W-API publica preço mensal por instância. |
| Escala operacional | Planejamento de integração e custo conforme mensagens e categorias. | A equipe dimensiona servidor, sessões, atualizações e observabilidade. | A capacidade depende da oferta contratada e do desenho por instâncias; a cobrança publicada da GoZAP define pacotes de até 10, 100 ou 300 instâncias. |

Os links oficiais da [Meta](https://developers.facebook.com/docs/whatsapp/) e da [página de preços](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing) detalham a plataforma, categorias e regra de cobrança. A página informa alterações com vigência em 1º de outubro de 2026. A cobrança não é uma mensalidade simples por número de instâncias: o cálculo depende das mensagens entregues, categoria e mercado.

Compare o custo completo de operação: uma licença sem preço não torna gratuitos o servidor, a manutenção ou o tempo da equipe.

## Quais diferenças aparecem em projetos self-host e hospedados?

A [Evolution API](https://github.com/evolution-foundation/evolution-api) documenta instalação com Docker e informa suporte a uma conexão baseada em Baileys e à Cloud API. O projeto é distribuído sob Apache License 2.0 com condições adicionais específicas. A equipe que instala o servidor mantém os componentes e integrações do seu ambiente.

O [WAHA](https://github.com/devlikeapro/waha) é uma API REST executada no servidor do operador, com engines WEBJS, NOWEB, GOWS e WPP. O projeto declara o software self-host gratuito e publica licença Apache 2.0. O [WPPConnect Server](https://wppconnect.io/docs/projects/wppserver/introduction/) é instalado pelo operador, tem licença Apache 2.0 e documenta sessões múltiplas, mensagens, grupos e webhooks. Já o [Baileys](https://github.com/WhiskeySockets/Baileys) é uma biblioteca TypeScript/WebSocket com licença MIT, para integrar WhatsApp Web em uma aplicação própria.

Na operação hospedada, a GoZAP descreve uma API com control plane de autosserviço e dois modos nativos: Web, iniciado por QR ou código de pareamento, e Mobile, que registra a conta pelo número. As rotas `POST /device/pair/qr` e `POST /device/pair/code` correspondem ao modo Web. A API também oferece envio de texto e mídia, grupos, `/webhook`, `/sse`, `/instance/proxy` e `/mcp`. O plano associa assinatura à quantidade de instâncias.

Cada instância GoZAP inclui um proxy móvel individual de operadora TIM ou Claro, sem valor adicional; no Starter, o pacote de até 100 instâncias custa R$ 200,00 e cobre os 100 proxies, equivalentes a R$ 2,00 por instância. O IP de cada instância fica isolado. No modo Mobile, a conta é registrada pelo número diretamente no socket mobile, sem celular, emulador ou aplicativo APK/IPA. QR e código de pareamento pertencem ao modo Web; Mobile registra a conta pelo número. Veja mais sobre [registro pelo modo Mobile](/posts/modo-mobile-sem-celular/).

A [W-API](https://www.w-api.app/) oferece instância SaaS mensal e se identifica como API não oficial. Em 5 de outubro de 2026, a página apresentava LITE por R$ 19,90/mês e PRO por R$ 29,90/mês, cada um por uma instância. Esses preços não são uma comparação de equivalência de recursos com a GoZAP.

## Que cobrança e risco entram na decisão?

Na Cloud API, a cobrança acompanha mensagens empresariais entregues, categorias e mercados. No self-host, some recursos de servidor, banco de dados, armazenamento, tráfego, observabilidade, atualização e horas técnicas. No serviço hospedado, compare o preço da instância ou do plano e identifique custos externos da arquitetura.

Em 5 de outubro de 2026, os preços vigentes da GoZAP são: uma instância por R$ 27,00/mês; de duas a dez, R$ 25,00 por instância/mês; pacote Starter de até 100 por R$ 200,00/mês; pacote Enterprise de até 300 por R$ 449,99/mês. Os exemplos e regras de menor custo estão no [guia de preços](/posts/quanto-custa-api-whatsapp/).

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição. A GoZAP não garante contra bloqueio.

## Como registrar uma decisão que possa ser revisada?

Liste o modelo permitido, o volume, as integrações, a responsabilidade por infraestrutura e o orçamento total. Diferencie funções indispensáveis de itens desejáveis.

Teste pareamento, envio, eventos e recuperação em uma conta controlada. Anote entrada, versão da integração e resultado observado; uma resposta da API não prova leitura ou entrega final.

Some mensalidade, instâncias, infraestrutura, horas de operação e custo de mensagens quando houver. Registre quem responde por cada camada e quais compromissos entram no contrato.

```text
Cloud API: cobrança por mensagem entregue, categoria e mercado
Self-host: software conforme licença + infraestrutura + operação
Hospedada: mensalidade/plano + operação do cliente
```

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige enviar exclusivamente pela Cloud API oficial da Meta: a GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta. Também não escolha se precisa instalar e operar o software na infraestrutura da sua própria empresa. Se SLA contratual for obrigatório, faça disso uma condição de contratação e só avance com o compromisso formal correspondente.

Para avaliar integrações com sistemas existentes, veja como a GoZAP recebe [webhooks e eventos SSE](/posts/webhooks-sse-gozap/) e como conectar o [node GoZAP ao n8n](/posts/gozap-n8n-disparo/).


Versão Markdown: https://blog.gozap.dev/posts/api-whatsapp-oficial-vs-nao-oficial.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Comparativos</category></item>
<item><title>Chamadas WhatsApp API não oficial: rotas GoZAP</title><link>https://blog.gozap.dev/posts/chamadas-whatsapp-api-nao-oficial/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/chamadas-whatsapp-api-nao-oficial/</guid><description>Veja como iniciar, atender, rejeitar e encerrar chamadas na GoZAP, consultar estados e histórico, configurar SIP, links, gravações e webhooks pela API.</description><content:encoded><![CDATA[# Chamadas WhatsApp API não oficial com a GoZAP

Veja como iniciar, atender, rejeitar e encerrar chamadas na GoZAP, consultar estados e histórico, configurar SIP, links, gravações e webhooks pela API.

**Resumo:** A API GoZAP expõe operações para iniciar e controlar chamadas, consultar estado e histórico, trabalhar com gravações e SIP, criar links e receber eventos de chamada. A rota `/call` também pode servir HTML personalizável. A disponibilidade de gravações e recursos depende dos serviços e da configuração usados na operação.

## Quais operações de chamada existem na API?

O contrato separa ações de chamada, consulta, áudio e vídeo, histórico, gravação, SIP e links. As rotas abaixo descrevem os recursos documentados; a presença de uma rota não confirma que uma conta, serviço externo ou linha simultânea esteja habilitada em todo ambiente.

| Rota | O que faz |
|---|---|
| `POST /call/make` | Inicia chamada; recebe `phone` e, opcionalmente, `video`. |
| `POST /call/accept` | Aceita uma chamada por `call_id`; `from` é opcional. |
| `POST /call/reject` | Rejeita uma chamada por `call_id`; aceita também `from`. |
| `POST /call/end` | Encerra a chamada identificada por `call_id`. |
| `GET /call/status` | Consulta estado de chamadas. |
| `GET /call/history`, `GET /call/history/{call_id}` | Lista o histórico ou consulta uma chamada pelo identificador. |
| `GET /call/history/{call_id}/recording/url` | Obtém link temporário para baixar uma gravação disponível. |
| `DELETE /call/history/{call_id}/recording` | Exclui a gravação associada ao registro. |
| `POST /call/sip/enable`, `/call/sip/rotate`; `GET` e `DELETE /call/sip` | Habilita, rotaciona, consulta ou remove a configuração SIP. |
| `POST /call/link/create`, `/call/link/waiting-room`, `/send/call-link` | Cria link, configura sala de espera ou envia link em uma conversa. |
| `POST /call/video/upgrade`, `/call/screen-share`, `/call/webrtc` | Opera upgrade de vídeo, compartilhamento de tela e negociação WebRTC. |
| `GET /call/pcm`, `GET /call/video` | Abre conexões WebSocket de áudio PCM ou vídeo. |

As rotas de controle e estado usam autenticação de chamada (`callAuth`); histórico, gravação, SIP e links usam autenticação da instância (`auth`). A credencial é o token da instância, não o ID. Para as operações com `auth`, o header `token` ou `Authorization: Bearer SEU_TOKEN` são aceitos. O middleware de chamada também reconhece um token de widget com escopo restrito.

## Como iniciar, aceitar ou encerrar uma chamada?

Para iniciar, envie o telefone em `phone`; `video` é opcional. O handler também aceita telefone com pontuação e sinal de mais, removidos durante o processamento, ou um JID válido. Chamadas de grupo não são suportadas. A resposta de ações principais inclui `success` e `call_id`, que a aplicação deve guardar para consultar ou encerrar aquela sessão.

```bash
curl -X POST 'https://SEU-DOMINIO/call/make' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"phone":"5511999999999","video":false}'
```

Para aceitar, o corpo usa `call_id` obrigatório e `from` opcional. Para rejeitar, os mesmos campos são aceitos, embora o handler não marque campos obrigatórios nessa estrutura. Para encerrar, envie `call_id`. Leia a resposta e consulte o estado quando precisar refletir a situação na interface. A existência de uma resposta de sucesso de uma ação não deve ser apresentada como garantia de duração ou conclusão da chamada com outra pessoa.

O histórico aceita filtros `direction`, `status`, `leg`, `limit`, `offset`, `from` e `to`. Datas nos filtros são RFC3339; datas inválidas são ignoradas. O limite padrão é 100 registros e o máximo é 500. Use a consulta por `call_id` quando precisar abrir um item individual e separar os metadados da operação de mídia relacionada.

## Como funcionam gravação, SIP e links?

Quando houver gravação disponível, a API fornece um link assinado com validade de 300 segundos. O parâmetro `disposition=attachment` orienta o download, e a rota DELETE remove a gravação. A gravação de áudio tem limite técnico de uma hora e depende do R2 e do serviço GoVoIP; o histórico informa uma janela de gravação R2 de sete dias. Essas dependências não equivalem a uma promessa de disponibilidade universal de gravação.

As operações SIP de ativação e rotação retornam parâmetros como `uri`, `auth_user`, `auth_pass`, `baresip`, `domain` e `transport`. Trate os valores de autenticação como segredo, armazene-os com controles apropriados e não os exponha em registros do navegador ou mensagens de suporte. `GET /call/sip` informa estado como `enabled`, `registered`, `contact` e `call_runtime`. As rotas retornam erro se o recurso estiver indisponível, e a ausência de linha simultânea comprada resulta em HTTP 402.

`POST /call/link/create` aceita `media`, `waiting_room` e `event_start_time`; nenhum é obrigatório. O valor `video` define mídia de vídeo e os demais valores resultam em áudio. A configuração de sala de espera recebe `token`, `media` e `enabled`, sendo o token exigido pelo serviço. `/send/call-link` pode encaminhar o link a `number` ou `chatid`, com pelo menos um destino, e aceita ainda `media`, `waiting_room`, `event_start_time`, `name`, `description` e `text`.

## O que chega pelos webhooks de chamada?

Os eventos documentados incluem `incoming-call`, `call-status` e `call`. O payload pode trazer `call_id`, `from`, `peer`, `phone`, `direction`, `status`, `media_type`, `video`, `operator_leg` e, quando existente, `reason`. O timestamp é informado em milissegundos Unix. No bridge Mobile, o evento `call` também pode incluir `call_creator` e `kind`.

Projete o consumidor para registrar o evento e o identificador, atualizar a interface e tratar estados posteriores. Não interprete um webhook isolado como uma garantia de que a chamada permaneceu conectada, foi atendida ou teve duração mínima. Disponibilidade e entrega da chamada dependem da sessão e dos serviços envolvidos.

O endereço `/call` tem uma personalização específica: o HTML servido nessa rota pode ser substituído por HTML definido pelo cliente. As operações administrativas consultam, salvam e removem esse template, e permitem ler o HTML padrão. Isso descreve personalização do HTML em `/call`, sem ampliar a afirmação para outros caminhos ou para qualquer aspecto técnico não documentado.

A Calling API da Meta é um recurso da plataforma oficial, conforme a [documentação da Meta sobre Calling](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/). Essa referência estabelece o enquadramento oficial da funcionalidade da Meta; este guia descreve as rotas GoZAP e não atribui a elas o status de recurso oficial.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio. A documentação das rotas não promete duração, entrega ou gravação em qualquer configuração. Para avaliar os demais recursos de comunicação, veja [grupos, comunidades, canais e status pela API](/posts/grupos-comunidades-canais-status-api-whatsapp/) e [eventos e webhooks GoZAP](/posts/webhooks-sse-gozap/).

## Quando não escolher a GoZAP

Não escolha a GoZAP se seu requisito é usar apenas a plataforma oficial da Meta, ou se a operação exige um compromisso confirmado de entrega, duração mínima de chamada ou gravação em todas as sessões. A conexão GoZAP está disponível pelos modos Web e Mobile, ambos fora da API oficial da Meta. Esses compromissos não estão estabelecidos pelas rotas descritas. Se a personalização necessária for além do HTML servido em `/call`, valide o requisito antes de adotar o fluxo.

Para conferir parâmetros e autenticação das chamadas, abra a [documentação da API GoZAP](https://gozap.dev/docs). O [guia de risco de uso de API não oficial](/posts/risco-banimento-whatsapp-api-nao-oficial/) contextualiza o limite de política e operação.


Versão Markdown: https://blog.gozap.dev/posts/chamadas-whatsapp-api-nao-oficial.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Chatbot WhatsApp com n8n e GoZAP: guia completo</title><link>https://blog.gozap.dev/posts/chatbot-whatsapp-n8n-gozap-passo-a-passo/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/chatbot-whatsapp-n8n-gozap-passo-a-passo/</guid><description>Monte um chatbot de WhatsApp com n8n e GoZAP: receba eventos por webhook, trate a conversa no workflow e envie uma resposta pela API com exemplos práticos.</description><content:encoded><![CDATA[# Chatbot de WhatsApp com n8n e GoZAP do evento à resposta

Monte um chatbot de WhatsApp com n8n e GoZAP: receba eventos por webhook, trate a conversa no workflow e envie uma resposta pela API com exemplos práticos.

**Resumo:** Um chatbot com n8n e GoZAP combina um Webhook Trigger do n8n para receber eventos da instância com um node de envio para responder pela API. A GoZAP envia o evento ao endpoint configurado; o workflow interpreta o caso e chama a operação de texto quando a resposta estiver pronta.

## Como o evento chega ao n8n?

O n8n fornece uma URL de teste e uma URL de produção por meio do node Webhook Trigger. Cadastre a URL desejada na configuração de webhook da instância GoZAP e escolha os eventos de interesse, como `messages`. O pacote `n8n-nodes-gozap` ajuda a configurar e consultar webhooks, mas não funciona como um trigger que recebe eventos: a entrada do fluxo vem do node Webhook nativo do n8n.

| Rota | O que faz |
|---|---|
| `GET /webhook` | Consulta os webhooks configurados para a instância. |
| `POST /webhook` | Cadastra ou substitui a configuração de webhook. |
| `GET /webhook/errors` | Consulta erros de entrega registrados. |

O corpo de configuração pode ser um objeto, uma lista ou um objeto com a chave `webhooks`. A URL é obrigatória; `enabled` fica ativo por padrão, e eventos, filtros e segurança podem ser informados. Para configurar um endpoint, use um corpo como este:

```json
{
"url": "https://SEU-DOMINIO/",
"events": ["messages"],
"enabled": true
}
```

A autenticação das rotas de webhook usa o token da instância no header `token`. Após o cadastro, a GoZAP coloca o evento na fila e um worker envia um POST com `application/json`. O envelope contém `event`, `instance_id`, `data` e `timestamp`. A entrega é assíncrona: respostas HTTP 2xx contam como sucesso, e falhas podem ser tentadas novamente, com intervalos crescentes.

## Como montar o fluxo ponta a ponta?

Uma estrutura inicial separa recepção, decisão e resposta. No n8n, conecte o Webhook Trigger a um nó de inspeção ou normalização; depois, use regras do seu atendimento para decidir se deve responder, encaminhar a conversa ou pedir intervenção humana. Termine ligando os caminhos automáticos ao node GoZAP de envio de texto.

O formato específico dentro de `data` varia conforme o evento. Abra uma execução do Webhook Trigger e examine o JSON recebido antes de definir expressões para telefone, mensagem ou identificador da conversa. Assim, o filtro usa campos observados no payload real, sem depender de um exemplo presumido.

No pacote, o recurso de envio de texto pede destinatário `number` e conteúdo `text`. Este é um exemplo de resposta, com o mesmo corpo em todos os clientes abaixo. O token de demonstração deve ser trocado pelo token da instância:

```bash
curl -X POST 'https://SEU-DOMINIO/send/text' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"number":"5511999999999","text":"Olá! Como posso ajudar?"}'
```

O exemplo em Node.js usa `fetch` com esse mesmo corpo:

```js
const body = {
number: "5511999999999",
text: "Olá! Como posso ajudar?"
};

const response = await fetch("https://SEU-DOMINIO/send/text", {
method: "POST",
headers: {
"Content-Type": "application/json",
token: "SEU_TOKEN"
},
body: JSON.stringify(body)
});

console.log(response.status, await response.text());
```

Em Python com `requests`, o objeto enviado mantém os mesmos dois campos e valores:

```python
import requests

body = {
"number": "5511999999999",
"text": "Olá! Como posso ajudar?"
}

response = requests.post(
"https://SEU-DOMINIO/send/text",
headers={"token": "SEU_TOKEN"},
json=body,
)
print(response.status_code, response.text)
```

E aqui está a mesma chamada em PHP usando cURL:

```php
<?php
$body = [
"number" => "5511999999999",
"text" => "Olá! Como posso ajudar?",
];

$curl = curl_init("https://SEU-DOMINIO/send/text");
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json", "token: SEU_TOKEN"],
CURLOPT_POSTFIELDS => json_encode($body),
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($curl);
echo curl_getinfo($curl, CURLINFO_HTTP_CODE) . " " . $response;
curl_close($curl);
```

No workflow, os valores de `number` e `text` podem vir dos dados que a sua equipe mapeou a partir do evento e das regras de atendimento. Mantenha a resposta fora de caminhos que não devam falar automaticamente e registre os erros que o node retornar.

## O que o pacote n8n-nodes-gozap oferece?

O pacote instala com `npm install n8n-nodes-gozap`. Ele disponibiliza recursos para instância, envio, chats, mensagens, usuários, grupos, perfil, business, contatos, etiquetas, comunidades, newsletters, respostas rápidas, respostas automáticas, agendamento, anti-delete, chamadas, webhooks, Chatwoot, administração e estado do sistema. O envio contempla texto e outros tipos, incluindo mídia, contato, botões, lista, carrossel, localização, pagamentos, status, álbum e produto.

As operações administrativas usam uma credencial com subdomínio e Admin Token, enviado como `admintoken`. Algumas operações de instância também solicitam o token daquela instância e enviam `token`. Portanto, separe credencial administrativa de credencial de instância e conceda no workflow apenas o necessário para a tarefa.

O relatório de sincronização datado de 13 de julho de 2026 registra números de rotas e operações daquele levantamento. Como não há um relatório posterior confirmado neste escopo, esses números não descrevem a cobertura atual integral e não devem ser usados como promessa de versão ou de compatibilidade.

Para um passo a passo focado no cadastro e inspeção de eventos, continue em [webhooks GoZAP e n8n](/posts/gozap-n8n-disparo/). O post [webhooks e SSE na GoZAP](/posts/webhooks-sse-gozap/) ajuda a distinguir os mecanismos de eventos disponíveis. O tutorial de automação trata aqui o caminho completo: entrada do evento, decisão do workflow e resposta.

## Como cuidar de erros e segurança?

Ative somente as categorias de evento necessárias e revise as execuções do n8n para detectar URLs incorretas e mapeamentos desatualizados. A GoZAP documenta `GET /webhook/errors` para consultar erros. A entrega tem timeout HTTP de 15 segundos e até oito tentativas com espera exponencial; planeje o workflow para processar eventos sem criar efeitos duplicados quando houver nova tentativa.

Se o destino exigir autenticação de integridade, a configuração aceita `securityMode` igual a `hmac_sha256` e um segredo. A entrega inclui `X-GoZap-Signature` e `X-GoZap-Timestamp`. No receptor, confira a assinatura segundo a documentação da API antes de tratar o conteúdo como íntegro. Proteja o token e o segredo nas credenciais do n8n, sem gravá-los em texto aberto em nós ou logs.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige exclusivamente a plataforma oficial da Meta ou se o fluxo precisa de uma integração nativa do n8n que receba eventos sem configurar um endpoint Webhook Trigger. A configuração descrita depende de uma URL acessível pelo serviço e de uma etapa no n8n para receber o POST.

A GoZAP oferece os modos de conexão Web (QR ou código de pareamento) e Mobile (registro pelo número); nenhum deles usa a API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/chatbot-whatsapp-n8n-gozap-passo-a-passo.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Checklist para migrar API de WhatsApp</title><link>https://blog.gozap.dev/posts/checklist-migrar-api-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/checklist-migrar-api-whatsapp/</guid><description>Planeje a troca de API WhatsApp com inventário, QR ou código, rotas de eventos e corte controlado. Sessão e histórico são escopos distintos.</description><content:encoded><![CDATA[# Como migrar de API de WhatsApp: checklist para planejar a troca

Planeje a troca de API WhatsApp com inventário, QR ou código, rotas de eventos e corte controlado. Sessão e histórico são escopos distintos.

**Resumo:** Mapeie integrações e dados, prepare o destino e escolha entre Web, com QR ou código de pareamento, e Mobile, com registro pelo número. O session-migrator transfere uma sessão autenticada do WhatsApp Web para GoZAP em modo `migration`; histórico é um escopo separado.

## O que entra no plano de migração?

Uma troca de API envolve a sessão de WhatsApp, a configuração dos sistemas que enviam mensagens e recebem eventos e os dados mantidos pela aplicação. Separe esses elementos antes de alterar endpoints. Assim você sabe o que precisa ser migrado, o que precisa ser reconfigurado e o que permanece no sistema de origem.

A GoZAP conecta nos modos Web (QR ou código de pareamento) e Mobile (registro pelo número, sem celular nem emulador). Há também o session-migrator: a ferramenta atua sobre uma sessão autenticada do WhatsApp Web no navegador e a transfere para uma instância GoZAP em modo `migration`. Ela atende esse cenário de sessão; não é um conversor de credenciais ou configurações de qualquer API concorrente.

## Como preparar origem, destino e consumidores?

Liste cada endpoint, tipo de mensagem, rotina agendada, webhook e consumidor. Anote também os responsáveis pelas credenciais e os eventos que acionam fluxos de negócio.

Identifique contatos, filas e registros que já ficam na sua aplicação. Registre separadamente o histórico que depende da API ou da sessão. O pareamento conecta uma sessão; não é uma promessa de copiar mensagens e mídias históricas.

Crie a instância e configure os consumidores para os recursos necessários. As rotas GoZAP de envio incluem `/send/text` e `/send/media`; a API também tem operações de grupos, contatos e status.

Antes do corte, registre uma correspondência entre a função antiga e o recurso novo. Por exemplo: envio textual para `/send/text`, envio de mídia para `/send/media`, consulta de webhooks para `GET /webhook` e leitura de erros para `GET /webhook/errors`. Essa matriz evita trocar uma URL sem atualizar o contrato usado pela aplicação.

## Quais rotas entram na troca?

| Necessidade | Rota GoZAP | O que faz |
|---|---|---|
| Parear por QR | `POST /device/pair/qr` | Inicia o pareamento por QR no modo Web. |
| Parear por código | `POST /device/pair/code` | Solicita confirmação de pareamento por código no modo Web. |
| Enviar texto ou mídia | `POST /send/text`, `POST /send/media` | Envia texto ou mídia usando a instância GoZAP. |
| Administrar webhooks | `GET /webhook`, `POST /webhook` | Consulta e atualiza a configuração de webhooks da instância. |
| Consultar erros de webhook | `GET /webhook/errors` | Lista erros de entrega de webhook registrados para a instância. |
| Receber eventos em fluxo | `GET /sse` | Abre a conexão de eventos SSE da instância. |
| Administrar o proxy da instância | `GET`, `POST` ou `DELETE /instance/proxy` | Consulta, configura ou remove o proxy associado à instância. |
| Usar ferramentas MCP | `/mcp` | Expõe o transporte HTTP/SSE e RPC do serviço MCP, protegido por JWT Bearer. |

As rotas de envio e administração exigem autenticação conforme a API. As rotas e métodos acima permitem atualizar clientes e integrações sem depender de payload presumido. Para pareamento, o procedimento concreto é:

```text
POST /device/pair/qr
POST /device/pair/code
```

## Como parear e mover a sessão?

No modo Web, escolha `POST /device/pair/qr` para o fluxo com QR ou `POST /device/pair/code` para o fluxo com código. Complete a aprovação do dispositivo vinculado no WhatsApp e acompanhe o estado da instância.

Se não há sessão do navegador para migrar, o modo Mobile registra a conta diretamente pelo número, sem celular nem emulador. Veja o [guia do modo Mobile sem celular](/posts/modo-mobile-sem-celular/).

Quando a sessão autenticada estiver no WhatsApp Web do navegador, use o session-migrator para transferi-la para a instância GoZAP em modo `migration`. A ferramenta trabalha com essa sessão local; configuração e dados exclusivos de um servidor Evolution, WAHA ou WPPConnect exigem tratamento próprio.

Cadastre destinos na configuração `/webhook` ou consuma `/sse`, conforme o fluxo da aplicação. Direcione os consumidores para as rotas GoZAP correspondentes e mantenha suas credenciais sob o controle dos responsáveis pelo sistema.

O session-migrator transfere a sessão autenticada do navegador para a instância GoZAP. Planeje mensagens e mídias históricas como um fluxo de dados separado da migração de sessão e mantenha esses registros conforme a política da sua aplicação.

Uma migração fica mais clara quando sessão, rotas da aplicação e histórico são tratados como três itens separados.

## Como organizar a janela de corte?

Faça um envio de texto e um de mídia, valide o recebimento de eventos e percorra os fluxos de grupos ou contatos que sua aplicação usa. Confira o resultado no sistema consumidor; resposta HTTP e ACK de transporte não comprovam entrega ou leitura pelo destinatário.

Atualize endpoints e webhooks na janela acordada com as equipes usuárias. Acompanhe erros, eventos recebidos e operações pendentes. Registre o horário da alteração e quem executou cada etapa.

Compare os fluxos ativos com o inventário e retire credenciais antigas quando deixarem de ser necessárias. Documente os registros que ficaram na origem e o estado final dos consumidores.

O pareamento, as chamadas da API e a entrega ao destinatário são etapas diferentes. A troca de endpoint não deve ser usada como evidência de que uma mensagem chegou ao WhatsApp ou de que uma conversa histórica foi copiada.

## Quanto custa a assinatura GoZAP?

Preços GoZAP em 5 de outubro de 2026. A cobrança mensal é por plano e quantidade de instâncias, sem tarifa por mensagem nesse modelo.

| Faixa | Valor mensal |
|---|---:|
| 1 instância | R$ 27,00 |
| 2 a 10 instâncias | R$ 25,00 por instância |
| Starter, até 100 instâncias | R$ 200,00 |
| Enterprise, até 300 instâncias | R$ 449,99 |

Para cinco instâncias, o cálculo da faixa de 2 a 10 é R$ 125,00 por mês. O valor da assinatura não representa uma tarifa por mensagem.

## Quando não escolher a GoZAP

Se o sistema precisa operar exclusivamente pela Cloud API oficial, conecte-o diretamente à plataforma da Meta. A GoZAP oferece os modos Web e Mobile, e ambos ficam fora da API oficial da Meta. Se sua equipe exige executar o software na própria infraestrutura, uma API hospedada não atende ao requisito. Para projetos que exigem SLA contratual ou uma região de hospedagem especificada, condicione a escolha ao contrato que documenta esses termos.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

Leia também o guia de [migração de sessão WhatsApp](/posts/migrar-sessao-whatsapp/), o tutorial de [webhooks no n8n](/posts/gozap-n8n-disparo/) e a página sobre [Chatwoot com GoZAP](/posts/chatwoot-nativo-gozap/).


Versão Markdown: https://blog.gozap.dev/posts/checklist-migrar-api-whatsapp.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Como escolher API WhatsApp não oficial</title><link>https://blog.gozap.dev/posts/como-escolher-api-whatsapp-nao-oficial/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/como-escolher-api-whatsapp-nao-oficial/</guid><description>Teste operação, pareamento, mensagens, eventos, integrações, limites e custo total em dez critérios verificáveis antes de adotar uma API não oficial.</description><content:encoded><![CDATA[# Como escolher uma API de WhatsApp não oficial: 10 critérios para testar

Teste operação, pareamento, mensagens, eventos, integrações, limites e custo total em dez critérios verificáveis antes de adotar uma API não oficial.

**Resumo:** Antes de contratar, execute os dez testes com um fluxo representativo e guarde resultados, custos e responsabilidades. A GoZAP oferece os modos nativos Web (QR ou código de pareamento) e Mobile (registro pelo número), além de mensagens, webhooks, SSE, grupos, proxy por instância, Chatwoot e MCP. Veja o [modo Mobile](/posts/modo-mobile-sem-celular/).

## Como usar este checklist?

Separe uma conta e dados de teste. Para cada etapa, registre o que enviou, qual resultado esperava, o que recebeu e quanto trabalho foi necessário. Uma chamada respondida pela API demonstra que a requisição foi processada naquele momento; não prova, sozinha, leitura ou entrega da mensagem no WhatsApp.

Trate cada requisito como obrigatório ou opcional. Assim, uma demonstração de produto não desvia a avaliação: você testa somente os fluxos que o seu sistema precisa executar e identifica antes da contratação quem responde por cada etapa.

Use o mesmo roteiro com todos os fornecedores. Isso transforma comparações de apresentação em resultados que sua equipe pode repetir.

## Quais são os dez critérios verificáveis?

### 1. Quem opera o servidor?

Registre quem provisiona a máquina, atualiza o software, acompanha falhas e mantém sessões. Em self-host, essas tarefas ficam com quem opera seu servidor. A GoZAP é uma API hospedada com control plane de autosserviço.

Entre projetos self-host, as diferenças também incluem licença e tecnologia. A Evolution API documenta instalação via Docker e licença Apache 2.0 com condições adicionais próprias. O WAHA é uma API REST para execução no servidor do operador, sob Apache 2.0. O WPPConnect Server também é instalado pelo operador e usa Apache 2.0. Baileys é uma biblioteca TypeScript/WebSocket com licença MIT, não um serviço hospedado.

### 2. Como funciona o pareamento?

Em uma instância de teste, cronometre as etapas que sua equipe realmente executa e registre como uma sessão é iniciada. No modo Web da GoZAP, `POST /device/pair/qr` inicia o pareamento por QR e `POST /device/pair/code` solicita um código de vinculação. O modo Mobile registra a conta pelo número. O pareamento Web vincula um dispositivo à conta; não o confunda com ativação da Cloud API.

### 3. Quais operações de mensagem estão disponíveis?

Faça uma lista de operações obrigatórias, como enviar texto, imagem, mídia, contato ou localização. Rode pelo menos um caso representativo de cada uma e guarde a resposta. A API GoZAP tem rotas autenticadas para texto, mídia, imagens, stickers, contatos, localização, enquetes e status. Operações de grupos cobrem criação, listagem, participantes, convite e configuração.

### 4. Como os eventos chegam ao sistema?

Configure seu receptor e provoque um evento de teste. A GoZAP usa `GET /webhook` para consultar a configuração e `POST /webhook` para substituí-la; `GET /webhook/errors` lista erros registrados. O endpoint `/sse` transmite eventos por Server-Sent Events. Observe payload, código HTTP e repetição quando o destino responder 429.

### 5. Quais integrações complementam a API?

Teste o fluxo completo na ferramenta que sua operação já usa. A GoZAP tem cliente para n8n, configuração e estado de sincronização com Chatwoot, e servidor MCP com transporte HTTP/SSE e RPC, protegido por JWT Bearer em `/mcp`. Teste autenticação e permissões com credenciais próprias antes de ligar dados de produção.

### 6. A configuração de rede atende ao ambiente?

Se sua arquitetura precisa de proxy por instância, faça uma leitura, altere a configuração de teste e remova-a ao final. A rota autenticada `/instance/proxy` permite consultar, configurar e remover o proxy associado à instância. Registre a configuração de partida e o resultado de cada etapa.

### 7. Quais limites técnicos e comerciais se aplicam?

Faça um teste controlado, aumentando o volume aos poucos, com aprovação da sua equipe. As rotas HTTP de envio da GoZAP não aplicam limite de taxa HTTP; a sessão e o WhatsApp continuam sujeitos a limites. Isso não significa envio ilimitado nem define uma taxa comercial ou segura. Mantenha um teto operacional próprio e interrompa o teste diante de falhas ou restrições.

### 8. Como a cobrança se relaciona com as instâncias?

Em 5 de outubro de 2026, os valores vigentes da GoZAP são:

| Quantidade/formato | Cobrança mensal |
|---|---:|
| 1 instância | R$ 27,00 |
| 2 a 10 instâncias | R$ 25,00 por instância |
| Pacote Starter, até 100 instâncias | R$ 200,00 |
| Pacote Enterprise, até 300 instâncias | R$ 449,99 |

Calcule usando a faixa que atende a quantidade prevista. Por exemplo, cinco instâncias no formato Básico custam 5 × R$ 25,00 = R$ 125,00 ao mês; para dez, o pacote Starter custa R$ 200,00, abaixo dos R$ 250,00 do Básico. O [artigo sobre custo de APIs](/posts/quanto-custa-api-whatsapp/) mostra exemplos aritméticos e separa mensalidade de outros custos.

### 9. Quais compromissos operacionais sua empresa precisa?

Escreva os requisitos de disponibilidade, resposta a incidentes, localização e retenção de dados, suporte e recuperação. Peça que cada compromisso necessário apareça nos documentos da contratação. Não transforme recurso de painel, health check ou tentativa automática em compromisso contratual.

### 10. Como você avaliará uma restrição?

Defina quem acompanha o status da conta, quem pode pausar os fluxos e como a equipe se comunica com clientes quando o canal não está disponível. Registre uma alternativa de atendimento. Nenhuma rotina interna controla decisões do WhatsApp.

```text
Pareamento: POST /device/pair/qr ou /device/pair/code
Eventos: /webhook e /sse
Rede: /instance/proxy
Integração: /mcp com JWT Bearer
Saída: resultado, data, versão e responsável
```

## Como comparar as evidências?

Marque cada critério como aprovado no teste, pendente de requisito contratual ou incompatível. Guarde logs sem dados pessoais desnecessários, payloads de exemplo e a versão da API. Separe três resultados: requisição aceita, evento recebido pela sua aplicação e mensagem entregue ao destinatário. Eles são observações diferentes.

O [comparativo entre API oficial e não oficial](/posts/api-whatsapp-oficial-vs-nao-oficial/) explica diferenças de operação e cobrança. O guia de [webhooks e eventos SSE](/posts/webhooks-sse-gozap/) mostra como ligar os eventos a um sistema receptor; o artigo de [integração com n8n](/posts/gozap-n8n-disparo/) demonstra outro fluxo de automação.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige enviar exclusivamente pela Cloud API oficial da Meta ou se sua equipe precisa operar o software na própria infraestrutura. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta. A rota de coexistência por QR é específica do modo Web e não é uma integração completa de mensagens da Graph/Cloud API.

Se um SLA contratual, retenção específica ou região de hospedagem for obrigatório, faça desses pontos requisitos escritos da contratação. Não substitua um compromisso formal por disponibilidade observada durante um teste.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição. A GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/como-escolher-api-whatsapp-nao-oficial.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Diferenciais da API GoZAP para WhatsApp</title><link>https://blog.gozap.dev/posts/diferenciais-gozap-api-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/diferenciais-gozap-api-whatsapp/</guid><description>Compare recursos documentados em grupos, comunidades, canais, status, registro Mobile e proxy por instância nas APIs GoZAP, com revisão em 5 de outubro de 2026.</description><content:encoded><![CDATA[# GoZAP comparativo: proxy, Mobile e recursos da API WhatsApp

Compare recursos documentados em grupos, comunidades, canais, status, registro Mobile e proxy por instância nas APIs GoZAP, com revisão em 5 de outubro de 2026.

**Resumo:** A GoZAP oferece conexão nativa Web e Mobile, inclui proxy móvel individual por instância e documenta rotas para grupos, comunidades, canais e status. A tabela compara documentação oficial na data de 5 de outubro de 2026.

## O que está incluído no proxy por instância?

Cada instância tem um proxy móvel exclusivo e individual, de operadora TIM ou Claro, incluído no plano sem acréscimo. Cada instância sai por um IP móvel próprio, separado das demais.

No Starter, R$ 200,00 por mês cobrem até 100 instâncias e seus 100 proxies. Dividindo o valor do pacote pelo limite, são R$ 2,00 por instância com proxy. Os demais preços confirmados em 5 de outubro de 2026 são R$ 27,00 por mês para uma instância, R$ 25,00 por instância entre duas e dez, e R$ 449,99 mensais para até 300 instâncias no Enterprise.

A API oferece quatro modos de proxy por instância: `custom`, `global`, `managed` e `dynamic`. A rota `/instance/proxy` permite ler, configurar ou remover o proxy associado à instância. Os modos descrevem a configuração técnica; a inclusão do proxy móvel nos planos é uma condição comercial confirmada pelo responsável pelo produto.

## Como funciona o modo Mobile?

Web pareia por QR ou código de pareamento; Mobile registra a conta pelo número. No modo Mobile, a GoZAP conecta diretamente ao socket mobile do WhatsApp e fala com o backend sem executar aplicativo APK ou IPA. O serviço é leve e gerenciado pelo backend em Go. Veja o [guia do modo Mobile](/posts/modo-mobile-sem-celular/).

As rotas cobrem solicitação e verificação de código, opções e tempos de verificação, OTP, autenticação de dois fatores, apelação e consulta do estado da conta. Entre elas estão `POST /instance/mobile/request-code`, `POST /instance/mobile/verify-code`, `GET|POST /instance/mobile/verification-options`, `GET /instance/mobile/verification-waits`, `GET /instance/mobile/registration-otp`, `POST /instance/mobile/two-factor` e as rotas `/email`, `/email/verify` e `/wipe`, além de `POST /instance/mobile/appeal` e `POST /instance/mobile/ban-status`.

QR e código de pareamento, pelas rotas `POST /device/pair/qr` e `POST /device/pair/code`, vinculam a conta como dispositivo do WhatsApp Web. Mobile registra a conta pelo número. O [comparativo entre API oficial e não oficial](/posts/api-whatsapp-oficial-vs-nao-oficial/) detalha os modelos de conexão.

## Que recursos existem para grupos, comunidades, canais e status?

Grupos incluem operações para criar, listar, consultar participantes, administrar convites e ajustar configurações. Comunidades têm rotas para criar e editar grupos e consultar subgrupos: `POST /community/create`, `POST /community/editgroups` e `POST /community/subgroups`.

Há mais de 30 rotas de canais sob `/newsletter/*`. Elas cobrem criação, listagem e busca; inscrição, seguir e deixar de seguir; silenciar; enviar, editar e apagar mensagens; reações; administração e convites; transferência de propriedade; configurações e status. Para status, existem `POST /send/status`, `POST` e `DELETE /send/group-status` e `POST /send/channel-status`.

Uma rota confirma que existe uma operação na API, mas a integração ainda deve ser avaliada conforme autenticação, formato de dados e fluxo de uso. Para ver mais operações de grupo e canal, acesse o [guia de grupos, comunidades, canais e status](/posts/grupos-comunidades-canais-status-api-whatsapp/).

## Como isso se compara ao que os outros documentam?

Consulta: 5 de outubro de 2026. “Não documentado” significa que a documentação oficial não mostra a capacidade naquela data, não que ela não exista.

✓ documentado · – não documentado na data · ? página não verificada · ~ documentado em parte

| Capacidade | GoZAP | Evolution | WAHA | WPPConnect | Baileys | uAzapi | Z-API | W-API |
|---|---|---|---|---|---|---|---|---|
| Grupos | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> |
| Comunidades | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não documentado">–</span> |
| Canais | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Parcialmente documentado">~</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Parcialmente documentado">~</span> | <span role="img" aria-label="Parcialmente documentado">~</span> | <span role="img" aria-label="Não documentado">–</span> |
| Status comum | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não documentado">–</span> |
| Status em grupo/canal | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não documentado">–</span> |
| Registro pelo número | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não verificado">?</span> | <span role="img" aria-label="Não documentado">–</span> |
| Proxy por instância | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Documentado">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> |
| Proxy móvel incluso | <span role="img" aria-label="Sim">✓</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> | <span role="img" aria-label="Não documentado">–</span> |

1. WPPConnect em canais: envio documentado; criar e seguir não documentados.
2. uAzapi em canais: seguir e enviar documentados; criar não verificado.
3. Z-API em canais: listagem documentada; demais ações não verificadas.

## Quando não escolher a GoZAP

Não escolha a GoZAP se a política da sua empresa exigir uso exclusivo da Cloud API oficial da Meta, ou se sua equipe precisar instalar e operar o software em infraestrutura própria. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição. A GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/diferenciais-gozap-api-whatsapp.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Comparativos</category></item>
<item><title>Enviar mensagem por API do WhatsApp: exemplos</title><link>https://blog.gozap.dev/posts/enviar-mensagem-whatsapp-api-exemplos/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/enviar-mensagem-whatsapp-api-exemplos/</guid><description>Aprenda a enviar texto, imagem e documento pela API GoZAP, escolher number ou chatid, usar a fila assíncrona e interpretar respostas HTTP com passos práticos.</description><content:encoded><![CDATA[# Como enviar mensagem de WhatsApp por API: exemplos em curl, Node, Python e PHP

Aprenda a enviar texto, imagem e documento pela API GoZAP, escolher number ou chatid, usar a fila assíncrona e interpretar respostas HTTP com passos práticos.

**Resumo:** Envie texto por `POST /send/text` e imagem ou documento por `POST /send/media`. Os exemplos usam o mesmo corpo JSON nos quatro clientes, mostram como informar o destino e explicam a fila `async` e as respostas HTTP documentadas.

## Como enviar texto para um número?

Para texto, envie `number` ou `chatid` junto com `text`. Os dois destinos são strings; ao informar ambos, `chatid` prevalece. O telefone pode conter pontuação, que é removida antes da validação, e precisa resultar em 8 a 15 dígitos. Inclua os prefixos internacionais e de área, sem presumir que a API complete partes ausentes.

A instância é localizada pelo token permanente. A autenticação pode seguir no header `token` ou como `Authorization: Bearer SEU_TOKEN`. Os snippets abaixo usam a mesma URL fictícia e o mesmo corpo, para facilitar a comparação entre bibliotecas.

| Rota | O que faz |
|---|---|
| `POST /send/text` | Envia texto a um número ou JID de conversa. |
| `POST /send/media` | Envia imagem, vídeo, áudio, sticker ou documento conforme `type`. |
| `POST /send/image` | Envia imagem com o mesmo corpo de mídia, fixando o tipo como imagem. |

Corpo comum aos quatro exemplos:

```json
{"number":"5511999999999","text":"Sua mensagem de teste"}
```

### curl

```bash
curl -X POST 'https://SEU-DOMINIO/send/text' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"number":"5511999999999","text":"Sua mensagem de teste"}'
```

### Node.js com fetch

```js
const response = await fetch('https://SEU-DOMINIO/send/text', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
token: 'SEU_TOKEN',
},
body: JSON.stringify({
number: '5511999999999',
text: 'Sua mensagem de teste',
}),
});

console.log(response.status, await response.json());
```

### Python com requests

```python
import requests

response = requests.post(
'https://SEU-DOMINIO/send/text',
headers={'token': 'SEU_TOKEN'},
json={'number': '5511999999999', 'text': 'Sua mensagem de teste'},
)
print(response.status_code, response.json())
```

### PHP com cURL

```php
<?php
$ch = curl_init('https://SEU-DOMINIO/send/text');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'token: SEU_TOKEN'],
CURLOPT_POSTFIELDS => json_encode([
'number' => '5511999999999',
'text' => 'Sua mensagem de teste',
]),
CURLOPT_RETURNTRANSFER => true,
]);
$body = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE) . ' ' . $body;
curl_close($ch);
```

Troque domínio, token e destino pelos valores da sua instância. O exemplo é para integração e não representa uma mensagem entregue ou lida por uma pessoa.

Na escolha do destino, `number` é prático quando seu sistema guarda o telefone do contato. Use `chatid` quando já possui o identificador de conversa aceito pelo serviço. A API permite os dois campos, mas a precedência do `chatid` torna mais claro enviar apenas aquele que corresponde à conversa desejada. Revise também a normalização de telefone antes de montar lotes: espaços, parênteses e sinais não substituem o código internacional.

Antes de colocar uma rotina em produção, registre qual instância fez a chamada, o horário, o status HTTP e o identificador retornado. Evite registrar o token nos logs. Isso ajuda a distinguir erro de autenticação, indisponibilidade da sessão e falha de validação do corpo sem armazenar credenciais junto com o histórico da aplicação.

## Como enviar imagem ou documento?

Mídia usa `POST /send/media`. O corpo requer um destino e `url` ou `base64`; também pode indicar `type`, `mimetype`, `caption` e, para arquivo, `fileName`. Para um documento hospedado em uma URL:

```bash
curl -X POST 'https://SEU-DOMINIO/send/media' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN' \
--data '{"number":"5511999999999","type":"document","url":"https://exemplo.invalid/arquivo.pdf","mimetype":"application/pdf","fileName":"guia.pdf","caption":"Guia solicitado"}'
```

O domínio `exemplo.invalid` é ilustrativo e precisa ser substituído por uma URL que a API consiga acessar. Para imagem, use o tipo `image` e uma URL ou conteúdo Base64. A rota `/send/image` também recebe os campos de mídia e força o tipo imagem. Não há uma rota dedicada `/send/document`: o tipo documento pertence a `/send/media`.

Os tipos aceitos incluem imagem, vídeo, áudio, áudio enviado como PTT/voz, documento e sticker. Para arquivos, forneça um tipo reconhecido e dados de mídia utilizáveis, além do destino. `caption` pode acompanhar a mídia; `fileName` serve para informar o nome do arquivo. As flags opcionais de mídia são booleanas, enquanto os demais campos listados no contrato são strings. A documentação não define um limite máximo de bytes para URL ou Base64 nesse fluxo, então não trate um tamanho escolhido pela aplicação como limite oficial da API.

## Quando usar a fila assíncrona?

O fluxo padrão processa o envio de forma síncrona. Para os envios compatíveis com fila, `async: true` no JSON pede processamento assíncrono. O exemplo mantém destino e texto do corpo anterior:

```bash
curl -X POST 'https://SEU-DOMINIO/send/text' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"number":"5511999999999","text":"Sua mensagem de teste","async":true}'
```

Uma resposta aceita na fila usa HTTP 202 e inclui campos como `success`, `async`, `queued`, `job` e `endpoint`. A consulta de estado usa `GET /message/async`; para limpar a fila, há `DELETE /message/async`. As duas rotas também exigem autenticação.

| Rota | O que faz |
|---|---|
| `GET /message/async` | Consulta o estado da fila assíncrona. |
| `DELETE /message/async` | Limpa a fila assíncrona da instância. |

O processamento na fila informa que a API aceitou o trabalho, sem confirmar entrega ao destinatário. A API não aplica rate limit HTTP às rotas `/send/*`; a sessão e as regras do WhatsApp ainda têm limites.

Considere guardar o campo `job` da resposta aceita e consultar o estado da fila de acordo com a estratégia da sua aplicação. O endpoint de leitura informa dados da fila, sem confirmar que uma mensagem será entregue. Limpar a fila é uma ação diferente de consultar seu conteúdo; aplique `DELETE` apenas quando a intenção operacional for remover os trabalhos pendentes daquela instância.

## O que significam as respostas HTTP?

No envio síncrono, HTTP 200 representa a resposta de sucesso da operação da API. HTTP 202 indica que o trabalho foi aceito para a fila. HTTP 429 é usado quando a fila está cheia. HTTP 409 indica que o serviço ou a sessão está indisponível ou reiniciando. Trate o corpo e o status como resultado da requisição, sem convertê-los em prova de leitura ou entrega.

Na prática, diferencie os casos antes de repetir a chamada. Uma resposta 429 aponta fila cheia; aumentar tentativas sem verificar o estado pode manter o cliente pressionando uma fila sem espaço. Já 409 indica indisponibilidade ou reinício, por isso a aplicação pode tratar a condição separadamente e tentar de novo após observar a disponibilidade. O HTTP 202 também tem tratamento próprio: guarde os dados do trabalho e consulte o endpoint da fila, em vez de considerar a operação síncrona concluída.

Para acompanhar etapas da integração, registre o status HTTP e o identificador de trabalho recebido na resposta da fila. Se você também precisa consumir eventos de execução, veja o guia de [webhooks e SSE da GoZAP](/posts/webhooks-sse-gozap/). Para outros recursos de envio, leia [grupos, comunidades, canais e status](/posts/grupos-comunidades-canais-status-api-whatsapp/) e [tipos de mensagem WhatsApp API](/posts/tipos-de-mensagem-whatsapp-api/).

## Quando não escolher a GoZAP

Não escolha a GoZAP se a sua política exige exclusivamente a API oficial da Meta, ou se o sistema precisa operar sem um serviço hospedado. Confirme também se a sua aplicação aceita trabalhar com o ciclo e os limites de uma sessão WhatsApp. A GoZAP conecta por Web e Mobile, dois modos nativos fora da API oficial da Meta. Veja o [modo Mobile](/posts/modo-mobile-sem-celular/).

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/enviar-mensagem-whatsapp-api-exemplos.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Evolution API vs GoZAP: operação e diferenças</title><link>https://blog.gozap.dev/posts/evolution-api-vs-gozap/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/evolution-api-vs-gozap/</guid><description>Compare Evolution API e GoZAP por operação, atualização, licença, conexão e recursos. Veja os modelos documentados e os valores atuais da assinatura GoZAP.</description><content:encoded><![CDATA[# Evolution API vs GoZAP: compare operação, conexão e recursos

Compare Evolution API e GoZAP por operação, atualização, licença, conexão e recursos. Veja os modelos documentados e os valores atuais da assinatura GoZAP.

**Resumo:** A Evolution API documenta instalação própria com Docker e integração por WhatsApp Web ou Cloud API. A GoZAP é uma API hospedada, operada pelo WebPanel, com modos nativos Web e Mobile e cobrança mensal por plano e quantidade de instâncias.

## O que muda entre Evolution API e GoZAP?

A diferença principal está em quem opera o serviço. Com a Evolution API instalada em infraestrutura própria, sua equipe administra o ambiente que executa a aplicação. Na GoZAP, o cliente configura e administra instâncias por um serviço hospedado com painel de autosserviço. São modelos diferentes de operação, licença e conexão.

O [README oficial da Evolution API](https://github.com/evolution-foundation/evolution-api/blob/main/README.md) apresenta inicialização por Docker no servidor do operador. A GoZAP oferece uma API hospedada, com provisionamento e administração pelo WebPanel e GitOps. O plano comercial chama de POD o agrupamento de instâncias e recursos.

## Como os critérios se comparam?

| Critério | Evolution API | GoZAP |
|---|---|---|
| Operação | O operador instala e executa o serviço no próprio servidor. O README oficial mostra o comando Docker abaixo. | Serviço hospedado com painel de autosserviço; o WebPanel administra instâncias e provisionamento. |
| Atualização | Como a implantação fica no servidor do operador, a equipe controla a versão que executa e sua implantação. | Instâncias são provisionadas e administradas pelo WebPanel e pelo fluxo GitOps do produto. |
| Licença e distribuição | Apache License 2.0 com condições adicionais específicas da Evolution, descritas na [licença oficial](https://github.com/evolution-foundation/evolution-api/blob/main/LICENSE). | Acesso ao serviço hospedado pelo WebPanel e pela API. |
| Conexão | O [repositório oficial](https://github.com/evolution-foundation/evolution-api) lista integração Baileys baseada em WhatsApp Web e suporte à Cloud API. | Web e Mobile: no Web, há pareamento por QR ou código e coexistência vincula um companion a uma conta WhatsApp Business móvel; Mobile registra a conta pelo número diretamente no socket mobile, sem celular nem emulador. |
| Recursos | A documentação oficial cita integrações com Chatwoot e Typebot, além dos dois caminhos de conexão acima. | Há rotas de envio para texto, mídia, imagens, stickers, contatos, localização, enquetes e status; operações de grupos; webhooks, SSE, proxy por instância, Chatwoot, MCP e chamadas. |
| Proxy | A documentação oficial da Evolution mostra proxy individual por instância. | Cada instância tem proxy móvel exclusivo e individual de TIM ou Claro, incluído sem acréscimo; ele isola o IP de cada instância. |
| Modo Mobile | A documentação oficial da Evolution não mostra registro por número sem WhatsApp Web nesta consulta de 5 de outubro de 2026. | Registra a conta pelo número diretamente no socket mobile, sem celular, emulador ou app APK/IPA. QR e código são pareamento do modo Web. Veja o [guia do modo Mobile sem celular](/posts/modo-mobile-sem-celular/). |

```text
docker run -p 8080:8080 --env-file .env evoapicloud/evolution-api:latest
```

Na instalação própria, o operador da Evolution hospeda a aplicação e executa as implantações. Com a GoZAP, o cliente administra as instâncias e os recursos do serviço pelo WebPanel.

No Starter GoZAP, o pacote de até 100 instâncias custa R$ 200,00 por mês e cobre os 100 proxies, uma divisão de R$ 2,00 por instância com proxy. O modo Mobile tem rotas próprias para solicitar e verificar código, configurar opções de verificação, autenticação de dois fatores e outras etapas do registro. As rotas reais começam por `/instance/mobile/*`.

## Que alternativas self-hosted têm licenças e engines documentados?

WAHA e WPPConnect também oferecem projetos de execução própria, enquanto Baileys é uma biblioteca para integrar uma aplicação à WhatsApp Web.

| Projeto | Operação | Licença | Conexão e recursos documentados |
|---|---|---|---|
| WAHA | Instalação no servidor do operador, conforme o [repositório oficial](https://github.com/devlikeapro/waha). | Apache 2.0, conforme a [licença do projeto](https://github.com/devlikeapro/waha/blob/core/LICENSE). | Engines WEBJS, NOWEB, GOWS e WPP, descritas no [README oficial](https://github.com/devlikeapro/waha). |
| WPPConnect Server | API pronta para baixar, instalar e iniciar, conforme a [documentação oficial](https://wppconnect.io/docs/projects/wppserver/introduction/). | Apache 2.0, conforme a mesma documentação. | Implementação Node.js/REST; a introdução lista múltiplas sessões, texto e mídia, contatos, recebimento de mensagens, criação de grupos e webhooks. |
| Baileys | Biblioteca TypeScript/WebSocket usada para integrar uma aplicação à WhatsApp Web; não é serviço de API hospedada. | MIT, conforme a [licença oficial](https://github.com/WhiskeySockets/Baileys/blob/master/LICENSE). | Biblioteca WebSocket para comunicação com WhatsApp Web, segundo o [repositório oficial](https://github.com/WhiskeySockets/Baileys). |

Uma biblioteca, um servidor self-host e um serviço hospedado não entregam a mesma divisão de trabalho. Na instalação própria, sua equipe mantém o ambiente onde o projeto roda. Em uma hospedagem, o fornecedor entrega o serviço e o cliente opera pela interface ou API contratada. Licenças e integrações devem ser lidas no texto publicado pelo projeto correspondente.

Escolha o modelo que combina com a equipe que vai operar a conexão, os dados e as atualizações no dia a dia.

## Como decidir qual responsabilidade cabe à equipe?

No self-host, indique quem provisiona o servidor, aplica as versões e acompanha a aplicação em execução. No serviço hospedado, indique quem administra as instâncias pelo WebPanel e quem mantém as integrações que consomem a API. O modelo de hospedagem muda onde esse trabalho começa, mas a integração continua precisando de um responsável na equipe.

Para Evolution, a licença Apache 2.0 inclui condições adicionais específicas do projeto. WAHA e WPPConnect publicam Apache 2.0; Baileys publica MIT. Se sua empresa pretende modificar ou distribuir algum desses projetos, trate o arquivo de licença do próprio projeto como parte da análise técnica e jurídica.

Se o processo precisa da Cloud API, a Evolution declara esse suporte e a aplicação também pode integrar diretamente com a Meta. Se o processo usa WhatsApp Web, compare engines e operações necessárias. Na GoZAP, Web conecta por QR ou código, enquanto Mobile registra pelo número; há rotas para mensagens, grupos e eventos.

Essa decisão evita comparar apenas nomes de funcionalidades. Liste quem executa a API, quem trata versões, qual licença vale para o software escolhido e qual conexão atende ao caso de uso. Depois, compare as responsabilidades com a composição da equipe e os requisitos da integração.

## Quanto custa a assinatura da GoZAP?

Preços da GoZAP em 5 de outubro de 2026. A cobrança é mensal, por plano e quantidade de instâncias, sem tarifa por mensagem nesse modelo.

| Faixa | Assinatura mensal |
|---|---:|
| 1 instância | R$ 27,00 |
| 2 a 10 instâncias | R$ 25,00 por instância |
| Plano Starter, até 100 instâncias | R$ 200,00 |
| Plano Enterprise, até 300 instâncias | R$ 449,99 |

No grupo de 2 a 10, cinco instâncias correspondem a R$ 125,00 por mês. O Starter reúne até 100 instâncias no valor mensal indicado. O custo da infraestrutura Evolution própria é separado da assinatura GoZAP.

## Quando não escolher a GoZAP

Se sua equipe precisa instalar e administrar o servidor da API dentro da própria infraestrutura, o modelo hospedado da GoZAP não corresponde a esse requisito. Avalie um projeto self-hosted, como Evolution API, WAHA ou WPPConnect, e aplique as condições da licença correspondente.

Se a integração precisa enviar pela Cloud API oficial da Meta, use a Cloud API diretamente. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta. A Evolution API declara suporte a esse caminho; na GoZAP, a coexistência do modo Web vincula um companion, mas não faz envio pela Cloud API. Se um SLA contratual for requisito de compra, exija os termos por escrito antes de decidir.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

Para planejar a troca de conexão, veja o [checklist de migração de API de WhatsApp](/posts/checklist-migrar-api-whatsapp/), o guia de [migração de sessão WhatsApp](/posts/migrar-sessao-whatsapp/) e o artigo sobre [webhooks da GoZAP no n8n](/posts/gozap-n8n-disparo/).


Versão Markdown: https://blog.gozap.dev/posts/evolution-api-vs-gozap.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Comparativos</category></item>
<item><title>Grupos, comunidades, canais e status na API</title><link>https://blog.gozap.dev/posts/grupos-comunidades-canais-status-api-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/grupos-comunidades-canais-status-api-whatsapp/</guid><description>Guia das rotas GoZAP para grupos, comunidades, canais e status em contatos, grupos e canais, com tabelas e exemplos de requisições verificados.</description><content:encoded><![CDATA[# Grupos, comunidades, canais e status pela API do WhatsApp

Guia das rotas GoZAP para grupos, comunidades, canais e status em contatos, grupos e canais, com tabelas e exemplos de requisições verificados.

**Resumo:** A API GoZAP tem rotas para administrar grupos e comunidades, criar e operar canais, publicar status para contatos e direcionar status a grupos ou canais. Este guia organiza os caminhos por tarefa e mostra exemplos curtos com campos aceitos pelos handlers.

## Que operações existem para grupos?

O grupo tem rotas para criar e listar, consultar dados, gerenciar participantes, obter e redefinir convites e alterar configurações como nome, descrição, imagem, modo de anúncio, aprovação de entrada e bloqueio de edição. Para a lista geral, a chamada é `GET /group/list`; as outras operações são separadas por ação.

| Rota | O que faz |
|---|---|
| `POST /group/create` | Cria um grupo com nome e, quando necessário, participantes. |
| `GET /group/list` | Lista os grupos da instância. |
| `POST /group/info` | Consulta dados de um grupo. |
| `POST /group/updateParticipants` | Adiciona, remove, promove ou rebaixa participantes. |
| `POST /group/inviteInfo` | Consulta informações do convite do grupo. |
| `POST /group/resetInviteCode` | Redefine o código de convite. |
| `POST /group/updateName`, `/group/updateDescription` | Atualiza nome ou descrição. |
| `POST /group/updateAnnounce`, `/group/updateJoinApproval` | Ajusta anúncio e aprovação para entrada. |
| `POST /group/updateLocked`, `/group/updateMemberAddMode` | Altera bloqueio e quem pode adicionar membros. |

Exemplo de criação com os campos do handler:

```http
POST /group/create
Content-Type: application/json

{"name":"Suporte","participants":["5511999999999"]}
```

## Como as rotas de comunidade se organizam?

Comunidades têm um caminho próprio de criação e operações para relacionar grupos. `POST /community/editgroups` recebe a comunidade, o grupo filho e uma ação de vínculo ou desvínculo. `POST /community/subgroups` consulta os grupos associados à comunidade.

| Rota | O que faz |
|---|---|
| `POST /community/create` | Cria uma comunidade. Usa o handler de criação de grupo com `isCommunity: true`. |
| `POST /community/editgroups` | Vincula ou desvincula um grupo da comunidade. |
| `POST /community/subgroups` | Lista os subgrupos de uma comunidade. |

```http
POST /community/create
Content-Type: application/json

{"name":"Clientes","participants":[],"isCommunity":true}
```

O corpo demonstra os campos aceitos pelo handler compartilhado de criação. Para editar relações, use `parent` e `child` com os identificadores da comunidade e do grupo, além de `action` igual a `link` ou `unlink`.

## O que posso fazer com canais?

As rotas de canais ficam sob `/newsletter/*`. O conjunto passa de trinta caminhos para criação, listagem, consulta e busca, assinatura e acompanhamento, mensagens, reações, administração e preferências. Para publicar uma mensagem, a rota é `POST /newsletter/messages`; há rotas distintas para edição, remoção e reação.

| Rota | O que faz |
|---|---|
| `POST /newsletter/create` | Cria um canal com nome e descrição. |
| `GET /newsletter/list`, `POST /newsletter/search` | Lista canais da instância ou busca canais. |
| `POST /newsletter/subscribe`, `/newsletter/follow`, `/newsletter/unfollow` | Acompanha ou deixa de acompanhar um canal. |
| `POST /newsletter/mute`, `/newsletter/unmute` | Silencia ou reativa notificações do canal. |
| `POST /newsletter/messages` | Publica uma mensagem no canal. |
| `POST /newsletter/messages/edit`, `/newsletter/messages/delete` | Edita ou remove uma mensagem publicada. |
| `POST /newsletter/reaction` | Envia uma reação. |
| `POST /newsletter/admin/invite`, `/newsletter/admin/accept`, `/newsletter/admin/remove` | Convida, aceita ou remove administradores. |
| `POST /newsletter/owner/transfer` | Transfere a propriedade do canal. |
| `POST /newsletter/settings`, `/newsletter/statuses` | Atualiza configurações ou consulta status do canal. |

Exemplo de criação, com `name` obrigatório e `description` opcional:

```http
POST /newsletter/create
Content-Type: application/json

{"name":"Novidades","description":"Atualizações do serviço"}
```

## Como escolher a rota de status?

Há três destinos de publicação tratados por rotas diferentes. O status comum é voltado à lista de contatos da conta e aceita texto ou conteúdo de mídia. O status de grupo é destinado a um JID de grupo; o status de canal é enviado ao identificador do canal. Para remover um status publicado em grupo, há uma operação DELETE própria.

| Rota | O que faz |
|---|---|
| `POST /send/status` | Publica status para contatos. |
| `POST /send/group-status` | Publica status com destino de grupo. |
| `DELETE /send/group-status` | Revoga status de grupo pelo destino e ID da mensagem. |
| `POST /send/channel-status` | Publica status com destino de canal. |

Exemplo de status para contatos:

```http
POST /send/status
Content-Type: application/json

{"type":"text","text":"Aviso da semana"}
```

Para grupo e canal, o handler recebe `chatid` ou `number` como destino, além dos campos de conteúdo. Os exemplos mostram texto simples:

```http
POST /send/group-status
Content-Type: application/json

{"chatid":"JID_DO_GRUPO","type":"text","text":"Aviso do grupo"}
```

```http
POST /send/channel-status
Content-Type: application/json

{"chatid":"JID_DO_CANAL","type":"text","text":"Atualização do canal"}
```

O corpo do DELETE aceita destino e `messageid`; quando o status foi publicado para a comunidade vinculada, informe também o campo booleano correspondente. A resposta da API descreve a operação processada, sem equivaler a confirmação de leitura por cada destinatário.

Para uma comparação documental com outras APIs, veja o post [Diferenciais da API GoZAP](/posts/diferenciais-gozap-api-whatsapp/). Os formatos acima foram conferidos nos handlers e modelos da API; se uma operação não tiver corpo descrito no trecho de contrato, siga a referência correspondente antes de adaptar um cliente.

## Como planejar a integração?

Separe as tarefas por destino: operações de administração de grupo, relações de comunidade, gestão do canal e publicação de status. Isso mantém claro qual identificador deve seguir em cada requisição e ajuda a separar erros de estrutura do recurso escolhido. Na autenticação, use as credenciais da instância conforme a referência da API.

As rotas não definem, por si, um compromisso de taxa comercial, disponibilidade ou entrega a um destinatário. Projete o cliente para interpretar as respostas, registrar erros e acompanhar eventos relevantes da sua aplicação. A existência de uma rota comprova que a operação está disponível no código, mas não substitui requisitos de operação, política de dados ou análise de risco.

Veja também o guia de [risco de uso de API não oficial](/posts/risco-banimento-whatsapp-api-nao-oficial/) e o material de [preços da API WhatsApp](/posts/quanto-custa-api-whatsapp/) para avaliar modelo de conexão e orçamento.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige exclusivamente a plataforma oficial da Meta ou se sua equipe precisa instalar e operar o software em infraestrutura própria. A GoZAP conecta em dois modos nativos, Web e Mobile, ambos fora da API oficial da Meta. Veja o [modo Mobile](/posts/modo-mobile-sem-celular/).

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

Se esses limites não atendem aos requisitos da sua organização, escolha uma solução compatível com a política interna.


Versão Markdown: https://blog.gozap.dev/posts/grupos-comunidades-canais-status-api-whatsapp.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Múltiplas instâncias de WhatsApp pela API</title><link>https://blog.gozap.dev/posts/multiplas-instancias-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/multiplas-instancias-whatsapp-api/</guid><description>Veja como instâncias, PODs, tokens, limites por plano e domínios personalizados se organizam na GoZAP, com preços confirmados em 5 de outubro de 2026.</description><content:encoded><![CDATA[# Múltiplas instâncias de WhatsApp: POD, domínios e planos

Veja como instâncias, PODs, tokens, limites por plano e domínios personalizados se organizam na GoZAP, com preços confirmados em 5 de outubro de 2026.

**Resumo:** Na GoZAP, um POD agrupa instâncias em um servidor hospedado, e cada instância tem seu próprio token de API. Os limites variam por plano; domínios personalizados e proxy móvel por instância completam o modelo para organizar diferentes contas ou marcas.

## O que são instâncias e PODs?

Uma instância representa uma conexão de WhatsApp administrada pela API. O POD é o servidor hospedado que agrupa instâncias, enquanto a conta cliente pode ter uma ou mais empresas associadas. Cada empresa aponta para um endereço de instância e pode reunir vários domínios personalizados no mesmo POD.

Essa divisão ajuda a pensar a operação em camadas: o plano define o teto de instâncias, a empresa organiza o serviço hospedado e o token identifica o acesso de cada instância. Um sistema que atende marcas, departamentos ou operações distintas pode separar as conexões por instância e administrar os domínios que apontam para elas.

| Rota | O que faz |
|---|---|
| `POST /api/account/instances` | Cria instância pelo painel para a conta autenticada. |
| `POST /instance/create` | Cria instância pela API administrativa do POD. |
| `GET /api/account/domain` | Lista a configuração de domínios da conta. |
| `POST /api/account/domain/apply` | Solicita a aplicação de um domínio personalizado. |
| `DELETE /api/account/domain/:domainId` | Remove a associação do domínio indicado. |

O painel exige sessão autenticada e e-mail verificado para administrar instâncias e domínios. A rota interna de criação de instância usa `admintoken`. Essas duas superfícies têm usos e autenticações diferentes: clientes do painel administram recursos da conta, enquanto a rota administrativa é destinada à operação do POD.

## Como funcionam limites e preços por plano?

O plano estabelece quantas instâncias podem ser mantidas no POD. Os limites confirmados são 10 no Básico, até 100 no Starter e até 300 no Enterprise. A quota também pode ser configurada no POD, portanto o limite efetivo depende do plano aplicado e da quota configurada.

| Plano ou quantidade | Limite de instâncias | Preço confirmado |
|---|---:|---:|
| Básico, uma instância | 1 | R$ 27,00/mês |
| Básico, de 2 a 10 instâncias | Até 10 | R$ 25,00 por instância/mês |
| Starter | Até 100 | R$ 200,00/mês |
| Enterprise | Até 300 | R$ 449,99/mês |

Os valores foram confirmados em 5 de outubro de 2026. Para o Básico, o valor muda conforme a quantidade: uma instância custa R$ 27,00 por mês, e de duas a dez instâncias cada uma custa R$ 25,00 por mês. Starter e Enterprise são pacotes mensais com seus limites indicados. Não há aqui uma afirmação sobre descontos, trial ou condições diferentes desses valores.

Planeje pela quantidade de conexões simultâneas de que cada área precisa. Uma instância por operação torna mais fácil separar configuração e credenciais, enquanto um pacote maior organiza várias conexões dentro do limite correspondente. O [guia de preços da API WhatsApp](/posts/quanto-custa-api-whatsapp/) detalha as faixas e ajuda a comparar um cenário de uso com o orçamento mensal.

## Como usar token e proxy por instância?

Cada instância tem seu próprio token. A API autentica as rotas de instância com esse token; o ID da instância não funciona como credencial. Nas chamadas, use o token da instância no mecanismo aceito pela rota, como header `token` ou `Authorization: Bearer`. Guarde credenciais separadas no sistema que integra cada conexão, para que um fluxo use a identidade correta.

Cada instância também tem um proxy móvel exclusivo e individual, de operadora TIM ou Claro, incluído no plano. A GoZAP descreve o isolamento do IP por instância: a configuração de proxy está associada à conexão correspondente. Planeje a operação considerando os limites do serviço e os requisitos de comunicação da sua empresa.

No caso de muitas instâncias, registre junto de cada token a empresa, o domínio, o responsável e o fluxo que o utiliza. A documentação sobre [proxy dinâmico e modo Mobile](/posts/proxy-dinamico-mobile/) aborda configurações de conexão relacionadas. Evite colocar tokens em planilhas compartilhadas, trechos de código públicos ou mensagens de workflow sem controle de acesso.

## Como funcionam domínios personalizados e white label?

Os limites confirmados são um domínio personalizado no Básico, dez no Starter e trinta no Enterprise. Domínios extras custam R$ 9,99 por mês cada e são limitados à quantidade de instâncias da conta. A tabela resume o teto base por plano:

| Plano | Domínios personalizados incluídos no limite |
|---|---:|
| Básico | 1 |
| Starter | 10 |
| Enterprise | 30 |
| Domínio adicional | R$ 9,99/mês por unidade extra |

Para conectar um domínio, o cliente cria um registro CNAME do hostname apontando para `cname.<domínio-base>` e aplica o hostname pelo painel. O sistema verifica DNS, quota e se o domínio está reservado. Depois, o POD recebe a lista de hosts e configura regras de host e TLS no serviço. O formato de exemplo para acessar a API é `https://SEU-DOMINIO/`.

Ao estruturar uma operação com várias marcas, mantenha um inventário que associe cada domínio à empresa e ao uso esperado. O modelo permite aplicar vários hosts no mesmo POD, mas a contagem de domínios continua sujeita à quota do plano e ao limite relacionado à quantidade de instâncias. Isso facilita planejar quais endereços devem estar disponíveis em cada etapa da implantação.

No contexto confirmado pela GoZAP, white label significa usar domínio próprio em vez do domínio GoZAP e poder revender o serviço. Vários domínios podem apontar para o mesmo POD, o que permite identificar operações ou marcas por seus endereços. Não há termos contratuais, margens de revenda ou outras condições comerciais publicadas neste guia.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua arquitetura exige hospedar o POD na própria infraestrutura ou se o número de instâncias e domínios necessários excede os limites e as opções confirmadas acima. Se sua política também exige operar exclusivamente pela plataforma oficial da Meta, considere uma alternativa que cumpra esse requisito.

As instâncias podem conectar no modo Web, por QR ou código de pareamento, ou no modo Mobile, com registro pelo número. Ambos ficam fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/multiplas-instancias-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Quanto custa uma API de WhatsApp?</title><link>https://blog.gozap.dev/posts/quanto-custa-api-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/quanto-custa-api-whatsapp/</guid><description>Compare cobrança por mensagem na Cloud API, custos de self-host e mensalidades hospedadas. Veja preços GoZAP, exemplos e como calcular a operação.</description><content:encoded><![CDATA[# Quanto custa uma API de WhatsApp? Modelos de cobrança e custo total

Compare cobrança por mensagem na Cloud API, custos de self-host e mensalidades hospedadas. Veja preços GoZAP, exemplos e como calcular a operação.

**Resumo:** O preço de uma API pode ser cobrado por mensagem, por infraestrutura própria ou por instância e mês. Em 5 de outubro de 2026, a GoZAP tem quatro formatos publicados; o custo total também inclui operação e o impacto de uma interrupção.

## Quais modelos de cobrança existem?

Na Cloud API da Meta, a cobrança descrita oficialmente é por mensagem empresarial entregue, considerando categoria e mercado. A página da [WhatsApp Business Platform](https://developers.facebook.com/docs/whatsapp/) lista mensagens de marketing, utilidade, autenticação e serviço; a [página oficial de preços](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing) detalha a regra de cobrança. Não há valor em reais da Meta neste artigo: a tarifa depende do mercado e da categoria aplicável.

Em self-host, a equipe instala e opera o software no próprio servidor. Existem projetos cujo software é gratuito, como declara o [WAHA](https://waha.devlike.pro/support-us/). “Gratuito” nesse caso descreve o software. Servidores, banco de dados, armazenamento, tráfego, monitoramento, atualizações e horas técnicas continuam fazendo parte do orçamento.

Em uma API hospedada, o fornecedor opera a plataforma e cobra conforme o formato comercial publicado. Pode ser por instância e mês ou por pacote com limite de instâncias. A operação própria continua existindo: integração, credenciais, fluxos de mensagem e atendimento aos clientes ficam com a empresa que usa a API.

Compare a mesma capacidade e o mesmo período. Mensalidade, mensagens, infraestrutura e horas de operação são parcelas diferentes.

## Quanto custa na GoZAP?

Os valores vigentes, confirmados pelo responsável pelo produto em 5 de outubro de 2026, são:

| Formato | Preço |
|---|---:|
| 1 instância | R$ 27,00/mês |
| 2 a 10 instâncias | R$ 25,00 por instância/mês |
| Pacote Starter, até 100 instâncias | R$ 200,00/mês |
| Pacote Enterprise, até 300 instâncias | R$ 449,99/mês |

O valor GoZAP inclui um proxy móvel exclusivo e individual para cada instância, sem acréscimo. No Starter, os R$ 200,00 por mês cobrem até 100 instâncias e seus 100 proxies, o equivalente a R$ 2,00 por instância com proxy. O IP de cada instância fica isolado. Os preços acima já incluem esse componente.

A GoZAP oferece dois modos nativos de conexão: Web, por QR ou código de pareamento, e Mobile, com registro da conta pelo número diretamente no socket mobile do WhatsApp, sem celular, emulador ou aplicativo APK/IPA. Saiba mais sobre o [modo Mobile](/posts/modo-mobile-sem-celular/).

Para os exemplos abaixo, considerei cada formato que cobre a quantidade indicada e escolhi o menor custo mensal. No Básico, de duas a dez instâncias, multipliquei R$ 25,00 pela quantidade. Os pacotes Starter e Enterprise têm preço mensal fixo até seus limites. O valor médio por instância é apenas a divisão do preço do pacote pela quantidade do exemplo.

| Quantidade | Formatos aplicáveis considerados | Menor custo mensal | Custo médio no formato escolhido |
|---:|---|---:|---:|
| 1 | 1 instância Básico: R$ 27,00; Starter: R$ 200,00; Enterprise: R$ 449,99 | R$ 27,00 | R$ 27,00 |
| 3 | Básico: 3 × R$ 25,00 = R$ 75,00; Starter: R$ 200,00; Enterprise: R$ 449,99 | R$ 75,00 | R$ 25,00 |
| 10 | Básico: 10 × R$ 25,00 = R$ 250,00; Starter: R$ 200,00; Enterprise: R$ 449,99 | R$ 200,00 | R$ 20,00 |
| 50 | Starter: R$ 200,00; Enterprise: R$ 449,99 | R$ 200,00 | R$ 4,00 |
| 100 | Starter: R$ 200,00; Enterprise: R$ 449,99 | R$ 200,00 | R$ 2,00 |
| 300 | Enterprise: R$ 449,99 | R$ 449,99 | R$ 1,50* |

\* No pacote Enterprise, R$ 449,99 ÷ 300 resulta em aproximadamente R$ 1,49997, arredondado para R$ 1,50 por instância. O total cobrado permanece R$ 449,99/mês.

O exemplo de 50 instâncias usa o preço fixo do Starter, que cobre até 100; não cria uma nova faixa. Para quantidades de 11 a 99 que não aparecem na tabela de exemplos, este artigo não publica uma faixa adicional. O modelo não cobra por mensagem dentro da assinatura descrita aqui.

Conte as instâncias que precisam existir ao mesmo tempo. Não multiplique o valor mensal por mensagens: a assinatura descrita é organizada por plano e quantidade de instâncias.

## Quanto custam outras opções?

A W-API publica duas opções SaaS mensais. Em 5 de outubro de 2026, a instância LITE custava R$ 19,90/mês e a PRO, R$ 29,90/mês, cada uma por uma instância. Esses números descrevem os preços publicados pela W-API naquela data e não estabelecem equivalência de recursos, limites ou condições comerciais com a GoZAP.

A página curta de preços da W-API consultada nessa data não menciona proxy incluso. Isso registra apenas o que a página apresenta e não permite concluir se há ou não esse recurso em outras condições da oferta.

No self-host, o preço do software e o preço da operação são coisas distintas. O WAHA declara o software gratuito, mas a empresa ainda precisa alocar infraestrutura e horas de quem instala, mantém e monitora a aplicação. O mesmo princípio de orçamento vale para qualquer implantação própria; o total varia conforme a arquitetura e os recursos disponíveis.

Esses formatos não são diretamente comparáveis só pelo menor número anunciado. Uma assinatura por instância inclui um serviço hospedado; um software gratuito pode exigir que a equipe faça implantação e suporte. A Cloud API, por sua vez, vincula cobrança às mensagens entregues, categoria e mercado.

## Como calcular o custo total?

Monte a conta para o mesmo horizonte, como um mês típico e um mês de pico. Some a cobrança da API, a infraestrutura, as horas de operação e o risco financeiro de interrupção. Para a Cloud API, inclua a estimativa de mensagens empresariais entregues por categoria e mercado. Para self-host, inclua servidores, banco, armazenamento, tráfego, monitoramento, atualização e plantão. Para serviço hospedado, some instâncias ou pacotes e integrações externas.

Uma planilha simples pode separar custos fixos e variáveis. Registre também a hipótese usada em cada cálculo: quantidade de instâncias simultâneas, mensagens por categoria, horas de manutenção e valor atribuído ao tempo de indisponibilidade. Sem essas premissas, dois totais podem parecer comparáveis e representar operações diferentes.

| Parcela | Como registrar |
|---|---|
| Assinatura | Plano ou pacote mensal e quantidade contratada. |
| Infraestrutura | Máquinas, armazenamento, tráfego, banco e observabilidade. |
| Horas de operação | Instalação, atualização, monitoramento, incidentes e suporte interno. |
| Mensagens | Volume entregue e regras aplicáveis à plataforma, categoria e mercado. |
| Risco de interrupção | Efeito operacional estimado: atendimento parado, contingência e recuperação. |

Não transforme essa linha de risco em uma probabilidade de bloqueio. Use-a como cenário de continuidade definido pela sua própria organização, sem presumir que uma ferramenta elimine interrupções.

```text
Assinatura mensal:
Infraestrutura:
Horas de operação:
Mensagens e categorias:
Cenário de interrupção:
Custo mensal total:
```

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige operar exclusivamente pela Cloud API oficial da Meta, ou se sua equipe precisa instalar e manter o software em infraestrutura própria. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta.

Se um SLA contratual, região de hospedagem, retenção específica ou outro compromisso for condição obrigatória, trate-o como requisito formal de contratação. O custo mensal só responde à pergunta financeira quando o formato também atende os requisitos operacionais da empresa.

O [comparativo entre API oficial e não oficial](/posts/api-whatsapp-oficial-vs-nao-oficial/) detalha os modelos técnicos. O artigo sobre [eventos e webhooks GoZAP](/posts/webhooks-sse-gozap/) e o guia de [integração com n8n](/posts/gozap-n8n-disparo/) mostram componentes que podem entrar no orçamento de operação.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição. A GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/quanto-custa-api-whatsapp.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Resposta automática WhatsApp API: regras e atalhos</title><link>https://blog.gozap.dev/posts/resposta-automatica-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/resposta-automatica-whatsapp-api/</guid><description>Configure regras de resposta automática por palavra-chave, texto exato ou regex e organize modelos rápidos pela API GoZAP, com rotas e exemplos de integração.</description><content:encoded><![CDATA[# Resposta automática WhatsApp API com regras e respostas rápidas

Configure regras de resposta automática por palavra-chave, texto exato ou regex e organize modelos rápidos pela API GoZAP, com rotas e exemplos de integração.

**Resumo:** A API GoZAP oferece regras de resposta automática em `/auto-reply` e modelos de respostas rápidas em `/quickreply`. Regras podem corresponder a palavras, texto exato ou expressão regular, aplicar filtros e enviar diferentes tipos de conteúdo. Respostas rápidas são modelos salvos e listados; o atalho não tem gatilho automático documentado.

## Qual é a diferença entre auto-reply e resposta rápida?

`/auto-reply` avalia mensagens recebidas segundo regras configuradas e pode enviar uma resposta quando há correspondência. Cada regra tem nome, tipo e valores de correspondência, conteúdo de resposta, escopo, prioridade e opções de comportamento. Mensagens vazias e mensagens enviadas pela própria instância não acionam a avaliação.

`/quickreply` mantém modelos para consulta e uso posterior. A API aceita gravar e listar respostas rápidas com campos como `shortCut`, `text`, `type`, `file`, `docName`, `owner` e `onWhatsApp`. Não há rota de exclusão nem gatilho automático associado a `shortCut` documentado no contrato consultado. Portanto, trate o atalho como dado do modelo, sem presumir que digitar o texto em uma conversa envie o conteúdo.

| Rota | O que faz |
|---|---|
| `POST /auto-reply/rule` | Cria uma regra. |
| `GET /auto-reply/rules` | Lista regras. |
| `GET /auto-reply/rule/{id}` | Consulta uma regra. |
| `PUT /auto-reply/rule/{id}` | Atualiza uma regra com o objeto de regra. |
| `DELETE /auto-reply/rule/{id}` | Remove uma regra. |
| `POST /auto-reply/rule/{id}/toggle` | Ativa ou desativa pelo campo `active`. |
| `GET`, `POST /auto-reply/settings` | Consulta ou atualiza configurações gerais. |
| `POST /quickreply/edit` | Salva ou atualiza um modelo de resposta rápida. |
| `GET /quickreply/showall` | Lista os modelos salvos. |

## Como os gatilhos decidem quando responder?

O campo `match_type` define a comparação. Em `keywords`, a regra procura qualquer item de `match_value` como trecho de texto, sem diferenciar maiúsculas de minúsculas. Em `exact`, compara a mensagem inteira, também sem diferenciar maiúsculas, com `pattern`. Em `pattern`, interpreta `pattern` como expressão regular case-insensitive. Como a regra exata depende de `pattern`, mantenha esse campo com o valor esperado quando usar esse modo.

O escopo restringe onde a regra pode atuar: `groups` limita a grupos, `private` a conversas privadas, e vazio ou `all` não aplica esse filtro. `allowed_jids` cria uma lista de remetentes permitidos e `blocked_jids` exclui remetentes. `priority` organiza regras. Com `multi_match=false`, a avaliação para depois da primeira regra que disparar; quando habilitado, outras correspondências podem ser processadas.

Uma regra nova fica ativa por padrão. A simulação de digitação também inicia habilitada; sem configuração, o serviço usa 1500 ms para essa simulação, cooldown global de 2000 ms e `multi_match=false`. `cooldown_ms=0` usa o cooldown global. Os valores são intervalos em milissegundos: estabeleça configurações compatíveis com o ritmo do atendimento e evite criar respostas em sequência sem necessidade.

## Como criar uma regra de resposta?

O exemplo cria uma resposta de texto para mensagens que contenham “horário”. `response_payload` contém o texto da resposta. Placeholders documentados incluem `{{sender}}`, `{{chat}}`, `{{pushName}}` e capturas no formato `{{match_N}}`. Use o token real da instância no header `token`; o endereço e a credencial abaixo são ilustrativos.

```bash
curl -X POST 'https://SEU-DOMINIO/auto-reply/rule' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"name":"Horário de atendimento","match_type":"keywords","match_value":["horário"],"pattern":"","response_type":"text","response_payload":{"text":"Olá {{pushName}}, nosso atendimento funciona em dias úteis."},"scope":"private","allowed_jids":[],"blocked_jids":[],"priority":10,"cooldown_ms":0,"typing_duration_ms":1500,"quoted":false,"simulate_typing":true,"active":true}'
```

O mesmo corpo pode ser enviado com `fetch` no Node.js:

```js
const body = {name:"Horário de atendimento",match_type:"keywords",match_value:["horário"],pattern:"",response_type:"text",response_payload:{text:"Olá {{pushName}}, nosso atendimento funciona em dias úteis."},scope:"private",allowed_jids:[],blocked_jids:[],priority:10,cooldown_ms:0,typing_duration_ms:1500,quoted:false,simulate_typing:true,active:true};
const response = await fetch('https://SEU-DOMINIO/auto-reply/rule', {method:'POST', headers:{'Content-Type':'application/json', token:'SEU_TOKEN'}, body:JSON.stringify(body)});
console.log(await response.json());
```

Em Python com `requests`:

```python
import requests

body = {"name":"Horário de atendimento","match_type":"keywords","match_value":["horário"],"pattern":"","response_type":"text","response_payload":{"text":"Olá {{pushName}}, nosso atendimento funciona em dias úteis."},"scope":"private","allowed_jids":[],"blocked_jids":[],"priority":10,"cooldown_ms":0,"typing_duration_ms":1500,"quoted":False,"simulate_typing":True,"active":True}
response = requests.post('https://SEU-DOMINIO/auto-reply/rule', headers={'token':'SEU_TOKEN'}, json=body)
print(response.json())
```

Em PHP com cURL:

```php
<?php
$body = ['name'=>'Horário de atendimento','match_type'=>'keywords','match_value'=>['horário'],'pattern'=>'','response_type'=>'text','response_payload'=>['text'=>'Olá {{pushName}}, nosso atendimento funciona em dias úteis.'],'scope'=>'private','allowed_jids'=>[],'blocked_jids'=>[],'priority'=>10,'cooldown_ms'=>0,'typing_duration_ms'=>1500,'quoted'=>false,'simulate_typing'=>true,'active'=>true];
$curl = curl_init('https://SEU-DOMINIO/auto-reply/rule');
curl_setopt_array($curl, [CURLOPT_POST=>true, CURLOPT_RETURNTRANSFER=>true, CURLOPT_HTTPHEADER=>['Content-Type: application/json','token: SEU_TOKEN'], CURLOPT_POSTFIELDS=>json_encode($body)]);
echo curl_exec($curl);
curl_close($curl);
```

O corpo é o mesmo nos quatro clientes. `Authorization: Bearer SEU_TOKEN` também é aceito no lugar do header `token`. Em respostas rápidas, `shortCut` e `text` são os campos que o modelo precisa ter; um identificador é gerado quando `id` não é enviado. Use `/quickreply/showall` para listar o que foi guardado.

## Como ajustar regras e conteúdo sem surpresas?

Use `GET /auto-reply/settings` para ler as opções globais: `simulate_typing`, `typing_duration_ms`, `global_cooldown_ms` e `multi_match`. O POST aceita esses campos e grava os valores enviados; campos omitidos assumem valores padrão do objeto. Na prática, envie de forma explícita as opções que deseja controlar e leia a resposta para confirmar a configuração retornada.

Para uma regra existente, use GET antes de PUT para conservar campos que ainda importam. O toggle recebe `{"active":true}` ou `{"active":false}`. O corpo de criação e atualização usa campos como `name`, `match_type`, `match_value`, `pattern`, `response_type` e `response_payload`; o tipo de resposta pode ser `text`, `media`, `location`, `contact` ou `interactive`. O objeto de conteúdo precisa corresponder ao tipo selecionado.

`text` pode incluir placeholders. Respostas de mídia, localização, contato e menu dependem dos campos próprios desses conteúdos. Se o campo não estiver claro para o seu caso, a [documentação da API GoZAP](https://gozap.dev/docs) é o lugar para conferir o contrato antes de integrar. Para o fluxo geral de envio, veja também [grupos, comunidades, canais e status pela API](/posts/grupos-comunidades-canais-status-api-whatsapp/) e o guia de [eventos e webhooks GoZAP](/posts/webhooks-sse-gozap/).

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio. Planeje a automação com mensagens esperadas, saída clara para atendimento humano e uma forma de desligar regras caso o conteúdo precise ser revisto.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua operação exige exclusivamente a plataforma oficial da Meta, ou se a equipe depende de uma rota automática de exclusão de respostas rápidas. A GoZAP oferece conexão pelos modos Web e Mobile, ambos fora da API oficial da Meta. O contrato de `/quickreply` aqui descrito salva e lista modelos, sem gatilho automático por atalho documentado. Se esse requisito for central, confirme que a solução escolhida oferece o fluxo que sua equipe pretende operar.

Para planejar autenticação e operações, leia a [referência da API GoZAP](https://gozap.dev/docs). Avalie também o guia de [risco de uso de API não oficial](/posts/risco-banimento-whatsapp-api-nao-oficial/).


Versão Markdown: https://blog.gozap.dev/posts/resposta-automatica-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Risco de banimento em API não oficial WhatsApp</title><link>https://blog.gozap.dev/posts/risco-banimento-whatsapp-api-nao-oficial/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/risco-banimento-whatsapp-api-nao-oficial/</guid><description>Entenda o trecho dos Termos do WhatsApp sobre acesso não autorizado, os limites do que ele declara e as cautelas para operar uma API não oficial.</description><content:encoded><![CDATA[# Risco de banimento em API de WhatsApp não oficial: o que os Termos dizem

Entenda o trecho dos Termos do WhatsApp sobre acesso não autorizado, os limites do que ele declara e as cautelas para operar uma API não oficial.

**Resumo:** Os Termos do WhatsApp proíbem acessar ou usar os serviços de maneira não autorizada e citam meios automatizados. Uma API conectada por cliente não oficial traz exposição a restrição; avalie isso junto à política de uso da sua empresa.

## O que dizem os Termos do WhatsApp?

Os [Termos de Serviço do WhatsApp](https://www.whatsapp.com/legal/terms-of-service) proíbem acessar ou usar os serviços de maneiras não autorizadas e mencionam o uso “diretamente ou por meios automatizados”. Essa é a afirmação central relevante para uma integração que usa um cliente não oficial. A frase não descreve um procedimento de análise de contas nem define quais volumes ou rotinas resultarão em uma medida.

O termo “banimento” é popular, mas sugere uma conclusão certa e uniforme. Aqui usamos “restrição” para falar da possibilidade de a plataforma limitar ou interromper o uso. Não existe nesta explicação uma previsão da decisão para uma conta individual. Uma regra geral dos Termos não permite calcular a probabilidade de bloqueio de uma operação específica.

Também é importante separar status técnico de autorização. Uma API responder, um dispositivo concluir o pareamento ou uma mensagem sair do sistema são sinais sobre aquela etapa do fluxo. Eles não significam que a plataforma aprovou o padrão de uso nem que a conta seguirá disponível.

Um teste técnico demonstra o comportamento observado naquele momento. Ele não determina a decisão futura da plataforma sobre uma conta.

## O que essa regra significa para APIs não oficiais?

Uma API não oficial conecta por um caminho que não é a Cloud API da Meta. Pode envolver uma biblioteca, um cliente WhatsApp Web, uma sessão vinculada ou uma API oferecida por outro fornecedor. O nome comercial da integração não altera os Termos que regem o uso do WhatsApp.

Não use uma prática isolada como permissão, um volume como limite universal ou uma rotina como promessa de continuidade. Os Termos citados não estabelecem uma taxa universal de mensagens nem uma previsão para uma conta individual.

Na GoZAP, há dois modos nativos de conexão: Web, por QR ou código de pareamento, e Mobile, pelo registro da conta usando o número. As rotas `POST /device/pair/qr` e `POST /device/pair/code` iniciam o pareamento do modo Web; os dois modos continuam fora da Cloud API da Meta. Veja o [guia do modo Mobile](/posts/modo-mobile-sem-celular/).

## Que cautelas ajudam a organizar a operação?

Cautela não é uma técnica para obter imunidade a restrições. É uma forma de reduzir erros controláveis, proteger contatos e preparar a equipe para interrupções. Comece por documentar quem aprovou a finalidade da comunicação, de onde vêm os contatos e como pedidos para parar são registrados e atendidos.

Defina um responsável por observar falhas e suspender fluxos. A API GoZAP tem eventos por webhook e SSE, rotas para mensagens e status técnicos. Use esses sinais para acompanhar a integração, sem tratá-los como previsão sobre medidas da Meta. Evite escalada automática de volume quando a equipe não consegue revisar o resultado ou interromper o envio.

Um processo simples ajuda a responder incidentes: preserve o registro técnico necessário, pause o fluxo afetado, identifique quem autoriza a retomada e comunique o impacto às equipes envolvidas. Cada organização deve determinar retenção de logs e acesso de acordo com seus requisitos de segurança e privacidade.

Documente por que a comunicação é necessária, como os contatos foram obtidos e qual processo atende solicitações de interrupção. Defina uma pessoa responsável pela aprovação.

Defina quem monitora erros e eventos, quando um fluxo será suspenso e como a equipe verifica os dados antes de retomar. Uma pausa operacional limita o impacto interno, mas não determina a decisão da plataforma.

Quando mudar integração ou finalidade, leia novamente os Termos e as condições aplicáveis. Registre a data e as pessoas responsáveis pela decisão.

## O que a GoZAP oferece e qual é o limite?

A GoZAP oferece uma API hospedada com control plane de autosserviço. O produto associa a assinatura a plano e quantidade de instâncias e disponibiliza rotas autenticadas para operações de mensagem, grupos, proxy por instância e integração com eventos. Esses recursos descrevem funções da API; não são compromisso de continuidade da conta no WhatsApp.

No fluxo de eventos, `/webhook` recebe a configuração de destinos e `/sse` transmite eventos ao consumidor conectado. O serviço mantém histórico e tentativas de entrega dos webhooks. Uma tentativa concluída indica resultado do envio do evento ao endpoint configurado, não entrega da mensagem final ao contato.

O caminho de coexistência por QR vincula um companion a uma conta WhatsApp Business móvel. Esse fluxo não é o mesmo que operar todas as mensagens pela Graph/Cloud API. Empresas que precisam da plataforma oficial devem escolher a integração oficial e seus requisitos próprios.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição. A GoZAP não garante contra bloqueio.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige que todas as mensagens passem exclusivamente pela Cloud API oficial da Meta, ou se o software precisa ser instalado e mantido na infraestrutura da própria empresa. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta.

Se a contratação depende de SLA, localização de dados, retenção específica ou compromisso de disponibilidade, inclua esses pontos como requisitos escritos e avance somente quando o contrato os atender. Também não use uma API não oficial quando sua política de risco não aceita essa exposição.

O [comparativo entre API oficial e não oficial](/posts/api-whatsapp-oficial-vs-nao-oficial/) descreve diferenças entre os modelos. Veja também como a equipe pode [acompanhar webhooks e eventos SSE](/posts/webhooks-sse-gozap/) e [migrar uma sessão do WhatsApp Web](/posts/migrar-sessao-whatsapp/).

```text
Finalidade e origem dos contatos:
Responsável por monitoramento e pausa:
Integrações e rotas utilizadas:
Procedimento em caso de restrição:
Data da revisão dos Termos:
```


Versão Markdown: https://blog.gozap.dev/posts/risco-banimento-whatsapp-api-nao-oficial.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Segurança</category></item>
<item><title>Tipos de mensagem WhatsApp API: rotas e exemplos</title><link>https://blog.gozap.dev/posts/tipos-de-mensagem-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/tipos-de-mensagem-whatsapp-api/</guid><description>Veja rotas GoZAP para texto, mídia, contato, localização, enquete, listas, eventos, carrossel, tabelas, álbum e pagamento com exemplos reais.</description><content:encoded><![CDATA[# Tipos de mensagem WhatsApp API: rotas e exemplos úteis

Veja rotas GoZAP para texto, mídia, contato, localização, enquete, listas, eventos, carrossel, tabelas, álbum e pagamento com exemplos reais.

**Resumo:** A API GoZAP separa vários formatos de mensagem em rotas próprias. Este guia seleciona dez grupos úteis, resume o corpo documentado para cada rota e traz quatro requisições com campos aceitos: contato, localização, enquete e tabela.

## Como escolher a rota de envio?

Comece pelo conteúdo que sua aplicação já tem e pelo destino que precisa receber a mensagem. Para formatos simples, texto e mídia cobrem os usos mais comuns. Para dados estruturados, uma rota específica reduz a necessidade de representar tudo como texto corrido. As rotas de envio usam autenticação da instância pelo header `token` ou por `Authorization: Bearer SEU_TOKEN`.

| Rota | O que faz |
|---|---|
| `POST /send/text` | Envia texto com `number` ou `chatid` e `text`. |
| `POST /send/media` | Envia imagem, vídeo, áudio, sticker ou documento por `type` e URL/Base64. |
| `POST /send/contact` | Compartilha um contato por telefone ou vCard, com nome opcional. |
| `POST /send/location` | Envia coordenadas e, opcionalmente, nome e endereço. |
| `POST /send/poll` | Cria uma enquete com nome e opções. |
| `POST /send/menu`, `/send/button`, `/send/list` | Envia formatos de menu, botões ou lista usando o modelo de menu. |
| `POST /send/event` | Envia evento com nome e início em Unix segundos. |
| `POST /send/carousel` | Envia cartões em carrossel. |
| `POST /send/rich`, `/send/table`, `/send/code-block` | Formata conteúdo estruturado, tabela ou bloco de código. |
| `POST /send/album` | Envia uma coleção de imagens ou vídeos, com até 20 itens. |
| `POST /send/request-payment` | Envia uma solicitação de pagamento com valor positivo. |

O guia reúne dez grupos de uso. A rota básica contempla texto e mídia; as demais cobrem contatos, coordenadas, escolhas, eventos, cartões, conteúdo estruturado, álbuns e pedidos de pagamento. A existência da rota não define por si só como o destinatário verá o conteúdo em cada cliente WhatsApp.

## Como enviar contato, localização ou enquete?

Contato aceita `number` ou `chatid`, um nome entre as alternativas documentadas e um telefone ou vCard. O destinatário é necessário; o exemplo usa telefone e nome:

```bash
curl -X POST 'https://SEU-DOMINIO/send/contact' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"number":"5511999999999","displayName":"Equipe de suporte","phone":"5511888888888"}'
```

Localização requer latitude e longitude em conjunto. Valores precisam estar nos intervalos geográficos válidos; nome e endereço são opcionais.

```bash
curl -X POST 'https://SEU-DOMINIO/send/location' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"number":"5511999999999","latitude":-23.5505,"longitude":-46.6333,"name":"Praça da Sé","address":"São Paulo, SP"}'
```

Enquete usa `name` e uma lista `options` com ao menos duas opções não vazias. `selectableCount` define quantas alternativas podem ser escolhidas; se for zero, o serviço usa uma opção, e o valor não pode exceder a quantidade enviada.

```bash
curl -X POST 'https://SEU-DOMINIO/send/poll' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN' \
--data '{"number":"5511999999999","name":"Qual horário funciona?","options":["Manhã","Tarde","Noite"],"selectableCount":1}'
```

Nos três casos, o número pode ser substituído por `chatid` com o identificador da conversa. Os telefones dos exemplos são fictícios. Um teste de integração deve usar um destino autorizado pela sua operação.

Contato e localização são adequados quando a aplicação tem dados estruturados e quer preservar sua forma: um número e nome para contato, ou coordenadas e descrição para um ponto. Enquete é uma pergunta com alternativas e regras de seleção. Antes de enviar, valide os dados localmente, em especial o par de coordenadas e a relação entre alternativas e `selectableCount`, para receber erros de entrada no seu próprio fluxo.

## Quando usar eventos, carrossel ou conteúdo formatado?

Use `/send/event` quando a mensagem representar um evento: os campos requeridos incluem `name` e `startTime`, que recebe Unix em segundos. Descrição, fim, localização, link e opções de convite são complementos opcionais. Para um evento criado, há também `/send/event-response`, com o identificador da mensagem do evento e a resposta `going`, `not_going` ou `maybe`.

O carrossel usa `/send/carousel`, com destino, textos e uma coleção de `cards` ou `carousel`. Os cartões comportam cabeçalho, texto, imagem, vídeo e botões. A estrutura interna completa dos cartões deve seguir o formato de integração usado pela aplicação.

Para conteúdo legível e organizado, `/send/rich` recebe `items[]` tipados; entre os tipos descritos estão texto, código, tabela e LaTeX. Se a aplicação já tem linhas e cabeçalhos, `/send/table` recebe `title`, `headers`, `rows` e textos opcionais. Um bloco de código pode ser enviado por `/send/code-block` com `code` e `language` requeridos.

```bash
curl -X POST 'https://SEU-DOMINIO/send/table' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
--data '{"number":"5511999999999","title":"Plantão","headers":["Dia","Horário"],"rows":[["Segunda","9h às 17h"],["Terça","9h às 17h"]],"footer":"Horário local"}'
```

O corpo usa uma lista de listas de strings para linhas e uma lista de strings para cabeçalhos. O mesmo conteúdo pode ser montado pelo seu sistema e serializado como JSON; mantenha a estrutura da tabela alinhada entre cabeçalhos e valores.

Uma tabela funciona bem quando cada registro possui as mesmas colunas. Se os valores forem descritivos ou tiverem comprimentos diferentes, avalie se uma mensagem de texto é mais clara para quem recebe. Para código, o endpoint dedicado recebe linguagem e conteúdo, enquanto `/send/rich` agrupa itens de mais de um tipo no mesmo formato. Use o formato que corresponde aos dados que sua aplicação precisa compartilhar.

## Como funcionam álbum, pagamento e fila?

`POST /send/album` recebe `jid` e `items[]`; cada item contém tipo, URL e legenda opcional. Há até 20 itens, e o tipo pode ser imagem ou vídeo. A rota de pagamento `/send/request-payment` aceita destino e `amount` positivo, além de textos e dados de pagamento opcionais. Existe também `/send/payment-request`, com um corpo de pedido distinto e campos obrigatórios próprios.

Esses dois usos têm contratos diferentes: o álbum agrupa mídias em itens, enquanto o pedido de pagamento transmite um valor e campos próprios da solicitação. Não reutilize automaticamente o corpo de uma rota em outra. Quando um recurso possui várias rotas parecidas, confira qual endpoint corresponde à operação e serialize apenas os campos associados àquele contrato. A resposta comum também pode diferir da resposta de álbum ou pagamento, por isso o cliente deve interpretar o corpo da rota chamada.

Para consultar exemplos adicionais de texto, documento e mídia, acesse [como enviar mensagem pela API](/posts/enviar-mensagem-whatsapp-api-exemplos/). O guia de [grupos, comunidades, canais e status](/posts/grupos-comunidades-canais-status-api-whatsapp/) detalha rotas para outros destinos, enquanto [webhooks e SSE](/posts/webhooks-sse-gozap/) aborda eventos da integração.

Os handlers comuns respondem com HTTP 200 e campos `success` e `message`; álbum, pagamento e comércio usam `success` e `result`. Isso descreve a resposta da API. Não trata a resposta como confirmação de entrega ou leitura no WhatsApp.

## Quando não escolher a GoZAP

Não escolha a GoZAP se a operação precisa enviar apenas pela API oficial da Meta ou se os formatos e os campos publicados não atendem ao contrato que seu produto exige. Compare também o modelo hospedado com os requisitos de controle de infraestrutura da sua equipe. A GoZAP oferece conexão nativa Web e Mobile, e ambos os modos ficam fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/tipos-de-mensagem-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Uptime e Kubernetes: POD exclusivo por cliente</title><link>https://blog.gozap.dev/posts/uptime-kubernetes-pod-exclusivo-whatsapp-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/uptime-kubernetes-pod-exclusivo-whatsapp-api/</guid><description>Entenda como o Kubernetes mantém um POD exclusivo por cliente, como o painel mede uptime e como se compara operar uma API open source em VPS própria.</description><content:encoded><![CDATA[# Uptime e Kubernetes: como funciona um POD exclusivo por cliente

Entenda como o Kubernetes mantém um POD exclusivo por cliente, como o painel mede uptime e como se compara operar uma API open source em VPS própria.

**Resumo:** Na GoZAP, cada cliente tem um POD exclusivo em namespace próprio e o Kubernetes sustenta uptime de 99,99%, com balanceamento entre VPS e provisionamento automático em outra VPS em até 30 segundos quando uma cai. O painel também permite acompanhar o uptime de cada POD nas últimas 24 horas.

## O que é um POD exclusivo por cliente?

POD é a unidade da GoZAP que reúne as instâncias e os recursos de um cliente. Cada cliente tem um Deployment Kubernetes em namespace próprio. O plano Enterprise aceita até 300 instâncias por POD. Uma mesma conta pode ter quantos PODs quiser, cada qual com plano, quantidade de instâncias e validade próprios.

Separar conexões em PODs permite organizar ambientes ou grupos de instâncias em unidades distintas de administração e cobrança. A equipe pode escolher um domínio próprio para acessar a API em vez de usar o subdomínio da GoZAP. Os limites de instâncias, tokens e domínios estão detalhados no [guia de múltiplas instâncias](/posts/multiplas-instancias-whatsapp-api/).

## Como o Kubernetes mantém o POD no ar?

A GoZAP opera com uptime de 99,99%, sustentado pelo Kubernetes. O tráfego é balanceado entre VPS. Se uma VPS cai, o POD é provisionado automaticamente em outra VPS em até 30 segundos. Todos os componentes da GoZAP são construídos em alta disponibilidade e contam com redundância.

No Deployment, sondas de prontidão e de vida verificam o endpoint de saúde. O Kubernetes acompanha essas condições e reinicia ou recria o contêiner quando necessário. Se o nó que hospeda a VPS deixa de responder, o provisionamento em outro nó retoma o POD. O balanceamento distribui o tráfego entre as VPS para manter o serviço acessível durante a operação.

Esses mecanismos atuam em conjunto: sondas acompanham a saúde do serviço, Kubernetes administra os recursos e a infraestrutura mantém redundância entre componentes. Para o cliente, a unidade de acompanhamento continua sendo o POD, mesmo quando sua operação usa várias instâncias.

## Como acompanhar o uptime do seu POD?

O painel mostra o uptime de cada POD nas últimas 24 horas, organizado em 288 faixas de cinco minutos. Cada faixa aparece como ativa, inativa ou sem amostra. “Sem amostra” indica que não há dado para classificar aquele intervalo.

O painel apresenta o percentual em número inteiro, arredondado, em vez de mostrar casas decimais. Como exemplo, um POD do plano Básico aparecia com 100% nas últimas 24 horas em 5 de outubro de 2026. A tela resume o estado observado nessa janela, para que a equipe acompanhe a disponibilidade recente do próprio POD.

## O que muda com domínio próprio por POD?

O cliente pode usar domínio próprio no lugar do subdomínio da GoZAP. Os limites são um domínio no Básico, dez no Starter e trinta no Enterprise. Cada domínio adicional custa R$ 9,99 por mês. O ingresso aplica TLS ao hostname configurado, então o endereço personalizado usa conexão HTTPS.

Vários domínios podem apontar para o mesmo POD dentro da quota do plano. Essa organização serve a equipes que usam endereços separados por cliente, marca ou integração, mantendo as instâncias dentro do POD. A disponibilidade de domínios e a quantidade de conexões seguem os limites próprios de cada plano.

## Como isso se compara a operar uma API open source por conta própria?

Evolution API, WAHA, WPPConnect e Baileys são projetos open source que podem ser instalados em infraestrutura administrada pela equipe. O software é gratuito. Na operação própria, o cliente assume o custo da VPS e as horas para instalar, acompanhar e manter a aplicação, além de procurar e pagar separadamente por serviços externos necessários, como proxy móvel por instância.

| Tarefa | Instalação própria | GoZAP |
|---|---|---|
| Servidor e VPS | A equipe escolhe e paga pela capacidade, sistema, rede e armazenamento. | A plataforma cuida da infraestrutura dos PODs. |
| Recuperação se o servidor cair | A equipe configura supervisão e recupera o serviço; uma implantação em uma VPS sem redundância depende de essa VPS voltar ou de migração manual. | O Kubernetes acompanha a saúde e provisiona o POD em outra VPS automaticamente em até 30 segundos. |
| Redundância e tráfego | Para distribuir tráfego e continuar operando durante falhas, a equipe desenha e mantém nós, balanceamento e redundância. | Tráfego balanceado entre VPS; os componentes da GoZAP são construídos com alta disponibilidade e redundância. |
| Atualizações | A equipe acompanha versões, dependências e janelas de atualização. | A plataforma cuida das atualizações e da manutenção. |
| Monitoramento | A equipe instala métricas, alertas e histórico para observar o serviço. | O painel mostra o uptime do POD em 288 faixas de cinco minutos nas últimas 24 horas. |
| Proxy por instância | A equipe configura cada proxy e contrata separadamente os endpoints móveis de que precisa. | Proxy móvel TIM ou Claro exclusivo por instância, já incluído, sem acréscimo. |
| Domínio próprio e TLS | A equipe administra DNS, proxy reverso, certificados e renovação. | Domínios por POD conforme o plano, com TLS no ingresso; extras custam R$ 9,99/mês. |
| Custo | Software gratuito; VPS, serviços externos e horas de operação variam conforme a arquitetura. | 1 instância: R$ 27,00/mês; de 2 a 10: R$ 25,00 por instância/mês; Starter até 100: R$ 200,00/mês, ou R$ 2,00 por instância com proxy no limite; Enterprise até 300: R$ 449,99/mês. |

Quem tem equipe de DevOps pode montar alta disponibilidade também em uma instalação própria. Muitas equipes não contam com essa estrutura e acabam assumindo sozinhas a infraestrutura e os incidentes. As páginas oficiais consultadas em 5 de outubro de 2026 mostram configurações de proxy para [Evolution API](https://github.com/evolution-foundation/evolution-api/blob/main/.env.example), [WAHA](https://waha.devlike.pro/docs/how-to/proxy/), [WPPConnect](https://wppconnect.io/wppconnect/interfaces/CreateOptions.html) e [Baileys](https://github.com/WhiskeySockets/Baileys/blob/master/src/Types/Socket.ts); elas não mostram proxy móvel incluído no software. O proxy por instância e o custo dos endpoints ficam a cargo de quem monta a instalação própria.

Na GoZAP, a plataforma cuida das atualizações, manutenção, infraestrutura e proxy móvel exclusivo por instância, de operadora TIM ou Claro, já incluído. A conexão pode ser feita nos dois modos nativos: Web, por QR ou código de pareamento, e Mobile, com registro da conta pelo número. Saiba mais sobre o [proxy dinâmico e o modo Mobile](/posts/proxy-dinamico-mobile/). Os valores foram confirmados em 5 de outubro de 2026; o [guia de custos da API WhatsApp](/posts/quanto-custa-api-whatsapp/) detalha os planos.

Para quem busca qualidade sem se preocupar com infraestrutura, otimizações, manutenção, atualizações e proxy, a GoZAP é a escolha indicada.

## Quando não escolher a GoZAP?

Não escolha a GoZAP se você precisa executar a API na própria infraestrutura ou requer a Cloud API oficial. Quem precisa de SLA contratual com multa ou de residência de dados específica deve pedir isso por escrito, porque o blog não publica SLA contratual. A GoZAP conecta nos modos Web e Mobile, ambos fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/uptime-kubernetes-pod-exclusivo-whatsapp-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Comparativos</category></item>
<item><title>Perfil e catálogo WhatsApp Business pela API</title><link>https://blog.gozap.dev/posts/whatsapp-business-perfil-catalogo-api/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/whatsapp-business-perfil-catalogo-api/</guid><description>Entenda as rotas GoZAP para perfil e catálogo do WhatsApp Business, veja a diferença entre recursos Mobile e Companion e conheça os corpos aceitos.</description><content:encoded><![CDATA[# Perfil e catálogo do WhatsApp Business com a API GoZAP

Entenda as rotas GoZAP para perfil e catálogo do WhatsApp Business, veja a diferença entre recursos Mobile e Companion e conheça os corpos aceitos.

**Resumo:** A API GoZAP divide operações de perfil comercial entre rotas `/business/*` e `/biz/*`. As rotas `/biz/mobile/*` são específicas do modo Mobile; as operações comuns de `/business/*` selecionam o cliente do modo conectado, que pode ser Mobile ou Companion.

No nível da conexão, a GoZAP oferece Web, com QR ou código de pareamento, e Mobile, com registro pelo número, sem celular ou emulador.

## Qual é a diferença entre `/biz/*` e `/business/*`?

Os prefixos representam grupos de operações diferentes. `/biz/mobile/*` reúne atualizações móveis de endereço, categorias, capa, descrição, e-mail, horários, ofertas, sites e campos incrementais do perfil. Já `/business/*` oferece consultas e atualizações gerais de perfil, recursos, nome verificado e catálogo.

| Rota | O que faz |
|---|---|
| `POST /biz/profile/fields` | Atualiza campos do perfil com um mapa de strings. |
| `POST /biz/mobile/address` | Atualiza endereço e coordenadas no perfil Mobile. |
| `POST /biz/mobile/categories` | Atualiza as categorias do perfil Mobile. |
| `POST /biz/mobile/description`, `/biz/mobile/email` | Atualiza descrição ou e-mail Mobile. |
| `POST /biz/mobile/hours` | Atualiza fuso horário e horários de funcionamento Mobile. |
| `POST /biz/mobile/offerings`, `/biz/mobile/websites` | Atualiza ofertas ou sites do perfil Mobile. |
| `POST /biz/mobile/cover` e `DELETE /biz/mobile/cover` | Define ou remove a capa do perfil Mobile. |
| `POST /business/get/profile` | Consulta o perfil comercial. |
| `POST /business/update/profile` | Atualiza campos gerais do perfil conectado. |
| `/business/get/categories` | Consulta categorias comerciais. |
| `/business/get/features`, `/business/get/privacy` | Consulta recursos e privacidade comerciais. |
| `POST /business/catalog/product`, `GET /business/catalog/products` | Cria produto no catálogo local ou lista produtos. |
| `POST /business/catalog/list`, `/business/catalog/info` | Consulta catálogo conectado e informações de um item. |

Todas as rotas desta tabela usam autenticação da instância: header `token`, query `?token=`, `Authorization: Bearer` ou campo JSON `token`. O ID da instância não substitui o token. Os exemplos a seguir usam o header `token`.

## Quais operações funcionam em Mobile e Companion?

O modo da instância é decisivo para as rotas móveis. Os handlers `/biz/mobile/*` que chamam o serviço LibGapsMobile exigem instância Mobile. Em Companion, essas operações respondem como não suportadas. Portanto, antes de desenhar um fluxo de atualização, identifique o modo conectado da instância.

As operações comuns do perfil em `/business/update/profile` selecionam o cliente do modo conectado, Mobile ou Companion. A rota de capa também escolhe uma bridge conforme o modo. Em contrapartida, `/business/get/verified_name` é Mobile-only. Isso não significa que todas as funções estejam disponíveis em ambos os modos: use a rota e o modo correspondentes à operação planejada.

O modo Mobile registra a conta pelo número e conecta pelo socket mobile do WhatsApp, sem celular, emulador ou aplicativo. O modo Companion vincula um dispositivo como WhatsApp Web. Veja a explicação sobre [modo Mobile sem celular](/posts/modo-mobile-sem-celular/) para entender essa escolha antes de organizar o cadastro comercial.

## Como atualizar o perfil comercial?

`POST /business/update/profile` aceita campos como descrição, endereço, e-mail, site, lista de sites, categorias, fuso horário, horários e coordenadas. Nenhum deles é obrigatório isoladamente. Um exemplo de atualização de descrição e site é:

```bash
curl -X POST 'https://SEU-DOMINIO/business/update/profile' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"description":"Atendimento de segunda a sexta","website":"https://empresa.example"}'
```

O campo singular `website` também é acrescentado a `websites`. Para e-mail, um valor vazio limpa o campo; quando o campo fica ausente, o valor anterior é preservado. A lista `websites` pode ser enviada vazia para limpá-la. Horários são enviados junto com o fuso horário, e coordenadas entram junto com o endereço. A resposta traz os resultados em `response`, `updated` e `failed`, o que permite tratar os itens processados e as falhas no cliente.

As atualizações móveis usam rotas separadas. Por exemplo, `/biz/mobile/description` recebe uma string de descrição e `/biz/mobile/email` uma string de e-mail. Para categorias, o corpo aceita `category_ids` como lista de strings ou seu alias `categories`; para horário, informe `timezone` e `business_hours`, uma lista com dia da semana, modo, horário de abertura e fechamento. Não há enums nem limites de tamanho publicados nos handlers consultados para esses campos.

## Como administrar produtos e catálogos?

A API distingue operações do catálogo local e do catálogo conectado. Para criar um produto local, `POST /business/catalog/product` exige `product_id` e `title`. Descrição, moeda, identificador de varejo, URL, imagem, JID do proprietário, valor em milésimos e quantidade de imagens são opcionais. Um exemplo mínimo válido:

```bash
curl -X POST 'https://SEU-DOMINIO/business/catalog/product' \
-H 'Content-Type: application/json' \
-H 'token: SEU_TOKEN' \
-d '{"product_id":"produto-001","title":"Café em grãos"}'
```

`GET /business/catalog/products` lista produtos locais sem corpo JSON. Para consultar o catálogo conectado, `/business/catalog/list` exige `jid` e aceita `after` como cursor opcional. `/business/catalog/info` exige `jid` e `id`; remover, mostrar ou ocultar um item conectado usa o `id` exigido pela respectiva operação. A rota local de exclusão recebe o identificador no caminho em `DELETE /business/catalog/product/{id}`.

Essas rotas descrevem operações de leitura e gerenciamento, mas não definem conteúdo de catálogo, revisão comercial ou sincronização com sistemas externos. Organize os identificadores do seu catálogo antes de enviar mudanças, e mantenha no seu próprio fluxo a relação entre produto e cadastro interno.

Para relacionar perfil comercial e comunicação, veja também [grupos, comunidades, canais e status](/posts/grupos-comunidades-canais-status-api-whatsapp/) e [API WhatsApp híbrida oficial e não oficial](/posts/api-whatsapp-hibrida-oficial-e-nao-oficial/). A escolha entre Mobile e Companion afeta as rotas que seu processo pode chamar.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua integração depende de chamadas `/biz/mobile/*` em uma instância Companion ou exige o gerenciamento de catálogo por uma rota que não aparece entre as operações descritas. A GoZAP conecta por Web ou Mobile, e ambos os modos ficam fora da API oficial da Meta. Nesse caso, o modo ou o contrato disponível pode não corresponder ao fluxo que você precisa.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.


Versão Markdown: https://blog.gozap.dev/posts/whatsapp-business-perfil-catalogo-api.md]]></content:encoded><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Guias</category></item>
<item><title>Chatwoot na GoZAP | Configuração e sincronização</title><link>https://blog.gozap.dev/posts/chatwoot-nativo-gozap/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/chatwoot-nativo-gozap/</guid><description>Veja a configuração do Chatwoot disponível na API GoZAP, as rotas de webhook e como acompanhar o estado da sincronização da sua instância.</description><content:encoded><![CDATA[# Como conectar uma instância GoZAP ao Chatwoot

Veja a configuração do Chatwoot disponível na API GoZAP, as rotas de webhook e como acompanhar o estado da sincronização da sua instância.

**Resumo:** A API GoZAP permite configurar o Chatwoot por instância, receber eventos por webhook e consultar o estado da sincronização. As opções disponíveis dependem das credenciais e do inbox configurado.

## O que a integração GoZAP com Chatwoot oferece?

A integração guarda os dados de conexão do Chatwoot, como URL, token de acesso e identificadores de conta e inbox. Também há opções para sincronização, tratamento de grupos e criação de conversas.

“Confira a configuração e o estado da sincronização antes de investigar o fluxo de mensagens.”

### Como consultar e salvar a configuração?

Use as rotas de configuração para ler e atualizar os dados da integração. A gravação pode validar a conexão e, quando a configuração automática está habilitada, provisionar um inbox de API no Chatwoot. Os principais campos de configuração incluem:

- `url` e `access_token`
- `account_id` e `inbox_id`
- `sync` e opções de tratamento de grupos/conversas

```http
GET /chatwoot/config
PUT /chatwoot/config
GET /chatwoot/sync/status
```

### Como chegam os eventos do Chatwoot?

A API disponibiliza `POST /chatwoot/webhook` para receber notificações do Chatwoot. A configuração associa esse webhook à instância correspondente.

O código confirma configuração, webhook e estado de sincronização. Ele não documenta handoff automático de um bot, retomada de fluxo após resolução ou relatórios consolidados de bot e agentes.

### Como acompanhar a sincronização?

Consulte `GET /chatwoot/sync/status`. A configuração da integração também mantém estado, cursor, erro e data da última sincronização.


Versão Markdown: https://blog.gozap.dev/posts/chatwoot-nativo-gozap.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Chatwoot</category></item>
<item><title>Webhook GoZAP no n8n | Configuração e eventos</title><link>https://blog.gozap.dev/posts/gozap-n8n-disparo/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/gozap-n8n-disparo/</guid><description>Configure um endpoint no n8n para receber eventos da GoZAP e gerencie os webhooks da instância pela API ou pelo node GoZAP, passo a passo.</description><content:encoded><![CDATA[# Como conectar os webhooks GoZAP a um fluxo n8n

Configure um endpoint no n8n para receber eventos da GoZAP e gerencie os webhooks da instância pela API ou pelo node GoZAP, passo a passo.

**Resumo:** Crie no n8n um endpoint receptor e cadastre essa URL na configuração de webhook da instância GoZAP. Inspecione os eventos recebidos antes de usar seus campos no fluxo.

## Como enviar eventos da GoZAP para o n8n?

A GoZAP envia chamadas HTTP POST para os destinos cadastrados. O pacote `n8n-nodes-gozap` também oferece operações para listar webhooks, substituir a configuração e consultar erros de entrega.

“Valide o payload observado no seu próprio fluxo antes de mapear os campos.”

### 1. Como preparar o endpoint no n8n?

Adicione ao workflow um nó capaz de receber chamadas HTTP e copie a URL apresentada pelo seu ambiente n8n. Use a URL de teste durante a inspeção; ao ativar o workflow, atualize a inscrição GoZAP para o endereço de produção informado pelo n8n.

### 2. Como cadastrar o webhook na GoZAP?

Consulte a configuração atual, selecione as categorias necessárias e salve a lista de webhooks para a instância.

```text
GET /webhook
POST /webhook
GET /webhook/errors
```

Também é possível executar as operações de webhook pelo recurso correspondente do pacote `n8n-nodes-gozap`. As rotas que seu fluxo consulta são:

```http
GET /webhook
POST /webhook
GET /webhook/errors
```

### 3. Como conferir os dados recebidos?

Gere um evento correspondente às categorias configuradas e examine a execução no n8n. Os nomes e a estrutura dos campos dependem do evento; use o payload observado na sua versão da API.

Confira os campos na execução real antes de usá-los em filtros, respostas ou gravações em outros serviços.

### 4. Como acompanhar erros de entrega?

A rota `GET /webhook/errors` lista erros registrados para a instância. As entregas são enviadas como HTTP POST com JSON. A assinatura HMAC pode ser ativada na configuração do webhook.


Versão Markdown: https://blog.gozap.dev/posts/gozap-n8n-disparo.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>n8n</category></item>
<item><title>Servidor MCP GoZAP | Ferramentas e escopos</title><link>https://blog.gozap.dev/posts/mcp-ia-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/mcp-ia-whatsapp/</guid><description>Entenda o endpoint MCP da GoZAP, os escopos de autorização e veja exemplos de ferramentas do catálogo para conectar assistentes de IA à sua instância.</description><content:encoded><![CDATA[# Conecte clientes MCP às ferramentas da API GoZAP

Entenda o endpoint MCP da GoZAP, os escopos de autorização e veja exemplos de ferramentas do catálogo para conectar assistentes de IA à sua instância.

**Resumo:** O servidor `gozap/mcp` expõe ferramentas da API GoZAP em `/mcp`. As ferramentas listadas para cada cliente são filtradas pelos escopos do JWT.

## Como conectar um cliente MCP à GoZAP?

A origem pública depende do ambiente onde o servidor está implantado. O caminho do serviço é `/mcp`; ele aceita JSON-RPC por HTTP e disponibiliza transporte SSE.

“Emita um token com os escopos necessários para as ações que o agente deve executar.”

### Como funciona o transporte?

No transporte SSE, o cliente abre `GET /mcp/` com `Accept: text/event-stream` e `Authorization: Bearer 

`. As chamadas JSON-RPC também podem ser enviadas por `POST /mcp/`. Por exemplo, para listar ferramentas, envie o método MCP `tools/list`:

```json
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
```

```text
GET /mcp/
POST /mcp/
POST /mcp/message
```

### Quais escopos existem?

O catálogo declara cinco escopos:

- `instance:status`
- `messages:send`
- `messages:read`
- `contacts:read`
- `groups:read`

O JWT determina quais ferramentas ficam disponíveis. Não há no catálogo atual um escopo `groups:manage`.

### Quais ferramentas posso chamar?

O catálogo inclui ferramentas de status da instância e envio de mensagens de texto e mídia. Cada ferramenta define seu caminho de API, schema de entrada e escopo.

```text
get_instance_status → GET /instance/status
send_text_message → POST /send/text
send_media_message → POST /send/media
```

### O que os registros de auditoria guardam?

O servidor grava o subdomínio, nome da ferramenta ou método, status, latência, erro e data de criação. O formato não registra todos os parâmetros da chamada.

O código não fixa o host público como `mcp.gozap.dev`. Use a origem fornecida para o ambiente MCP que você pretende acessar.


Versão Markdown: https://blog.gozap.dev/posts/mcp-ia-whatsapp.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>MCP</category></item>
<item><title>GoZAP Session Migrator | Migrar sessão do WhatsApp Web</title><link>https://blog.gozap.dev/posts/migrar-sessao-whatsapp/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/migrar-sessao-whatsapp/</guid><description>Conheça o fluxo da extensão Chrome e Edge para enviar uma sessão do WhatsApp Web a uma instância GoZAP em modo de migração.</description><content:encoded><![CDATA[# Como funciona a extensão GoZAP Session Migrator

Conheça o fluxo da extensão Chrome e Edge para enviar uma sessão do WhatsApp Web a uma instância GoZAP em modo de migração.

**Resumo:** O GoZAP Session Migrator é uma extensão Chrome e Edge Manifest V3 que envia a sessão autenticada do WhatsApp Web a uma instância GoZAP em modo de migração. Após o envio bem-sucedido, a extensão remove os dados locais do WhatsApp Web.

## Como funciona a migração de sessão?

O fluxo usa um JWT emitido para a instância. A extensão verifica a URL HTTPS incluída no token, pede acesso à origem da instância e envia a sessão para a API.

Sem sessão para migrar, o modo Mobile registra a conta direto pelo número, sem celular nem emulador. Veja o [guia do modo Mobile sem celular](/posts/modo-mobile-sem-celular/).

“Use o migrador somente em uma conta que você controla e trate o JWT como senha.”

### 1. Como preparar a instância?

No painel GoZAP, crie a instância em “Migrar sessão” e copie o JWT exibido para essa operação.

### 2. Como autorizar a extensão?

Entre no WhatsApp Web com a conta que você controla. Cole o JWT na extensão e permita o acesso à origem HTTPS da instância GoZAP quando o navegador solicitar.

### 3. Para onde a extensão envia a sessão?

A extensão envia um POST para a URL contida no JWT, com a credencial da instância no cabeçalho `token` e a sessão no corpo JSON. O caminho documentado é:

```http
POST /instance/connect/migration
Content-Type: application/json
```

Se não há uma sessão do WhatsApp Web para migrar, o modo Mobile registra a conta diretamente pelo número, sem celular nem emulador. Veja o [guia do modo Mobile](/posts/modo-mobile-sem-celular/).

```text
POST /instance/connect/migration
Content-Type: application/json
```

### 4. O que acontece com os dados locais?

Depois de uma resposta bem-sucedida, a extensão tenta limpar a sessão da página, remove cookies e dados locais do WhatsApp Web, incluindo `localStorage` e `IndexedDB`, e recarrega as abas encontradas.

A sessão equivale às credenciais da conta WhatsApp. O fluxo remove os dados locais após o envio; não conte com o uso simultâneo da mesma sessão no navegador.

A extensão é independente e não é afiliada, endossada ou patrocinada pelo WhatsApp ou pela Meta. Consulte as instruções e a política de privacidade do projeto antes de usá-la.


Versão Markdown: https://blog.gozap.dev/posts/migrar-sessao-whatsapp.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>WhatsApp Web</category></item>
<item><title>Endpoints de verificação Mobile na API GoZAP</title><link>https://blog.gozap.dev/posts/modo-mobile-sem-celular/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/modo-mobile-sem-celular/</guid><description>Conheça as rotas da API GoZAP para opções de verificação Mobile, códigos, dois fatores e consulta do estado de banimento da conta.</description><content:encoded><![CDATA[# Verificação e registro Mobile: rotas disponíveis na GoZAP

Conheça as rotas da API GoZAP para opções de verificação Mobile, códigos, dois fatores e consulta do estado de banimento da conta.

**Resumo:** O modo Mobile registra a conta pelo número e conecta a GoZAP diretamente ao socket mobile do WhatsApp, sem celular, emulador ou aplicativo instalado. As rotas abaixo cobrem etapas de verificação, autenticação e consulta de estado.

A GoZAP também oferece o modo Web, por QR ou código de pareamento. Os modos Web e Mobile são opções nativas de conexão.

No modo Mobile, não é preciso manter celular, emulador ou app clonado: a GoZAP conversa com o backend do WhatsApp pelo socket do WhatsApp mobile, sem executar o aplicativo em APK ou IPA. O serviço é leve e gerenciado pelo backend em Go. Isso difere do QR ou código de pareamento, que vincula a conta como dispositivo do WhatsApp Web; no Mobile, o registro é feito pelo número.

Para parear um dispositivo Web, a API tem `POST /device/pair/qr` e `POST /device/pair/code`. Esses caminhos têm objetivo diferente do ciclo Mobile descrito neste artigo.

## Quais rotas Mobile estão disponíveis?

As rotas abaixo cobrem as etapas de verificação e autenticação da instância. Os requisitos e resultados variam conforme o fluxo e o estado da conta.

“Siga o fluxo de verificação solicitado pela conta e confira o status retornado pela API.”

### Como consultar opções e tempos de espera?

Use as rotas de opções e espera para consultar informações disponibilizadas para a instância. A API também registra uma rota para obter dados de OTP de registro.

```text
GET /instance/mobile/verification-options
POST /instance/mobile/verification-options
GET /instance/mobile/verification-waits
GET /instance/mobile/registration-otp
```

### Como solicitar e validar um código?

A API oferece operações para solicitar um código e enviar o valor recebido para validação. Há também rotas separadas para a autenticação de dois fatores, por código e por e-mail.

```text
POST /instance/mobile/request-code
POST /instance/mobile/verify-code
POST /instance/mobile/two-factor
POST /instance/mobile/two-factor/email
POST /instance/mobile/two-factor/email/verify
```

### Como consultar um estado de banimento?

A API inclui rotas para consultar o estado de banimento e enviar uma apelação. A existência dessas operações não garante que uma restrição será removida.

```text
POST /instance/mobile/ban-status
POST /instance/mobile/appeal
```

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige exclusivamente a plataforma oficial da Meta. A GoZAP oferece Web por QR ou código de pareamento e Mobile com registro pelo número; ambos ficam fora da API oficial da Meta.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

O modo Mobile não transforma essas rotas em garantia de aprovação de cadastro, remoção de restrição ou continuidade da conta. Veja a [documentação da GoZAP](https://gozap.dev/docs) para os parâmetros e respostas da API.


Versão Markdown: https://blog.gozap.dev/posts/modo-mobile-sem-celular.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Mobile</category></item>
<item><title>Recursos documentados da API GoZAP</title><link>https://blog.gozap.dev/posts/o-que-so-a-gozap-tem/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/o-que-so-a-gozap-tem/</guid><description>Conheça os recursos documentados da API GoZAP, como chamadas, anti-delete, agendamento, proxy e grupos, descritos sem alegações de exclusividade.</description><content:encoded><![CDATA[# Recursos da API GoZAP confirmados no código

Conheça os recursos documentados da API GoZAP, como chamadas, anti-delete, agendamento, proxy e grupos, descritos sem alegações de exclusividade.

**Resumo:** A API GoZAP inclui operações para chamadas, mensagens recuperadas após exclusão, agendamento, proxy e grupos. A lista abaixo descreve rotas presentes no código, sem afirmar exclusividade diante de outros provedores.

## Quais recursos posso integrar?

Use cada rota conforme sua autenticação, seus parâmetros e os limites do ambiente. Os exemplos abaixo mostram os caminhos registrados pela API.

“Avalie as capacidades pelo contrato disponível e pelo caso de uso da sua integração.”

### Chamadas

A API registra operações para iniciar, aceitar, rejeitar e encerrar chamadas, além de rotas relacionadas a WebRTC, SIP e histórico. Por exemplo:

```http
POST /call/make
POST /call/webrtc
GET /call/history
``` Esses caminhos não comprovam transcrição automática em tempo real.

```text
POST /call/make
POST /call/accept
POST /call/reject
POST /call/end
POST /call/webrtc
GET /call/history
POST /call/sip/enable
```

### Mensagens recuperadas após exclusão

Há rotas para configurar o recurso anti-delete e listar, consultar ou apagar mensagens recuperadas. A disponibilidade de uma mensagem depende de ela ter sido observada e armazenada; isso não constitui um histórico garantido de toda mensagem excluída.

```text
GET /anti-delete/config
POST /anti-delete/config
GET /anti-delete/recovered
GET /anti-delete/recovered/&#123;id&#125;
```

### Agendamento de mensagens

O scheduler aceita mensagens agendadas ou com atraso, lista pendências e permite pausar, retomar e cancelar tarefas. O contrato usa destinatário, conteúdo e horário RFC3339 ou atraso em milissegundos.

```text
POST /scheduler/schedule
POST /scheduler/delay
GET /scheduler/pending
POST /scheduler/pause
POST /scheduler/resume
DELETE /scheduler/&#123;id&#125;
```

### Proxy por instância

A API permite consultar e atualizar a configuração do proxy e executar uma verificação de conectividade. As rotas não prometem rotação automática por blacklist ou um IP móvel exclusivo para cada instância.

```text
GET /instance/proxy
POST /instance/proxy
GET /instance/proxy/check
DELETE /instance/proxy
```

### Grupos

Há operações para criar e listar grupos, atualizar participantes e alterar propriedades do grupo. A API expõe esses recursos por rotas autenticadas.

```text
POST /group/create
GET /group/list
POST /group/updateParticipants
POST /group/updateName
POST /group/updateDescription
```

O código consultado confirma as rotas GoZAP descritas aqui, mas não fornece uma comparação com concorrentes. Por isso, este artigo não classifica esses recursos como exclusivos.


Versão Markdown: https://blog.gozap.dev/posts/o-que-so-a-gozap-tem.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>API GoZAP</category></item>
<item><title>Configuração de proxy por instância na GoZAP</title><link>https://blog.gozap.dev/posts/proxy-dinamico-mobile/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/proxy-dinamico-mobile/</guid><description>Veja como consultar, atualizar e testar a configuração de proxy de uma instância GoZAP pela API, com as rotas e os passos de cada operação.</description><content:encoded><![CDATA[# Como consultar e configurar o proxy de uma instância

Veja como consultar, atualizar e testar a configuração de proxy de uma instância GoZAP pela API, com as rotas e os passos de cada operação.

**Resumo:** Cada instância GoZAP tem um proxy móvel exclusivo, de TIM ou Claro, incluso no plano e sem acréscimo. Isso isola o IP de cada instância. A API também permite consultar, atualizar, remover e testar a configuração de proxy.

O proxy móvel individual já está incluído no plano de cada instância. Como cada instância usa seu próprio proxy, o IP fica isolado por instância. No Starter, R$ 200,00 por mês cobrem até 100 instâncias e seus 100 proxies, o que corresponde a R$ 2,00 por instância com proxy quando se divide o pacote por 100. Não há uma tarifa de proxy somada a esse valor.

Além do proxy incluído, cada instância tem um modo de proxy próprio: `dynamic`, `global`, `custom` ou `managed`. O modo `dynamic` inicia o proxy dedicado da instância.

## Como configurar o proxy de uma instância?

A configuração é associada à instância e pode ser consultada pela API. Os quatro modos são:

| Modo | O que faz |
|---|---|
| `dynamic` | Inicia um proxy dedicado para a instância. |
| `global` | Usa o proxy global configurado na plataforma. |
| `custom` | Usa uma URL de proxy que você informa para a instância. |
| `managed` | Usa o proxy gerenciado da plataforma. |

“Depois de uma alteração, leia a configuração e verifique a conectividade da instância.”

### Como consultar a configuração?

Use a rota autenticada de leitura para obter a configuração pública de proxy associada à instância.

```text
GET /instance/proxy
```

### Como atualizar ou remover um proxy customizado?

Envie a configuração para a rota de atualização. No modo `custom`, o corpo recebe uma URL de proxy. A rota de remoção pode restaurar o modo `dynamic` ou `global`, conforme o parâmetro e as opções habilitadas no serviço.

```text
POST /instance/proxy
GET /instance/proxy/check
DELETE /instance/proxy
```

### O que a verificação informa?

`GET /instance/proxy/check` solicita uma verificação de egress para a configuração atual e retorna o resultado produzido pelo serviço. A rota não documenta troca automática de IP por blacklist ou por limiar de latência.

## Quando não escolher a GoZAP

Não escolha a GoZAP se sua política exige exclusivamente a plataforma oficial da Meta ou se é obrigatório usar um proxy que sua equipe contrata, hospeda e controla fora do serviço GoZAP. A conta pode conectar por Web, com QR ou código, ou por Mobile, com registro pelo número; os dois modos ficam fora da API oficial da Meta. Veja também o guia de [modo Mobile sem celular](/posts/modo-mobile-sem-celular/). A API não promete resultado específico de conexão por ter proxy configurado.

Toda API não oficial opera fora dos termos do WhatsApp e tem risco de restrição; a GoZAP não garante contra bloqueio.

O isolamento de IP por instância não elimina regras ou limites do WhatsApp. Abra a [documentação de proxies](https://gozap.dev/docs/proxies) para os parâmetros e as operações disponíveis.


Versão Markdown: https://blog.gozap.dev/posts/proxy-dinamico-mobile.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Proxy</category></item>
<item><title>Webhooks e SSE na API GoZAP | Eventos e segurança</title><link>https://blog.gozap.dev/posts/webhooks-sse-gozap/</link><guid isPermaLink="true">https://blog.gozap.dev/posts/webhooks-sse-gozap/</guid><description>Entenda as rotas de webhook e SSE da GoZAP, a assinatura HMAC opcional e os limites de entrega, para consumir eventos da sua instância com segurança.</description><content:encoded><![CDATA[# Como consumir webhooks e eventos SSE da GoZAP

Entenda as rotas de webhook e SSE da GoZAP, a assinatura HMAC opcional e os limites de entrega, para consumir eventos da sua instância com segurança.

**Resumo:** A API GoZAP oferece webhooks HTTP configuráveis por instância e um stream SSE para eventos ao vivo. HMAC é opcional na configuração de webhook; o SSE é best-effort e pode descartar eventos para consumidores lentos.

## Como consumir eventos da GoZAP?

Webhooks enviam requisições POST com JSON para destinos cadastrados. SSE mantém uma conexão aberta e transmite eventos disponíveis enquanto o cliente está conectado.

“Use webhooks para entregas persistentes e considere SSE uma transmissão ao vivo, sujeita a perda.”

### Como configurar um webhook?

Consulte e atualize a lista de webhooks da instância. A API também permite consultar os erros registrados para essas entregas.

```text
GET /webhook
POST /webhook
GET /webhook/errors
```

### Quando a requisição é assinada?

A assinatura HMAC não é aplicada automaticamente a todos os webhooks. O modo de segurança pode ser `none` ou `hmac_sha256`. Quando HMAC está habilitado, a requisição inclui `X-GoZap-Signature` e `X-GoZap-Timestamp`; a assinatura usa o timestamp, um ponto e o payload original. A composição assinada é:

```text
timestamp + "." + payload_original
```

Implemente a validação de acordo com o modo configurado e calcule o HMAC sobre os bytes originais do payload junto ao timestamp recebido.

### Como funciona o stream SSE?

A API disponibiliza `GET /sse` com autenticação compatível com a instância ou com o widget de chamadas. O hub mantém um buffer de 32 eventos por assinante; se ele encher, os eventos seguintes são descartados. O servidor não oferece replay por `Last-Event-ID`.

### Webhooks e SSE têm a mesma garantia de entrega?

Não. O código do hub SSE o define como best-effort. A fila de webhooks mantém tentativas configuradas e registra erros, mas não declara uma garantia universal `at-least-once` nem um `eventId` comum a todos os eventos. Se seu processamento precisar tolerar repetição, escolha uma chave idempotente baseada nos campos estáveis do evento recebido.


Versão Markdown: https://blog.gozap.dev/posts/webhooks-sse-gozap.md]]></content:encoded><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><dc:creator>GoZAP</dc:creator><category>Webhooks</category></item></channel></rss>