Pular para o conteúdo

Grupos

Os grupos do WhatsApp em que o número conectado participa aparecem no painel como conversas. Na API, um grupo também é uma conversa: o id do grupo é um contact_id. Com ele você:

Grupos não são atendidos pelos agentes de IA.

{
"id": "6fa72198-41f5-4c7f-8fc5-5c84c28e7e00",
"object": "group",
"name": "Equipe de Vendas",
"jid": "120363012345678901@g.us",
"channel_id": "d781e759-4047-4c35-bfcd-eae8c666369a",
"unread_count": 3,
"last_message_at": "2026-11-11T13:58:10Z",
"last_message_preview": "Fechei mais 2 pedidos hoje 🎉",
"archived_at": null,
"created_at": "2026-04-01T12:00:00Z"
}
Campo Tipo Descrição
id UUID ID do grupo. É o contact_id da conversa do grupo: use para ler o histórico e enviar mensagens.
object string Sempre group.
name string ou null Nome do grupo no WhatsApp.
jid string ou null Identificador do grupo no WhatsApp (termina em @g.us).
channel_id UUID ou null Canal (número de WhatsApp) que participa do grupo.
unread_count inteiro Mensagens não lidas no painel.
last_message_at data ou null Data da última mensagem.
last_message_preview string ou null Prévia da última mensagem.
archived_at data ou null Quando a conversa do grupo foi arquivada (null = ativa).
created_at data Quando o grupo apareceu na TopTalking.

GET/v1/groups

Lista os grupos que aparecem no painel, dos mais recentes para os mais antigos, com paginação. Use para descobrir o id de um grupo pelo nome antes de ler ou enviar mensagens.

Parâmetro Onde Tipo Obrigatório Descrição
search query string não Parte do nome do grupo (até 100 caracteres).
channel_id query UUID não Só grupos deste canal.
limit query inteiro não Itens por página, 1 a 100 (padrão 20).
cursor query string não next_cursor da página anterior.
Janela do terminal
curl "https://platform.toptalking.com.br/v1/groups?search=vendas" \
-H "Authorization: Bearer $TOPTALKING_API_KEY"
{
"object": "list",
"data": [
{
"id": "6fa72198-41f5-4c7f-8fc5-5c84c28e7e00",
"object": "group",
"name": "Equipe de Vendas",
"jid": "120363012345678901@g.us",
"channel_id": "d781e759-4047-4c35-bfcd-eae8c666369a",
"unread_count": 3,
"last_message_at": "2026-11-11T13:58:10Z",
"last_message_preview": "Fechei mais 2 pedidos hoje 🎉",
"archived_at": null,
"created_at": "2026-04-01T12:00:00Z"
},
{
"id": "8255ed43-3d44-4909-bc51-f7a9e810f214",
"object": "group",
"name": "Fornecedores - Vendas",
"jid": "120363029876543210@g.us",
"channel_id": "d781e759-4047-4c35-bfcd-eae8c666369a",
"unread_count": 0,
"last_message_at": "2026-11-08T17:22:05Z",
"last_message_preview": "O lote de tênis chega na terça.",
"archived_at": null,
"created_at": "2026-05-12T09:40:00Z"
}
],
"has_more": false,
"next_cursor": null
}

Só os gerais: 401 (chave) e 429 (limite por minuto). Veja Erros.

GET/v1/groups/{group_id}/participants

Busca na hora, no WhatsApp conectado, quem está no grupo e quem é administrador. Por isso precisa do canal do grupo conectado — se ele estiver desconectado, a resposta é 422 channel_unavailable.

Parâmetro Onde Tipo Obrigatório Descrição
group_id caminho UUID sim ID do grupo (o mesmo contact_id).

A lista vem inteira numa página (has_more: false).

Janela do terminal
curl https://platform.toptalking.com.br/v1/groups/6fa72198-41f5-4c7f-8fc5-5c84c28e7e00/participants \
-H "Authorization: Bearer $TOPTALKING_API_KEY"
{
"object": "list",
"data": [
{
"object": "group_participant",
"phone": "5511988887777",
"name": "Loja Aurora",
"role": "superadmin",
"avatar_url": "https://arquivos.exemplo.com/avatars/loja-aurora.jpg"
},
{
"object": "group_participant",
"phone": "5511991112222",
"name": "Carla Mendes",
"role": "admin",
"avatar_url": null
},
{
"object": "group_participant",
"phone": "5521987654321",
"name": "João Pereira",
"role": "member",
"avatar_url": null
}
],
"has_more": false,
"next_cursor": null
}
Campo Tipo Descrição
object string Sempre group_participant.
phone string ou null Telefone do participante, só dígitos com DDI.
name string ou null Nome do participante, quando conhecido.
role string member (participante), admin (administrador) ou superadmin (quem criou o grupo).
avatar_url string ou null Foto de perfil, quando disponível.
HTTP code Quando acontece
404 resource_not_found O grupo não existe ou é de outra organização.
422 channel_unavailable O WhatsApp do grupo está desconectado. Reconecte o canal e tente de novo.
502 provider_error O WhatsApp não respondeu à consulta. Tente de novo em instantes.
422 channel_unavailable
{
"error": {
"type": "channel_error",
"code": "channel_unavailable",
"message": "WhatsApp desconectado. Reconecte no painel.",
"request_id": "req_6f1d2c3b4a5e"
}
}

Use o id do grupo em GET /contacts/{contact_id}/messages. Em grupos, sender_name diz quem mandou cada mensagem recebida.

GET/v1/contacts/{contact_id}/messages

Janela do terminal
curl "https://platform.toptalking.com.br/v1/contacts/6fa72198-41f5-4c7f-8fc5-5c84c28e7e00/messages?limit=20" \
-H "Authorization: Bearer $TOPTALKING_API_KEY"
{
"object": "list",
"data": [
{
"id": "cb42b3fb-9e83-46aa-b7f6-f3aca950abf5",
"object": "message",
"contact_id": "6fa72198-41f5-4c7f-8fc5-5c84c28e7e00",
"channel_id": "d781e759-4047-4c35-bfcd-eae8c666369a",
"direction": "inbound",
"type": "text",
"text": "Fechei mais 2 pedidos hoje 🎉",
"media": null,
"status": "delivered",
"error": null,
"reply_to_id": null,
"reaction": null,
"sender_name": "Carla Mendes",
"transcript": null,
"created_at": "2026-11-11T13:58:10Z",
"edited_at": null
}
],
"has_more": true,
"next_cursor": "eyJ0IjoiMjAyNi0xMS0xMVQxMzo1ODoxMFoifQ"
}

Use POST /messages com o id do grupo em contact_id (to é só para telefones). Texto, mídia e respostas citando (reply_to_id) funcionam como numa conversa individual.

POST/v1/messages

Janela do terminal
curl https://platform.toptalking.com.br/v1/messages \
-H "Authorization: Bearer $TOPTALKING_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: meta-diaria-2026-11-11" \
-d '{
"contact_id": "6fa72198-41f5-4c7f-8fc5-5c84c28e7e00",
"text": "Bom dia, time! Meta de hoje: 15 pedidos. Bora! 💪"
}'
{
"id": "37e1fdb6-6cd4-4345-bbaa-58216b232122",
"object": "message",
"contact_id": "6fa72198-41f5-4c7f-8fc5-5c84c28e7e00",
"channel_id": "d781e759-4047-4c35-bfcd-eae8c666369a",
"direction": "outbound",
"type": "text",
"text": "Bom dia, time! Meta de hoje: 15 pedidos. Bora! 💪",
"media": null,
"status": "sent",
"error": null,
"reply_to_id": null,
"reaction": null,
"sender_name": null,
"transcript": null,
"created_at": "2026-11-11T11:00:03Z",
"edited_at": null
}

Os erros são os de POST /messages. O mais comum em grupos é 422 channel_unavailable, quando o WhatsApp do grupo está desconectado.

Mensagens recebidas em grupos chegam no webhook message.received como as demais: data.contact.is_group é true, data.contact.id é o id do grupo e data.message.sender_name diz quem mandou.

Para listar só conversas de grupo (ou só individuais) junto com os demais filtros de contato, use GET /contacts?is_group=true.