local@server. Você os encontra o tempo todo no Baileys: como destino de sock.sendMessage, no key.remoteJid de cada mensagem recebida e como parâmetro de consultas a grupos e contatos.
O WhatsApp moderno identifica a mesma pessoa de duas formas, dependendo do contexto. Ambas são JIDs:
- PNJID — Phone Number Jabber Identifier. Vive em
@s.whatsapp.nete é derivado do número de telefone do usuário. É o identificador legado e o que você usa para procurar alguém pelo número. - LIDJID — Linked Identity Jabber Identifier. Vive em
@lide é um identificador opaco por usuário que o WhatsApp atribui para anonimizar números em grupos, comunidades e outras superfícies compartilhadas. É o identificador padrão no Baileys 7.x e posteriores.
Formatos de JID
Usuário (PNJID)
[ddi][numero]@s.whatsapp.netExemplo: [email protected]Usuário (LIDJID)
[lid]@lidExemplo: 123456789012345@lidGrupo
[timestamp]-[random]@g.usExemplo: [email protected]Lista de transmissão
[timestamp]@broadcastExemplo: 1234567890@broadcastStories / Status
status@broadcastConstante fixa — todas as atualizações de status vão para este JID.Newsletter
[id]@newsletterExemplo: 12345@newsletterRegras do número de telefone
Ao construir um PNJID a partir de um número:- Inclua o código do país (ex.:
1para EUA,55para Brasil). - Não inclua
+,-, espaços ou parênteses. [email protected]está correto;+55 (11) [email protected]não está.
PN ↔ LID: o modelo de identidade dupla
Desde 2024, o WhatsApp vem migrando de identificadores de número de telefone para LIDs (Linked Identity JIDs). Um LID é opaco e por usuário — esconde o número de telefone subjacente para que sua conta apareça em grupos grandes, comunidades e canais sem vazar o número. No Baileys 7.x e posteriores:- Novas sessões Signal são criadas em formato LID por padrão.
- Um único usuário tem tanto um PNJID (
[email protected]) quanto um LIDJID (...@lid). Eles se referem à mesma pessoa. - Os campos
participantem grupos costumam ser LIDs;participantAltcarrega o PN correspondente, e vice-versa. MessageKey.remoteJidAlteMessageKey.participantAltdão a você o identificador alternativo para mensagens diretas e mensagens de grupo/transmissão/canal respectivamente.- O tipo
Contactagora expõe um únicoidmais camposphoneNumber(quandoidé LID) elid(quandoidé PN).
Não tente “restaurar” PN JIDs no seu app. Migre seu armazenamento, indexação e roteamento para LIDs — o WhatsApp trata LIDs como o identificador canônico daqui pra frente.
Resolução PNJID ↔ LIDJID
O WhatsApp permite resolver um número para o seu LID. O caminho inverso — de LID para número — não é geralmente suportado. UseonWhatsApp para verificações pontuais de existência por PN, e o store lidMapping em sock.signalRepository para conversões diretas:
lid-mapping.update dispara sempre que o Baileys aprende um novo par PN ↔ LID pela rede. Para consultas de diretório mais avançadas, veja Protocolo USync.
Compartilhamento de número entre contas
Como LIDs escondem números por padrão, o WhatsApp fornece flags explícitas de opt-in para trocá-los quando ambos os lados concordam:- Empresas podem solicitar o número do destinatário com
{ requestPhoneNumber: true }em uma mensagem enviada. - Usuários podem compartilhar seu número com
{ sharePhoneNumber: true }.
JIDs multi-aparelho
No protocolo multi-aparelho do WhatsApp, uma única conta pode ter múltiplos aparelhos conectados. Cada aparelho recebe um sufixo:5511999999999:[email protected] ou 123456789012345:3@lid. A parte antes do : é o usuário, e o número depois é o ID do aparelho.
É por isso que você nunca deve comparar ou dividir JIDs com operações de string — uma mensagem do aparelho :0 e uma do :2 pertencem ao mesmo usuário.
Helpers de JID
O Baileys exporta um conjunto de helpers em@whiskeysockets/baileys. Sempre use eles em vez de manipulação manual de string.
Parsing e codificação
domainType no resultado decodificado corresponde ao enum WAJIDDomains:
Verificações de tipo
isJidUser de versões anteriores foi removido. Use isPnUser ou isLidUser dependendo da forma desejada.Constantes comuns
META_AI_JID é o JID legado em @c.us da conta da Meta AI, mas o helper isJidMetaAI(jid) casa apenas com o servidor @bot — o domínio que as interações com o bot da Meta AI usam atualmente. Os dois são intencionalmente diferentes e isJidMetaAI(META_AI_JID) retorna false. Compare contra META_AI_JID diretamente quando precisar identificar essa conta específica.