Quickstart
Neste guia você sobe o servidor na sua máquina, conecta um número de teste e envia uma mensagem para um segundo número. Leva uns 5 minutos.
Você precisa de: Go (a versão do go.mod), git, curl, jq, um celular com o número de teste no WhatsApp
e um segundo número (o contato) para conversar.
-
Compile e suba o servidor
Janela do terminal git clone https://github.com/douglasdf99/litezap.git && cd litezapgo build -o litezap ./cmd/litezap./litezap serveO servidor escuta em
127.0.0.1:8787e cria a pastadata/. Na primeira execução ele gera o token admin emdata/admin_token. -
Crie uma instância
Em outro terminal, use o token admin para criar a instância. Guarde o
IDe oTOK: o token da instância só aparece nesta resposta.Janela do terminal ADMIN=$(cat data/admin_token)RESP=$(curl -s -X POST localhost:8787/v1/instances \-H "Authorization: Bearer $ADMIN" -d '{"name":"teste"}')ID=$(echo "$RESP" | jq -r .instance.id)TOK=$(echo "$RESP" | jq -r .token) -
Conecte o número
Janela do terminal curl -s "localhost:8787/v1/instances/$ID/qr?format=png" \-H "Authorization: Bearer $TOK" -o qr.png && open qr.png # Linux: xdg-openNo celular: WhatsApp > Aparelhos conectados > Conectar um aparelho, e escaneie. O QR muda a cada poucos segundos; se expirar, rode o comando de novo.
Janela do terminal curl -s -X POST localhost:8787/v1/instances/$ID/pair-phone \-H "Authorization: Bearer $TOK" -d '{"phone":"5511999999999"}'No celular: Aparelhos conectados > Conectar um aparelho > Conectar com número de telefone, e digite o
code. -
Confira o estado
Janela do terminal curl -s localhost:8787/v1/instances/$ID -H "Authorization: Bearer $TOK"Repita até ver
"state":"connected"e o campophone. Os estados mudam de forma assíncrona. -
Libere a janela de envio (só para o teste)
A primeira mensagem para um contato que não falou com você nas últimas 24h só sai dentro da janela de envio (padrão 08:00–20:00 no fuso da instância). Para testar a qualquer hora, desligue a janela:
Janela do terminal curl -s -X PUT localhost:8787/v1/instances/$ID/settings \-H "Authorization: Bearer $TOK" -d '{"send_window":{"start":"","end":""}}'Em produção, prefira manter a janela. Veja janela de envio.
-
Envie a primeira mensagem
Janela do terminal curl -s -X POST "localhost:8787/v1/instances/$ID/messages?wait=true&timeout=90s" \-H "Authorization: Bearer $TOK" \-d '{"to":"5511988887777","type":"text","text":"Olá do LiteZap!"}'Logo depois de conectar, a fila espera uma carência de 15 a 30 segundos antes do primeiro envio, e antes de falar com um número novo o LiteZap confere se ele tem WhatsApp. Por isso o
timeout=90s. A resposta200traz"status":"sent"e owa_message_id. Se vier202com"status":"queued", a mensagem continua na fila: consulteGET /v1/instances/$ID/messages/<id>. -
Leia a resposta do contato
Responda pelo celular do contato e liste os chats:
Janela do terminal curl -s localhost:8787/v1/instances/$ID/chats -H "Authorization: Bearer $TOK" | jqcurl -s "localhost:8787/v1/instances/$ID/chats/<jid>/messages" -H "Authorization: Bearer $TOK" | jqUse o
jidque aparece emGET /chats, não o número que você digitou: no Brasil, o WhatsApp pode guardar o número com ou sem o 9º dígito.
Teste a resiliência
Seção intitulada “Teste a resiliência”- Crash do worker:
kill -9 $(cat data/run/$ID.pid). Em poucos segundos o worker volta aconnected, sem novo QR. - Restart do servidor: pare o
serve(Ctrl+C) e suba de novo. A instância reconecta e mensagens que estavam na fila são enviadas. - Logout:
POST /v1/instances/$ID/logoutleva o estado alogged_oute o aparelho some da lista no celular.
E agora?
Seção intitulada “E agora?”- Entenda a fila e o ritmo antes de enviar em volume.
- Veja todas as rotas na referência da API.
- Vai rodar num servidor? Siga o guia self-hosted.

