Pular para o conteúdo principal
Grupos do WhatsApp funcionam para ambos os números não oficiais (pareados por QR) e os números oficiais da Meta Cloud API, desde que o número Meta seja uma Conta Comercial Oficial (OBA) aprovada com grupos habilitados.
Quando um número da Meta Cloud API não é uma OBA elegível, os endpoints de grupo retornam 400 META_GROUPS_NOT_ELIGIBLE.

Modelo de id do grupo

Um grupo é identificado em todos os lugares por seu JID terminando em @g.us. Para números da Meta Cloud API, o grupo é representado como um pseudo-JID <META_GROUP_ID>@g.us — você o usa exatamente como qualquer outro JID de grupo (a conversão do id opaco do grupo Meta ↔ @g.us acontece internamente na fronteira HTTP da Meta). Newsletters/canais (@newsletter) permanecem sem suporte para números Meta.

Enviando para um grupo

Em POST /v1/messages/send, passe groupId (JID terminando em @g.us) em vez de destinationNumber ou newsletterId. Exatamente um destino por requisição.
  • As mesmas regras de template/categoria se aplicam como para números de telefone.

GET /v1/groups

Retorna { "groups": [ { "id": "…@g.us", "name": "…" } ] } para a mesma instância do WhatsApp que POST /v1/messages/send para aquela chave de API (o número vinculado à chave).
  • A listagem usa a mesma conexão que o envio (mesma resolução de instância que POST /v1/messages/send).
  • A sessão deve estar conectada (OPEN); caso contrário, 409 com WHATSAPP_INSTANCE_NOT_CONNECTED.
  • Funciona para números não oficiais e números elegíveis da Meta Cloud API.

Endpoints de gerenciamento de grupos

Todos exigem uma chave de API com escopo de número (ps_*) no cabeçalho x-api-key. {groupId} é o JID (…@g.us), codificado no caminho. Em números Meta que não são uma OBA elegível, estes retornam 400 META_GROUPS_NOT_ELIGIBLE.
Método e caminhoCorpoDescrição
POST /v1/groups{ subject, participants? }Cria um grupo. participants são números de telefone em dígitos E.164. Retorna o grupo criado { id, subject, participants: [...] }.
GET /v1/groups/{groupId}Informações do grupo: assunto e participantes com seus papéis.
POST /v1/groups/{groupId}/participants{ participants: [...] }Adiciona participantes.
DELETE /v1/groups/{groupId}/participants{ participants: [...] }Remove participantes.
POST /v1/groups/{groupId}/participants/promote{ participants: [...] }Promove participantes a administrador.
POST /v1/groups/{groupId}/participants/demote{ participants: [...] }Rebaixa administradores para participantes comuns.
POST /v1/groups/{groupId}/invite{ reset? }Obtém o link de convite do grupo. reset: true revoga o link atual e emite um novo. Retorna { link }.
POST /v1/groups/{groupId}/pin{ messageId, action }Fixa/desafixa uma mensagem do grupo (action: "pin" ou "unpin"). Sem suporte em números não oficiais legados.

Exemplo (criar um grupo)

curl -X POST https://pilotstatus.com.br/v1/groups \
  -H "Content-Type: application/json" \
  -H "x-api-key: ps_your_number_scoped_key" \
  -d '{ "subject": "Sales Team", "participants": ["5511999999999", "5511888888888"] }'

Obtendo o groupId

  • Webhook message.group: o payload inclui groupId (e groupName quando disponível).
  • GET /v1/groups: retorna os ids dos grupos para o número vinculado à chave.

Erros comuns (códigos estáveis da API)

  • 400 META_GROUPS_NOT_ELIGIBLE — o número da Meta Cloud API não é uma Conta Comercial Oficial aprovada (ou grupos não estão habilitados para ele).
  • 409 WHATSAPP_INSTANCE_NOT_CONNECTED — a sessão não está OPEN.
  • WHATSAPP_UPSTREAM_ERROR, WHATSAPP_INVALID_JSON, LINKED_WHATSAPP_INSTANCE_NOT_FOUND; outros códigos estáveis podem aparecer dependendo da configuração da instância.

Variáveis em botões

Cada {{placeholder}} no JSON do template armazenado (corpo e rótulos de botões) é validado no envio e aparece no array variables de nível superior de GET /v1/templates/{id} depois que você salva o template no painel.