Raphael Serafim· Publicado em 28 de setembro de 2026· 9 min de leitura

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.

Ver como Markdown

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:

bash
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:

bash
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:

bash
# 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:

javascript
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:

bash
# 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:

bash
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:

bash
# 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:

javascript
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:

bash
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átis

Perguntas 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