API do WhatsApp para escolas e cursos: grupos por turma, avisos e reunião de pais
Como escolas e cursos usam a API não oficial do WhatsApp: grupos por turma criados por código, modo avisos, mensagem fixada, comunidade, lembretes e LGPD.
Para escolas e cursos, a API não oficial do WhatsApp automatiza a parte mais trabalhosa da comunicação: criar um grupo por turma a partir do sistema acadêmico, deixar os grupos em modo avisos, fixar o comunicado importante, organizar tudo numa comunidade da escola e mandar lembretes individuais só para os responsáveis que autorizaram. A secretaria para de montar grupo à mão todo começo de semestre, e os pais recebem a informação no lugar onde já estão.
A camada não oficial não é afiliada, endossada ou suportada pelo WhatsApp ou pela Meta. O uso é de responsabilidade de quem envia.
Por que a camada não oficial
Grupos, comunidades, mensagem fixada e canal são recursos que a WhatsApp Cloud API oficial não expõe da mesma forma. Para uma escola, eles são justamente o centro da comunicação. Na WAME, esses recursos saem por endpoints REST simples, numa instância conectada ao número da escola por QR Code, com infraestrutura hospedada — nada de servidor próprio rodando biblioteca. O panorama completo está em vantagens da API não oficial.
A estrutura recomendada
Antes do código, a organização que funciona na maioria das escolas:
- Uma comunidade da escola, que reúne todos os grupos e tem o canal de avisos gerais.
- Um grupo por turma, em modo avisos, para comunicados da coordenação e dos professores.
- Conversa privada com cada responsável, para o que é individual: lembrete de prova, falta, boleto, reunião.
- Canal do WhatsApp (opcional), aberto a qualquer interessado: calendário, eventos, matrícula.
A regra é simples: o que é de todos vai no grupo; o que é de um aluno vai no privado. Nota, ocorrência disciplinar e situação financeira nunca vão para o grupo.
Criar os grupos das turmas por código
No início do ano letivo, um script lê as turmas do sistema acadêmico e cria os grupos. O endpoint exige nome e participantes iniciais — coloque os números da coordenação e do professor responsável:
curl -X POST "https://us.api-wa.me/SUA_KEY/groups" \
-H "Content-Type: application/json" \
-d '{
"name": "7º Ano B — 2027",
"participants": ["5511988880001", "5511988880002"]
}'Depois, a descrição com as regras do grupo:
curl -X PUT "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO" \
-H "Content-Type: application/json" \
-d '{
"name": "7º Ano B — 2027",
"description": "Canal oficial de avisos da turma. Dúvidas individuais: fale com a secretaria no privado."
}'E o modo avisos, para que só a escola publique:
# Só administradores enviam mensagens
curl -X PATCH "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO?setting=announcement"
# Só administradores editam nome, descrição e foto
curl -X PATCH "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO?setting=locked"Em JavaScript, o laço sobre as turmas fica assim:
const BASE = `https://us.api-wa.me/${process.env.WAME_KEY}`;
const post = (path, body, method = 'POST') =>
fetch(`${BASE}${path}`, {
method,
headers: { 'Content-Type': 'application/json' },
body: body ? JSON.stringify(body) : undefined,
}).then((r) => r.json());
for (const turma of turmas) {
const grupo = await post('/groups', {
name: turma.nome,
participants: [turma.coordenacao, turma.professor],
});
// A resposta traz o grupo em `data` e o link de convite pronto em `groupLink`.
turma.grupoId = grupo.data.id;
turma.convite = grupo.groupLink;
await fetch(`${BASE}/groups/${turma.grupoId}?setting=announcement`, { method: 'PATCH' });
await new Promise((r) => setTimeout(r, 5000)); // sem pressa: um grupo por vez
}Crie os grupos com calma, um de cada vez. Criar dezenas de grupos em poucos segundos não é comportamento de secretaria — é comportamento de robô.
Entrada dos responsáveis: convite, não adição em massa
A tentação é pegar a lista de telefones da matrícula e adicionar todo mundo com POST /groups/{id}/participants. Não faça isso em massa: quem não tem o número da escola salvo pode nem ser adicionado, e ser colocado num grupo sem pedir é um dos motivos mais comuns de denúncia.
O caminho seguro é o link de convite com aprovação:
# Link de convite da turma
curl -X GET "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO/invite"
# Solicitações pendentes
curl -X GET "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO/request_participants_list"
# Aprovar quem está na lista de responsáveis da turma
curl -X PUT "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO/request_participants_list" \
-H "Content-Type: application/json" \
-d '{ "participants": ["5511977770001"], "action": "approve" }'O sistema compara quem pediu para entrar com os responsáveis cadastrados naquela turma e aprova automaticamente; quem não está na lista fica para a secretaria avaliar. Ninguém de fora entra no grupo do 7º B. O link vai no e-mail de boas-vindas, no portal do aluno ou numa mensagem privada para quem já conversa com a escola. Um fluxo parecido, aplicado a grupo pago, está em grupo VIP com entrada automática.
Fixar o comunicado importante
Em grupo de turma, o aviso da semana de provas some debaixo de outros comunicados. Fixe-o no topo:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/pin" \
-H "Content-Type: application/json" \
-d '{ "id": "ID_DA_MENSAGEM", "duration": 604800 }'A duração é em segundos — 604800 são sete dias. Quando o período passar, a mensagem sai do topo sozinha, ou você usa /message/unpin. O id é o que a API devolve ao enviar a mensagem para o grupo.
Comunidade da escola
A comunidade junta os grupos das turmas debaixo de um mesmo guarda-chuva, com um espaço de avisos que alcança todos:
# Criar a comunidade
curl -X POST "https://us.api-wa.me/SUA_KEY/community" \
-H "Content-Type: application/json" \
-d '{ "name": "Escola Horizonte", "subject": "Comunidade oficial da Escola Horizonte" }'
# Criar um grupo já dentro da comunidade
curl -X POST "https://us.api-wa.me/SUA_KEY/community/ID_DA_COMUNIDADE/group" \
-H "Content-Type: application/json" \
-d '{ "subject": "8º Ano A — 2027", "participants": ["5511988880001"] }'O passo a passo completo está em criar e gerenciar uma comunidade pela API, e a automação de moderação de grupos em automatizar grupos pela API.
Lembretes individuais para quem autorizou
Lembrete de prova, aviso de falta e confirmação de reunião são individuais. Mande no privado, com o nome do aluno, e só para responsáveis que autorizaram a comunicação por WhatsApp na matrícula:
for (const r of responsaveisAutorizados) {
await post('/message/text', {
to: r.telefone,
text: `Olá, ${r.nome}! Lembrete: ${r.aluno} tem prova de Matemática amanhã, às 8h. Qualquer dúvida, é só responder aqui.`,
});
await new Promise((ok) => setTimeout(ok, 3000 + Math.random() * 4000));
}Mensagens personalizadas e espalhadas no tempo são exatamente o que diferencia comunicação escolar de disparo. Texto idêntico para centenas de números em poucos minutos esbarra no freio da própria API, que responde 429. O desenho de fila está em fila, rate limit e retry, e a organização de quem autorizou em lista de contatos com opt-in e opt-out.
Reunião de pais com convite de evento
Para a reunião de pais, o convite de evento aparece no chat com data, horário e local — e dá para mandar no grupo da turma:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/event" \
-H "Content-Type: application/json" \
-d '{
"to": "[email protected]",
"name": "Reunião de pais — 7º Ano B",
"description": "Apresentação do 2º bimestre e plantão com professores.",
"startTime": "2027-05-15T12:00:00Z",
"locationName": "Auditório da escola",
"locationAddress": "Rua Exemplo, 500 — São Paulo"
}'O horário é em UTC: 12h UTC são 9h em Brasília. Um lembrete no dia anterior, no grupo, completa o fluxo.
Canal da escola
Para o que é público — calendário letivo, eventos abertos, matrícula —, um Canal do WhatsApp alcança só quem escolheu seguir, sem expor o número de ninguém e sem gerar conversa. Veja canal do WhatsApp pela API.
LGPD: dados de alunos pedem cuidado redobrado
Escola lida com dados de menores, e o WhatsApp é um canal onde erro de envio é visível para muita gente. Alguns princípios que valem para qualquer instituição:
- Autorização registrada. Colete na matrícula a autorização do responsável para comunicação por WhatsApp e guarde o registro.
- Cada um recebe só o que é seu. Nota, frequência, ocorrência e financeiro vão no privado do responsável, nunca no grupo.
- Grupo em modo avisos evita que dados de uma família apareçam para as outras em conversas paralelas.
- Saída fácil. Quem pedir para parar de receber sai da lista na hora.
- Encerramento de ano. Grupos da turma antiga são arquivados ou encerrados, não reaproveitados com gente nova.
Isso é orientação geral, não parecer jurídico. Para os detalhes da sua instituição, fale com o encarregado de dados. Há mais contexto em API de WhatsApp e LGPD.
E o risco para o número?
A comunicação escolar é, por natureza, de baixo risco: as mensagens vão para quem tem vínculo com a escola, pediu para receber e espera os avisos. Grupos em modo avisos, entrada por convite com aprovação e lembretes personalizados mantêm a taxa de bloqueio muito baixa para quem usa do jeito certo. O que derruba número é outra coisa — lista de estranhos, texto repetido em massa, gente adicionada sem pedir — e a WAME não apoia esse uso. Se quiser acompanhar a saúde do número, veja sinais de que o número está em risco.
Conclusão
Com a API não oficial do WhatsApp, escolas e cursos automatizam a comunicação que hoje consome a secretaria: grupos por turma criados a partir do sistema acadêmico, modo avisos, entrada dos responsáveis por convite com aprovação, comunicado fixado, comunidade da escola, lembretes individuais para quem autorizou e reunião de pais com convite de evento. O cuidado central é separar o que é coletivo do que é individual e tratar dados de alunos com o rigor que eles exigem. Os endpoints estão na documentação.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
Dá para criar os grupos de todas as turmas automaticamente?+
Dá. Com a API não oficial da WAME, POST /{key}/groups cria o grupo com nome e participantes iniciais, PUT /{key}/groups/{id} define nome e descrição e GET /{key}/groups/{id}/invite gera o link de convite. Um script percorre a lista de turmas do sistema acadêmico e cria tudo de uma vez.
Como deixar só a escola postar no grupo da turma?+
Use PATCH /{key}/groups/{id}?setting=announcement. O grupo vira modo avisos: só administradores enviam mensagens, e pais ou alunos apenas leem. Para liberar de novo, use not_announcement. Com locked, só administradores editam nome, descrição e foto.
É melhor adicionar os pais direto ou mandar link de convite?+
Prefira o link de convite com aprovação. Adicionar em massa pessoas que não têm o número da escola salvo tende a falhar e gera denúncia. Com o link, cada responsável entra por escolha própria e a escola aprova as solicitações com PUT /{key}/groups/{id}/request_participants_list.
Posso mandar lembrete de prova no privado de cada responsável?+
Pode, para os responsáveis que autorizaram receber comunicação por WhatsApp. Mande mensagens personalizadas, com o nome do aluno e a disciplina, espalhadas em fila. Aviso geral da turma cabe melhor no grupo em modo avisos.
Quais cuidados de LGPD a escola deve ter ao usar WhatsApp?+
Dados de alunos, especialmente menores, exigem cuidado redobrado: colete a autorização dos responsáveis para o canal, envie a cada um só o que diz respeito ao seu filho, não exponha notas ou ocorrências em grupo e mantenha registro de quem autorizou. Na dúvida, consulte o encarregado de dados da instituição.
Continue lendo
Bot de comandos para grupo de WhatsApp (!menu, !regras) com a API não oficial
Monte um bot de comandos para grupo de WhatsApp com a API não oficial: parser de !menu e !regras, boas-vindas, resposta citada e controle anti-flood.
Grupo VIP pago no WhatsApp: entrada e saída automáticas pelo pagamento
Automatize um grupo VIP pago no WhatsApp: libere a entrada quando o pagamento cai e remova quem cancelou, com a API não oficial da WAME.
Agente de voz no WhatsApp: latência, interrupção (barge-in) e silêncio
Como deixar um agente de voz no WhatsApp natural: latência, streaming, detecção de fala, interrupção (barge-in), silêncio e eco, com exemplos em Node.js.