Apache-2.0 · Atendente IA, grupos e MCP disponíveis

A API de WhatsApp que roda
onde você quiser

O mesmo binário no seu computador, no seu servidor ou na nuvem gerenciada. Um processo por número, supervisionado, com uma fila que respeita o ritmo de um humano.

Não oficial. Sem afiliação com o WhatsApp ou a Meta.

POST /v1/instances/{id}/messages
curl -X POST "localhost:8787/v1/instances/$ID/messages?wait=true" \
  -H "Authorization: Bearer $TOK" \
  -d '{
    "to": "5511999999999",
    "type": "text",
    "text": "Seu pedido saiu para entrega!",
    "client_message_id": "pedido-123"
  }'
const res = await fetch(
  `http://localhost:8787/v1/instances/${id}/messages?wait=true`,
  {
    method: "POST",
    headers: { Authorization: `Bearer ${token}` },
    body: JSON.stringify({
      to: "5511999999999",
      type: "text",
      text: "Seu pedido saiu para entrega!",
      client_message_id: "pedido-123",
    }),
  },
);
const msg = await res.json(); // { id, status: "sent", wa_message_id }
import requests

r = requests.post(
    f"http://localhost:8787/v1/instances/{instance_id}/messages",
    params={"wait": "true"},
    headers={"Authorization": f"Bearer {token}"},
    json={
        "to": "5511999999999",
        "type": "text",
        "text": "Seu pedido saiu para entrega!",
        "client_message_id": "pedido-123",
    },
)
print(r.json()["status"])  # "sent"
HTTP/1.1 200 OK

{
  "id": "msg_a41c9e07d2b35f68",
  "client_message_id": "pedido-123",
  "wa_message_id": "3EB0A1B2C3D4E5F6A7B8C9",
  "chat": "[email protected]",
  "from_me": true,
  "type": "text",
  "status": "sent"
}

Distribuição

Um motor, três formas de rodar

Comece no seu computador e leve para um servidor sem mudar uma linha da sua integração.

Recursos

Tudo o que uma integração séria precisa

Recursos no nível das APIs de WhatsApp comerciais, num motor que você pode ler, rodar e auditar.

Várias instâncias

Um número de WhatsApp por instância, cada uma com token próprio. Crie, pare, reinicie e apague pela API.

QR ou código por telefone

Pareie escaneando o QR (JSON ou PNG) ou digitando no celular um código gerado pela API.

Supervisor com auto-restart

Cada número roda num processo isolado. Heartbeat a cada 10s, restart com backoff e circuit breaker. Crash de um worker não derruba os outros.

Envio e recebimento

Fila persistente por instância, modo síncrono com ?wait=true, idempotência por client_message_id, chats, histórico e confirmações de leitura.

Mídia

Imagem, vídeo, áudio (inclusive mensagem de voz), documento e reações. Mídia recebida sob demanda, com URLs assinadas temporárias.

Anti-ban por padrão

Ritmo com variação aleatória, rampa para números novos, janela de envio para contatos frios e verificação do número antes do primeiro envio.

Proxy por instância

HTTP, HTTPS ou SOCKS5 por número, fixo durante a sessão. Se o proxy cai, a instância espera: nunca vaza pela conexão direta.

Webhooks e SSE

Eventos com envelope único, assinados com HMAC, retry por 24h e dead-letter, além de streams SSE ao vivo.

MCP para IA

Claude, ChatGPT e outros clientes leem conversas e enviam mensagens por 40 ferramentas MCP, sempre pela mesma fila anti-ban. Atendente IA embutido ou hook para o seu agente.

Amplitude

O que já existe

Tudo o que está marcado como disponível já está no motor, com página na documentação. O que ainda está em construção está no roadmap.

Ver o roadmap completo Migrar de outra API

Por que open source

LiteZap vs APIs proprietárias

Os mesmos recursos que você espera de uma API comercial, sem abrir mão do controle.

LiteZapAPI proprietária típica
Código-fonte Aberto, Apache-2.0Fechado
Onde roda Seu PC, seu servidor ou nuvem LiteZapSó na nuvem do fornecedor
Seus dados Na sua pasta data/, sob seu controleNos servidores do fornecedor
Trocar de hospedagem Mesma API; copie a pasta de dadosReescrever a integração
Anti-ban Ritmo, rampa e janela configuráveis e auditáveisRegras opacas
Eventos Webhooks assinados, retry de 24h, dead-letter e SSEVaria; assinatura e reenvio nem sempre existem
Custo Grátis no self-host; nuvem opcionalMensalidade por instância

Arquitetura

Um supervisor, um worker por número

litezap serve expõe a API REST, guarda tudo num SQLite local e cuida da fila de envio. Cada número conectado ganha seu próprio processo litezap worker, falando com o supervisor por gRPC num socket local.

  • Se um worker trava ou morre, só aquele número reconecta, sem novo QR.
  • Se o supervisor morre, os workers encerram sozinhos: nada de processo órfão.
  • Mensagens na fila sobrevivem a restarts e saem quando o número volta.
Como funcionam as instâncias
Seu sistema chama a API REST do litezap serve, que gerencia fila, banco SQLite e um processo worker por número; cada worker conecta ao WhatsApp, opcionalmente por um proxy. Seu sistemabackend · automações · CRMREST /v1 · Bearer tokenlitezap servesupervisorAPI RESTFila + ritmoManagerSQLite · data/litezap.dbMídia · URLs assinadasgRPC · socket localworkernúmero Aworkernúmero Bworkernúmero CproxyWhatsApp
Um processo por número: um crash afeta só aquele número, que volta sozinho sem novo QR.

Preços

Grátis para rodar. Nuvem quando você quiser.

Self-hosted

Grátis

Para sempre, Apache-2.0. Rode quantas instâncias o seu hardware aguentar.

  • Todos os recursos do motor
  • No seu PC ou no seu servidor
  • Código aberto e auditável
Instalar

Conecte seu primeiro número hoje

Compile, suba o servidor e envie a primeira mensagem em poucos minutos.