LID no WhatsApp: o que é aquele número estranho (@lid) e como resolver para telefone
Entenda o que é o LID (@lid) no WhatsApp, por que ele aparece no lugar do telefone em grupos e webhooks e como resolver para número pela API.
LID é um identificador que o WhatsApp usa no lugar do número de telefone em algumas conversas — principalmente em grupos e com contatos que não compartilham o número com você. Ele aparece como 260417171517608@lid: parece telefone, mas não é. Pela API não oficial da WAME você pode responder direto para o LID (o campo to aceita id@lid) e, quando precisar do telefone, resolver em lote com POST /{key}/contacts/resolve-lids.
Se você já viu no seu webhook um "número" de 15 dígitos que não abre no WhatsApp, não liga e não bate com nenhum cliente, era um LID. Este guia explica o que ele é, onde aparece e como tratar no seu sistema sem estragar a base de contatos.
A camada não oficial da WAME é independente e não é afiliada, endossada ou suportada pelo WhatsApp ou pela Meta. O uso é de responsabilidade de quem envia.
O que é o LID, em uma frase
O WhatsApp passou a identificar pessoas por dois tipos de endereço:
- Telefone — o JID clássico,
[email protected]. - LID (linked identity) — um identificador próprio da conta,
260417171517608@lid, que não revela o número.
A ideia do LID é privacidade: em comunidades, grupos grandes e em alguns contextos de contato, o WhatsApp mostra a pessoa sem expor o telefone dela para todo mundo. Para quem está no app, isso é transparente — aparece o nome, a foto, e pronto. Para quem integra por API, aparece um identificador que não é um telefone e precisa ser tratado como tal.
O ponto que confunde é o formato. Sem o sufixo, 260417171517608 tem cara de número internacional. Se o seu sistema corta tudo depois do @ e guarda só os dígitos, você acabou de criar um "cliente" com um telefone que não existe.
Onde o LID aparece
Na prática, ele surge em quatro lugares:
- Mensagens de grupo. O remetente dentro de um grupo pode vir como LID em vez de telefone.
- Lista de participantes. Em
GET /{key}/groups/{id}/members, alguns membros podem aparecer com@lid. - Chamadas recebidas. No webhook de chamada, o
from_jidpode terminar em@lid— e ofrom, que vem só com dígitos, será os dígitos do LID, não um telefone. - Contatos que não compartilham o número. Em conversas individuais, dependendo das configurações de privacidade de quem fala com você.
Em conversas 1:1 iniciadas por clientes comuns, o mais frequente continua sendo o telefone. O LID é mais comum em grupo — e é justamente ali que os sistemas quebram, porque muita gente escreve o código olhando só para mensagens individuais.
Como identificar um LID no webhook
No formato meta do webhook, a mensagem chega no envelope padrão, e em grupo o from é quem enviou enquanto o grupo vem em group_id:
{
"object": "wame",
"provider": "whatsapp",
"entry": [{
"id": "<instance-id>",
"changes": [{
"field": "messages",
"value": {
"messages": [{
"from": "260417171517608",
"chat_type": "group",
"group_id": "[email protected]",
"id": "3EB0XXXX",
"type": "text",
"text": { "body": "alguém sabe o horário de amanhã?" }
}]
}
}]
}]
}O from aqui é só dígitos — ele não diz, sozinho, se é telefone ou LID. Por isso a regra de ouro é: quando o sistema tiver o JID completo, guarde o JID completo. No evento de chamada, por exemplo, o webhook entrega os dois:
{
"field": "call",
"value": {
"calls": [{
"id": "CALL1",
"from": "260417171517608",
"from_jid": "260417171517608:68@lid",
"status": "offer",
"is_video": false
}]
}
}O from_jid terminado em @lid não deixa dúvida. E é exatamente esse valor que a API usa para atender ou recusar a chamada — veja recusar ligação automaticamente.
Uma heurística útil para mensagens de grupo: telefone brasileiro com DDI tem 12 ou 13 dígitos e começa com 55. Um identificador de 15 dígitos que não começa com um DDI plausível é forte candidato a LID. Não é prova — use só como alerta, e confirme resolvendo.
Responder para um LID não exige resolver
Boa notícia: para responder a quem falou com você, o LID basta. O campo to dos endpoints de mensagem aceita três formatos:
- telefone com DDI:
5511999999999; - grupo:
[email protected]; - LID:
260417171517608@lid.
curl -X POST "https://us.api-wa.me/SUA_KEY/message/text" \
-H "Content-Type: application/json" \
-d '{ "to": "260417171517608@lid", "text": "Oi! Vi sua pergunta no grupo, te respondo por aqui." }'Isso importa para o bot de grupo: quando alguém pede ajuda com um !comando e você quer responder no privado, dá para mandar direto para o LID. O padrão de bot está em bot de comandos para grupo.
Um cuidado de bom senso: responder no privado para quem pediu é atendimento. Pegar a lista de LIDs de um grupo e mandar mensagem para todos no privado é abordagem fria em massa — é o tipo de fan-out que o anti-spam pune e que a WAME não apoia. Mais em uso responsável da API não oficial.
Resolver LID para telefone em lote
Quando você precisa do telefone — cruzar com o CRM, emitir nota, vincular a um pedido —, use o endpoint de resolução. Ele recebe uma lista e resolve em lote:
curl -X POST "https://us.api-wa.me/SUA_KEY/contacts/resolve-lids" \
-H "Content-Type: application/json" \
-d '{ "lids": ["260417171517608@lid", "198765432109876@lid"] }'Duas expectativas realistas:
- Nem todo LID tem telefone disponível. Se o contato não compartilha o número com você, o LID é tudo que existe. O seu sistema precisa funcionar nesse caso, não tratar como erro.
- Resolva em lote, não um por um. Acumule os LIDs novos que chegaram e resolva de tempos em tempos, em vez de chamar o endpoint a cada mensagem de grupo.
Em Node, um resolvedor com cache simples:
const BASE = 'https://us.api-wa.me/SUA_KEY';
const cache = new Map(); // lid -> telefone | null
async function resolverLids(lids) {
const novos = lids.filter((l) => !cache.has(l));
if (novos.length) {
const r = await fetch(`${BASE}/contacts/resolve-lids`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ lids: novos }),
});
const dados = await r.json();
// A resposta traz `data`: um objeto que mapeia cada LID ao telefone.
// LID sem telefone conhecido simplesmente não aparece nele.
for (const lid of novos) cache.set(lid, dados?.data?.[lid] ?? null);
}
return lids.map((l) => ({ lid: l, telefone: cache.get(l) }));
}O cache evita repetir a mesma consulta e, de quebra, reduz chamadas desnecessárias. Em produção, troque o Map por Redis ou pela sua tabela de contatos.
Como modelar o contato no seu banco
É aqui que a maioria dos problemas nasce. A modelagem que funciona separa identidade de telefone:
| Campo | Exemplo | Para que serve |
|---|---|---|
wa_id | 260417171517608@lid ou [email protected] | Chave de conversa: é para onde você responde |
tipo_id | lid ou telefone | Evita confundir os dois |
telefone | 5511999999999 ou vazio | Só preenchido quando resolvido |
nome | Maria | Vem do perfil, quando disponível |
Três regras que evitam dor de cabeça:
- Nunca grave LID na coluna de telefone. É a origem de contato duplicado, relatório errado e mensagem enviada para número inexistente.
- A chave da conversa é o
wa_idcompleto. Se o mesmo cliente aparecer uma vez por telefone e outra por LID, a resolução é o que liga os dois registros — faça o merge quando o telefone resolvido bater com um contato existente. - Valide antes de usar como telefone. Se algum fluxo vai usar o número fora do WhatsApp (SMS, ligação comum, cadastro fiscal), só use o campo
telefone, nunca owa_id.
Se você também valida números no cadastro, os dois processos se completam: verificar se o número tem WhatsApp trata o caminho telefone → WhatsApp; a resolução de LID trata o caminho WhatsApp → telefone.
LID em grupos: participantes e moderação
Em automação de grupo, o LID aparece em dois momentos: na lista de membros e no evento de participantes (field: "groups", com event: "participants_updated", action e a lista participants). Para as operações do grupo em si — remover, promover, rebaixar —, use o identificador exatamente como ele veio. O participante é quem ele é no grupo; não precisa virar telefone para ser moderado.
O telefone só importa quando você cruza o grupo com outro sistema. No grupo VIP pago, por exemplo, a conciliação diária compara membros do grupo com assinantes ativos. Ali vale resolver os LIDs antes de comparar, senão um assinante legítimo que aparece como LID é tratado como intruso e removido por engano.
Erros comuns ao lidar com LID
- Cortar tudo depois do
@. Transforma LID em "telefone" silenciosamente. Guarde o sufixo. - Resolver a cada mensagem. Gera chamadas repetidas à toa. Cacheie.
- Tratar LID sem telefone como erro. É um estado normal; o fluxo tem que seguir com o
wa_id. - Usar LID para prospecção. Coletar LIDs de grupos para abordar no privado é spam, com todas as consequências para o número.
- Formatar LID como telefone na interface. O atendente vê "+26 0417..." e tenta ligar. Mostre o nome e marque o contato como "número oculto".
Conclusão
O LID não é bug nem número quebrado: é o WhatsApp protegendo o telefone das pessoas em grupos e em alguns contatos. Para a sua integração, a regra é simples — guarde o JID completo, responda direto para o @lid quando for atendimento, resolva o telefone em lote com POST /{key}/contacts/resolve-lids só quando precisar dele e nunca misture LID com a coluna de telefone. Com isso, grupos, chamadas e CRM continuam consistentes. Os formatos completos estão na documentação, e as vantagens da camada não oficial para grupos e bots estão em API do WhatsApp não oficial: vantagens.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
O que é LID no WhatsApp?+
LID é um identificador interno que o WhatsApp usa no lugar do número de telefone em algumas situações, principalmente em grupos e com contatos que não compartilham o número com você. Ele aparece como um JID terminado em @lid, por exemplo 260417171517608@lid. Não é um telefone e não pode ser tratado como um.
Por que meu webhook mostra um número que não existe?+
Porque o remetente veio identificado por LID, não por telefone. A sequência de dígitos parece um número, mas é só o identificador. Guarde o JID completo com o sufixo @lid e resolva o telefone com POST /{key}/contacts/resolve-lids quando precisar dele.
Como converter LID em número de telefone pela API?+
Faça POST /{key}/contacts/resolve-lids enviando um array lids com os JIDs @lid que você quer resolver. A API devolve o telefone correspondente quando ele é conhecido pela instância. Nem todo LID tem telefone disponível: se o contato não compartilha o número, o LID é o único identificador.
Posso enviar mensagem para um LID?+
Sim. O campo to dos endpoints de mensagem aceita o formato id@lid, além do telefone com DDI e do JID de grupo terminado em @g.us. Você não precisa resolver o telefone só para responder a quem falou com você.
Como guardar LID no meu CRM?+
Guarde os dois campos separados: o identificador que chegou (telefone ou LID, com o sufixo) e o telefone resolvido, quando existir. Nunca grave o LID na coluna de telefone — isso gera contato duplicado, disparo para número inexistente e relatório errado.
Continue lendo
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.
Anti-detecção na API não oficial do WhatsApp: como a WAME protege seu número
Como funciona a camada de anti-detecção da API não oficial da WAME: identidade de dispositivo, tempo humano, ritmo de envio, reconexão e monitor de saúde.
API do WhatsApp em C# (.NET): enviar mensagens e receber webhook
Tutorial de API do WhatsApp em C# e .NET: HttpClient tipado, envio de texto, imagem e lista, webhook em ASP.NET Core com fila em background e tratamento de 429.