EditaCódigo API — Documentação
Instalação
O servidor Node.js (que roda no seu VPS) e o instalador ficam disponíveis publicamente no GitHub:
github.com/edita-codigo/editacodigo-api-publica
Todas as chamadas seguem o mesmo formato: POST / no domínio/porta onde a API está instalada, com JSON no corpo:
{
"token": "SUA_CHAVE_API_AQUI",
"action": "NomeDaAcao",
"usuario": "usuario1",
"message": { }
}
token é a sua chave de API (veja em "Meu Token") — obrigatório em toda requisição. Se a chave não for enviada ou não existir no banco, o servidor bloqueia a chamada com erro 401, sem nem processar a ação. usuario identifica a instância/sessão do WhatsApp. message só é necessário nas ações que exigem parâmetros extras.
Guia rápido da API Gratuita GRÁTIS
Este guia mostra o caminho mínimo para usar a API Gratuita do EditaCódigo. Ela envia mensagens de texto, recebe mensagens pelo webhook e permite consultar o estado da instância.
Nos exemplos abaixo, troque https://seu-dominio.com:443/ pelo seu domínio/porta e use o seu token real no lugar de SUA_CHAVE_API_AQUI. Se for compartilhar o código com outra pessoa, use nomes fictícios como TOKEN_EXEMPLO e SEU_DOMINIO.
1. Instalar a API no seu servidor
Comece pela seção Instalação, que aponta para o GitHub da API Pública. Se quiser gerar um comando pronto, use o Instalador Automático.
- Informe a porta onde a API vai rodar, normalmente
443. - Informe o
WEBHOOK_MENSAGENS, que é a URL do seu sistema para receber mensagens. - Depois de instalar, teste o domínio e a porta antes de criar a instância.
2. Criar a instância e ler o QR code
Use AbrirInstancia para iniciar a sessão do WhatsApp. O campo usuario identifica essa sessão.
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "AbrirInstancia", "usuario": "usuario1" }'Depois, chame GerarQrcode para pegar a string do QR code e mostrá-la no seu painel. A explicação completa de como transformar essa string em imagem está em Instância.
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "GerarQrcode", "usuario": "usuario1" }'3. Enviar mensagem de texto
Na API Gratuita, o envio disponível é mensagem de texto. O telefone deve ser enviado no formato numérico com DDI e DDD, como 5511999999999.
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarMsg",
"usuario": "usuario1",
"message": { "telefone": "5511999999999", "msg": "Olá!" }
}'4. Receber mensagens por webhook
Quando chega uma mensagem no WhatsApp conectado, a API envia um POST para o seu WEBHOOK_MENSAGENS. O seu endpoint precisa responder rápido e retornar sucesso.
# Isso NÃO é uma chamada que você faz — é o formato que o NOSSO servidor
# envia pro SEU webhook (WEBHOOK_MENSAGENS) toda vez que chega mensagem.
# Exemplo simulando o envio pro seu próprio endpoint de teste:
curl -X POST https://seusite.com/webhook/recebe.php \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"telefone_resolvido": true,
"jid_original": "5511999999999@s.whatsapp.net",
"grupo": null,
"texto": "oi",
"media": null,
"id_mensagem": "ABCDEF123456",
"usuario": "usuario1",
"timestamp": 1234567890,
"tipo": "chat",
"nomeContato": "Fulano",
"fotoPerfilUrl": null
}'5. Consultar o estado das instâncias
Use StatusInstancias para verificar as instâncias e seus status. Para consultas de contatos, chats e foto de perfil, veja a seção Consultas.
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "StatusInstancias" }'6. Erros comuns e como resolver
- Instância desconectada: gere o QR code novamente em Instância e escaneie pelo WhatsApp.
- Número inválido: revise o campo
telefone. Use apenas números, com DDI e DDD. - Webhook sem resposta: confirme se a URL configurada no
WEBHOOK_MENSAGENSestá online, aceitaPOSTcom JSON e retorna uma resposta simples. - Porta sem acesso: confirme a porta usada na instalação, o firewall da VPS e o teste em
https://seu-dominio:PORTA/status.
7. Quando passar para a API VIP/Premium
Use a API VIP/Premium quando precisar enviar mídia, enquetes, presença, recursos de grupos ou estrutura privada com mais recursos. Veja os planos em editacodigo.com.br/inicio/api.php.
Instalador Automático
Preencha os dados abaixo e receba um comando único pra colar no terminal — funciona em VPS Linux (Ubuntu 22.04/24.04), Windows ou macOS. Ele baixa o instalador, instala tudo e já sobe a API configurada.
Instância GRÁTIS
AbrirInstancia — abre/conecta a sessão do WhatsApp
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "AbrirInstancia", "usuario": "usuario1" }'GerarQrcode — retorna o QR code atual
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "GerarQrcode", "usuario": "usuario1" }' Recomendação: o campo qrcode retornado é só o texto/string do QR code, não uma imagem. Pra transformar em imagem escaneável, use uma API online gratuita de QR code dinâmico, tipo o goqr.me, passando a string como parâmetro:
https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=SEU_QRCODE_AQUI_URL_ENCODED # Exemplo direto no HTML: <img src="https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=SEU_QRCODE_AQUI_URL_ENCODED">
Outras opções equivalentes: Google Charts QR (legado) ou gerar localmente com bibliotecas como qrcode (Node/Python/PHP), sem depender de API externa.
RegenerarQrcode — força um novo QR code
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "RegenerarQrcode", "usuario": "usuario1" }'FecharInstancia — fecha sem apagar a sessão
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "FecharInstancia", "usuario": "usuario1" }'DestruirInstancia — fecha e apaga a sessão salva
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "DestruirInstancia", "usuario": "usuario1" }'StatusInstancias — lista todas as instâncias e status
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "StatusInstancias" }'Envio de Texto GRÁTIS
EnviarMsg — envia mensagem de texto
Única forma de envio de conteúdo disponível na API Pública.
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarMsg",
"usuario": "usuario1",
"message": { "telefone": "5511999999999", "msg": "Olá!" }
}'Recebimento de Mensagens GRÁTIS
A API Pública captura tudo que chega no WhatsApp (texto, imagem, vídeo, áudio, ptt, documento, sticker) — mesmo só podendo enviar texto. Toda mensagem recebida é enviada via POST para o seu WEBHOOK_MENSAGENS.
Como chega o número de telefone
telefone— número já limpo, ex:5511999999999telefone_resolvido—truequando o número real foi identificado;falsequando o WhatsApp mandou um ID interno (@lid) impossível de resolver — nesse caso usejid_originalcomo identificadorjid_original— identificador completo original (5511999999999@s.whatsapp.net)grupo— vem preenchido com o ID do grupo quando a mensagem veio de um grupo
Como chega a mídia (imagem, vídeo, áudio, documento, sticker)
O campo media vem null para mensagens de texto puro, e preenchido assim para os outros tipos:
{ "type": "image", "mimetype": "image/jpeg", "data": "base64..." }
type pode ser: image, video, audio, ptt (áudio de voz), document, sticker. O data vem em base64 — você decodifica e salva onde quiser.
Como montar seu endpoint receptor
# Isso NÃO é uma chamada que você faz — é o formato que o NOSSO servidor
# envia pro SEU webhook (WEBHOOK_MENSAGENS) toda vez que chega mensagem.
# Exemplo simulando o envio pro seu próprio endpoint de teste:
curl -X POST https://seusite.com/webhook/recebe.php \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"telefone_resolvido": true,
"jid_original": "5511999999999@s.whatsapp.net",
"grupo": null,
"texto": "oi",
"media": null,
"id_mensagem": "ABCDEF123456",
"usuario": "usuario1",
"timestamp": 1234567890,
"tipo": "chat",
"nomeContato": "Fulano",
"fotoPerfilUrl": null
}'Consultas GRÁTIS
BuscarContatos — lista os contatos da instância
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "BuscarContatos", "usuario": "usuario1" }'BuscarChats — lista as conversas recentes
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "BuscarChats", "usuario": "usuario1", "message": { "limite": 20 } }'GetConversationContacts — contatos das conversas privadas
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "GetConversationContacts", "usuario": "usuario1" }'GetProfilePic — foto de perfil de um contato
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "GetProfilePic",
"usuario": "usuario1",
"message": { "telefone": "5511999999999" }
}'Mídia PRIVADA
EnviarMidia — imagem, vídeo, áudio, ptt, documento ou sticker
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarMidia",
"usuario": "usuario1",
"message": {
"telefone": "5511999999999",
"tipo": "image",
"arquivo": "https://exemplo.com/foto.jpg",
"legenda": "Legenda opcional"
}
}'tipo aceita: image, video, audio, ptt, document, sticker. arquivo aceita URL, base64 puro ou com prefixo data:....
Enquetes PRIVADA
EnviarEnquete — envia uma enquete (poll)
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarEnquete",
"usuario": "usuario1",
"message": {
"telefone": "5511999999999",
"pergunta": "Qual sua cor favorita?",
"opcoes": ["Azul", "Verde", "Vermelho"],
"permiteMultiplas": false
}
}'Presença PRIVADA
EnviarDigitando / PararDigitando / EnviarGravando
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarDigitando",
"usuario": "usuario1",
"message": { "telefone": "5511999999999" }
}'
# Outras ações do mesmo grupo: "PararDigitando" e "EnviarGravando"Grupos PRIVADA
ListarGrupos — lista os grupos do WhatsApp
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{ "token": "SUA_CHAVE_API_AQUI", "action": "ListarGrupos", "usuario": "usuario1" }'EnviarMsgGrupo — envia mensagem para um grupo
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarMsgGrupo",
"usuario": "usuario1",
"message": { "idGrupo": "1234567890-1234567890@g.us", "msg": "Olá grupo!" }
}'EnviarMsgGrupoMencoes — envia mencionando todos (invisível)
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "EnviarMsgGrupoMencoes",
"usuario": "usuario1",
"message": { "idGrupo": "1234567890-1234567890@g.us", "msg": "Aviso importante!" }
}'GetGroupParticipants — extrai os participantes de um grupo
curl -X POST https://seu-dominio.com:443/ \
-H "Content-Type: application/json" \
-d '{
"token": "SUA_CHAVE_API_AQUI",
"action": "GetGroupParticipants",
"usuario": "usuario1",
"message": { "idGrupo": "1234567890-1234567890@g.us" }
}'Resumo comparativo
| Recurso | Pública | Privada |
|---|---|---|
| Abrir/fechar/destruir instância, QR code, status | ✓ | ✓ |
| Enviar texto | ✓ | ✓ |
| Receber texto e mídia (webhook) | ✓ | ✓ |
| Buscar contatos / chats / foto de perfil | ✓ | ✓ |
| Enviar mídia (imagem, vídeo, áudio, documento, sticker) | ✗ | ✓ |
| Enviar enquete | ✗ | ✓ |
| Indicadores de digitando/gravando | ✗ | ✓ |
| Grupos (listar, enviar, participantes) | ✗ | ✓ |
Referência para IA (LLM) BÁSICA — GRÁTIS
Cole o texto abaixo em qualquer IA (ChatGPT, Claude, Gemini etc.) e peça pra ela gerar o painel, script ou integração que você quiser usando essa API. É um resumo compacto de todas as funções — sem passos de instalação.
Você está vendo a versão básica (só API Pública). Quem tem o plano Premium recebe a referência completa, com mídia, enquetes, presença e grupos também.
# INSTRUÇÕES PARA A IA — LEIA ANTES DE GERAR QUALQUER CÓDIGO
Você recebeu a documentação da EditaCódigo WhatsApp API — versão Pública
(grátis). Antes de escrever qualquer código, sistema ou painel, faça estas
perguntas ao usuário, NESSA ORDEM, uma de cada vez:
1) "Você quer usar TODAS as funções disponíveis, ou só algumas específicas?"
- Se TODAS: monte o sistema já usando todas as ações abaixo, sem precisar
perguntar mais nada sobre escopo.
- Se ALGUMAS: liste as ações abaixo (organizadas por categoria) e pergunte
quais especificamente o usuário quer incluir.
2) "Em qual linguagem de programação você quer o sistema?" (ex: PHP, Python,
Node.js/JavaScript, outra)
Só depois de ter as respostas, gere a estrutura completa do sistema (painel,
script, bot, o que o usuário pediu), implementando exatamente as ações
escolhidas.
IMPORTANTE — a API não é só "enviar requisição e receber resposta". Ela
também EMPURRA dados pro sistema do usuário via webhook. Por isso, todo
painel/sistema gerado precisa incluir OBRIGATORIAMENTE estes dois arquivos
rodando no servidor do usuário (não no servidor da API):
1. Um arquivo receptor de mensagens (ex: "recebe.php", "recebe.py",
"recebe.js" — a URL dele é o WEBHOOK_MENSAGENS configurado na instalação).
Ele recebe POST toda vez que uma mensagem chega no WhatsApp (ver seção
"Recebimento de mensagens" abaixo pro formato exato). É aqui que o painel
salva as mensagens recebidas, atualiza conversas, etc.
2. Um arquivo de validação/cron (ex: "cron.php", "cron.py", "cron.js" — a
URL dele é o WEBHOOK_VALIDATE). Ele recebe POST a cada 60 segundos com
`{ "token": "...", "usuarios": ["usuario1", ...] }` — é só confirmar
recebimento com HTTP 200. Serve pra rotina de validação periódica da
licença.
Sem esses dois arquivos existindo e publicados numa URL acessível, a
instalação fica incompleta — o usuário não vai receber nada.
---
# EditaCódigo WhatsApp API — Pública — Referência de Funções
Todas as chamadas são: POST https://SEU-DOMINIO:PORTA/
Header: Content-Type: application/json
Body padrão: { "token": "SUA_CHAVE_API", "action": "NomeDaAcao", "usuario": "id_da_instancia", "message": { ... } }
"token" é a chave de API do cliente (obrigatório em TODA requisição). Se não
for enviado ou não existir cadastrado, o servidor responde 401 e bloqueia a
chamada completamente, sem processar a ação.
"usuario" identifica a instância/sessão do WhatsApp. "message" só é necessário
quando a ação exige parâmetros extras. A resposta é sempre JSON.
Formato de erro (qualquer ação pode retornar isso em vez do resultado normal):
{ "error": "mensagem descrevendo o erro" }
Erro de autenticação (token ausente ou inválido):
{ "error": "❌ Chave de API inválida ou não enviada" } (HTTP 401)
## Instância
- AbrirInstancia { token, usuario } -> abre/conecta a sessão do WhatsApp
- GerarQrcode { token, usuario } -> retorna o QR code atual pra escanear
DICA: "qrcode" é só texto. Pra virar imagem: monte a URL
https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=<qrcode URL-encoded>
e use num <img src="...">.
- RegenerarQrcode { token, usuario } -> força a geração de um novo QR code
- FecharInstancia { token, usuario } -> fecha sem apagar a sessão salva
- DestruirInstancia { token, usuario } -> fecha e apaga a sessão salva
- StatusInstancias { token } -> lista todas as instâncias ativas e seus status
## Envio de texto
- EnviarMsg { token, usuario, message: { telefone, msg } }
-> envia mensagem de texto (única forma de envio nessa versão)
telefone: string só com dígitos, ex "5511999999999"
## Recebimento de mensagens (webhook)
A API captura TUDO que chega no WhatsApp (texto, imagem, vídeo, áudio, ptt,
documento, sticker) e envia via POST pro seu WEBHOOK_MENSAGENS, mesmo que só
consiga ENVIAR texto. Formato do payload recebido:
{
"telefone": "5511999999999",
"telefone_resolvido": true,
"jid_original": "5511999999999@s.whatsapp.net",
"grupo": null,
"texto": "oi",
"media": null,
"id_mensagem": "ABCDEF123456",
"usuario": "usuario1",
"timestamp": 1234567890,
"tipo": "chat",
"nomeContato": "Fulano",
"fotoPerfilUrl": null
}
- media vem null pra texto puro, e preenchido assim pros outros tipos:
{ "type": "image", "mimetype": "image/jpeg", "data": "base64..." }
type pode ser: image, video, audio, ptt, document, sticker.
## Consultas
- BuscarContatos { token, usuario } -> lista os contatos da instância
- BuscarChats { token, usuario, message: { limite } } -> lista conversas recentes
- GetConversationContacts { token, usuario } -> contatos das conversas privadas
- GetProfilePic { token, usuario, message: { telefone } } -> foto de perfil de um contato
## Não disponível nessa versão (só no plano Premium)
Envio de mídia, enquetes, indicadores de digitando/gravando e grupos. Se o
usuário pedir alguma dessas funções, avise que precisa do plano Premium da
EditaCódigo (editacodigo.com.br).
## Instalação (comando pronto — Ubuntu 22.04/24.04, root/sudo)
Peça ao usuário: TOKEN (a chave de API dele, em "Meu Token"), a URL de
WEBHOOK_MENSAGENS (o endpoint do sistema dele que recebe as mensagens) e a
PORTA (padrão 443). Com isso, monte o comando abaixo substituindo os valores:
curl -o instalador.sh "https://raw.githubusercontent.com/edita-codigo/editacodigo-api-publica/master/INSTALADOR/instaladorv2.txt" && \
sed -i 's/\r$//' instalador.sh && \
chmod +x instalador.sh && \
PORTA="443" \
TOKEN="TOKEN_DO_USUARIO" \
WEBHOOK_FUNCOES="https://api.editacodigo.com.br/publica/api/index.php" \
WEBHOOK_MENSAGENS="URL_DO_WEBHOOK_DO_USUARIO" \
WEBHOOK_VALIDATE="URL_DO_WEBHOOK_VALIDATE_DO_USUARIO" \
./instalador.sh
Depois de rodar: confirme com `pm2 status` e teste em `https://dominio:PORTA/status`.
Instalar via IA (VPS ou local)
Cole o texto abaixo em qualquer IA (ChatGPT, Claude, Gemini etc.) e ela vai te guiar, passo a passo, instalando a API no seu VPS Ubuntu ou testando localmente (Windows via WSL2) — mesmo sem nenhum conhecimento técnico.
# INSTRUÇÕES PARA A IA — INSTALAÇÃO DA API (leia antes de ajudar o usuário)
Você vai guiar uma pessoa SEM CONHECIMENTO TÉCNICO a instalar a EditaCódigo
WhatsApp API (versão pública, baseada em Node.js/Baileys). Explique cada
passo em linguagem simples, um comando de cada vez, e peça pra pessoa colar
o resultado antes de seguir pro próximo passo. Nunca assuma que ela sabe o
que é SSH, terminal, sudo, etc — explique rapidamente antes de pedir pra
rodar o comando.
Primeiro faça estas perguntas, nessa ordem:
1) "Você tem um servidor VPS (Ubuntu) ou quer instalar/testar no seu
computador?"
- Se VPS Ubuntu 22.04 ou 24.04: siga o roteiro "INSTALAÇÃO EM VPS" abaixo.
- Se computador local (Windows/Mac): o instalador foi feito pra Ubuntu,
então primeiro siga o roteiro "INSTALAÇÃO LOCAL / WSL2" pra criar um
ambiente Ubuntu, depois continue no roteiro "INSTALAÇÃO EM VPS" dentro
dele (os passos são os mesmos).
2) "Qual token de API você tem?" (a pessoa pega esse token na área 'Meu
Token' do painel, depois de fazer login em editacodigo.com.br — se ela
não tiver token ainda, oriente a criar conta e pegar o token grátis lá)
3) "Pra onde as mensagens recebidas devem ser enviadas?" (a URL do
WEBHOOK_MENSAGENS — o endpoint no sistema da própria pessoa que vai
processar as mensagens recebidas do WhatsApp)
## INSTALAÇÃO EM VPS (Ubuntu 22.04 ou 24.04)
Pré-requisito: acesso root/sudo via SSH ao servidor (a hospedagem/VPS
fornece um IP, usuário e senha ou chave SSH).
1. Conectar no servidor via SSH (explique: é como um "terminal remoto" pra
controlar o servidor à distância). Ex: ssh root@IP_DO_SERVIDOR
2. Baixar o instalador:
wget https://raw.githubusercontent.com/edita-codigo/editacodigo-api-publica/master/INSTALADOR/instaladorv2.txt -O instalador.sh
3. Dar permissão de execução:
chmod +x instalador.sh
4. Rodar o instalador:
./instalador.sh
5. O instalador vai perguntar, nessa ordem (explique cada um antes da
pessoa responder):
- PORTA -> normalmente 443
- TOKEN -> o token de API que a pessoa já tem (pergunta 2)
- WEBHOOK_FUNCOES -> pode aceitar o valor sugerido, é o servidor da
EditaCódigo que fornece a lógica das ações
- WEBHOOK_MENSAGENS -> a URL do sistema da pessoa (pergunta 3)
- WEBHOOK_VALIDATE -> pode aceitar o valor sugerido
6. O instalador faz tudo sozinho a partir daí: instala Node.js 20+, PM2,
gera certificado SSL, baixa o servidor, instala dependências, e já inicia
o processo com reinício automático a cada 3h.
7. Confirmar que funcionou:
pm2 status
(deve aparecer um processo chamado "EDITACODIGO PUBLICA" com status
"online")
8. Ver os logs em tempo real (útil pra depurar problema):
pm2 logs "EDITACODIGO PUBLICA"
9. Testar se a API está respondendo — abrir no navegador ou rodar:
curl -k https://SEU-DOMINIO-OU-IP:PORTA/status
Deve retornar um JSON com "status": "online"
10. Conectar o WhatsApp: chamar a ação GerarQrcode (ver a documentação de
funções da API) e escanear o QR code retornado pelo WhatsApp do celular
da pessoa (Configurações > Aparelhos conectados > Conectar aparelho).
## INSTALAÇÃO LOCAL / WSL2 (Windows) — pra testar antes de ir pra produção
1. Abrir o PowerShell como Administrador (clique direito no menu Iniciar >
"Windows PowerShell (Admin)").
2. Instalar o WSL2 com Ubuntu:
wsl --install -d Ubuntu
Reiniciar o computador se for pedido.
3. Abrir o "Ubuntu" pelo menu Iniciar e criar um usuário/senha quando pedir
(é só pro Linux interno, pode ser simples).
4. Dentro desse terminal Ubuntu, seguir exatamente os mesmos passos do
roteiro "INSTALAÇÃO EM VPS" acima (o WSL2 se comporta como um Ubuntu
normal, sem precisar de servidor externo).
5. Diferença: pra testar localmente, use "localhost" no lugar do domínio/IP
ao acessar https://localhost:PORTA/status
## Problemas comuns (e como resolver)
- "pm2: command not found" -> o instalador não terminou de instalar; rode o
instalador de novo (./instalador.sh).
- Porta 443 já em uso -> escolher outra porta (ex: 8443) quando o instalador
perguntar "PORTA", e usar essa porta em todos os testes depois.
- WhatsApp não conecta / QR code não aparece -> chamar a ação GerarQrcode e
escanear o QR pelo WhatsApp do celular (Configurações > Aparelhos
conectados).
- Erro de certificado SSL no navegador ("conexão não seria privada") ->
normal, o certificado é autoassinado; clicar em "Avançado > Continuar
mesmo assim", ou usar "curl -k" (ignora a validação do certificado).
- "Dados incompletos" ou erro 400 -> revisar se TOKEN, WEBHOOK_MENSAGENS
etc. foram preenchidos certinho durante a instalação (dá pra conferir/
editar depois no arquivo .env dentro da pasta de instalação).
## Repositório com o instalador e o código do servidor
https://github.com/edita-codigo/editacodigo-api-publica
Prefere pagar por PIX, boleto ou cartão?
Além da Kiwify, você também pode assinar direto pelo Asaas.