Skip to main content

Perfil

O client.profile (WaProfileCoordinator) lê e grava campos de perfil da sua conta e os consulta para terceiros.

Foto de perfil

getProfilePicture(jid, type?, existingId?) retorna um WaProfilePictureResult{ url?, directPath?, id?, type? }. O segundo argumento escolhe entre a variante compacta 'preview' (default) e o original em alta resolução 'image'; ambos vêm no mesmo envelope, só os bytes por trás de url / directPath diferem. Passe o existingId cacheado para o servidor fazer short-circuit quando a foto não mudou (o resultado então volta sem o novo url/directPath).

Recado / texto de status

Push name

O pushName é o nome de exibição que os contatos veem para a sua conta em chats e listas de participantes de grupo. A mudança é aplicada às credenciais locais imediatamente (então client.getCredentials()?.pushName já reflete o novo valor) e é roteada por uma mutação de app-state; os contatos veem o novo nome na sua próxima mensagem enviada.
Passar string vazia restaura o nome para o padrão de fingerprint do dispositivo.

Modo temporário padrão

O setDisappearingMode define a duração padrão de modo temporário aplicada a novos chats 1:1 iniciados por você. Chats existentes mantêm a configuração por chat.
Para mensagens temporárias por grupo, veja Grupos → mensagens temporárias.

Consultas em lote

Checar se um número está no WhatsApp

Resolva números de telefone para o LID e descubra se cada um está registrado no WhatsApp:

Nomes de usuário

setUsername, setUsernameKey e resolveUsername rodam as mesmas regras locais que o WhatsApp aplica (comprimento, caracteres permitidos, formato de 4 dígitos para a chave) e lançam em falha antes de bater na rede — uma chamada que retorna sem lançar passou pela validação local, então um setUsername que retorna false estreita a causa a uma resposta do servidor (em uso, rate-limited). Resolva um handle para o LID com resolveUsername. O resultado é uma union discriminada: 'found' traz o JID (mais isBusiness / pnJid quando aplicável), 'key-required' significa que o servidor reteve o JID até você fornecer a chave de 4 dígitos, e 'not-found' é terminal.

Privacidade

O client.privacy (WaPrivacyCoordinator) controla as categorias de privacidade e a lista de bloqueios.

Configurações de privacidade

Nomes de setting vivem em WA_PRIVACY_SETTING_TO_CATEGORY, valores permitidos por setting em WA_PRIVACY_SETTING_VALUES — cada setting aceita apenas os valores que o WhatsApp Web aceita para ele. A lista completa: lastSeen, online, profilePicture, about, readReceipts, groupAdd, callAdd, messages, defenseMode, linkedProfiles, pix.
  • linkedProfiles controla quem pode ver os perfis do Accounts Center vinculados a esta conta. Aceita os mesmos valores de visibilidade que lastSeen / profilePicture ('all' | 'contacts' | 'contact_blacklist' | 'none'), deny-list incluída.
  • pix controla quem pode ver a chave Pix no perfil (surface de pagamentos, só Brasil). Mesmos valores de visibilidade que lastSeen.
setPrivacySetting retorna o dhash que o servidor ecoa — o carimbo de versão da disallowed list dessa categoria, presente apenas enquanto a categoria estiver em 'contact_blacklist' (null caso contrário). Definir uma categoria como 'contact_blacklist' aqui apenas alterna o modo; popule a lista com setDisallowedList.

Lista de bloqueios

O WaBlocklistResult agora carrega entries: readonly WaPrivacyListEntry[] ao lado de jids — mesma composição, com um handle username?: string por entrada, preenchido apenas quando o servidor identificou a entrada assim. Escritas de block / unblock conseguem endereçar um contato migrado por username ou display_name (a entrada resolve pelo mesmo caminho de lookup de identificador), em vez de cair no fallback unknown_identifier.

Listas de exceção

Para configurações escopadas a uma lista específica de contatos (por exemplo, “compartilhar com todos, exceto…”):
setDisallowedList(category, input) carrega a mudança de modo e as entradas em uma única stanza (o servidor não tem endpoint separado para deny-list). Inputs aceitam phone jids, LID jids ou números puros e são resolvidos para as duas formas de endereçamento, do mesmo modo que blockUser. Um contato migrado pode ser endereçado por username ou display_name (via a resolução de identificador da própria entrada) em vez de cair no fallback unknown_identifier. O write é versionado por um dhash lido logo antes do envio; se outro device mutou a lista no meio, o servidor responde 409 e a chamada refetch o carimbo e retenta uma vez. As categorias elegíveis são expostas em WA_PRIVACY_DISALLOWED_LIST_CATEGORIES (about, groupAdd, lastSeen, profilePicture, linkedProfiles, pix). O WaPrivacyDisallowedListResult espelha o WaBlocklistResult: entries: readonly WaPrivacyListEntry[] acompanha jids com a mesma composição, adicionando um username?: string por entrada quando o servidor identificou a entrada assim.

Reagindo a mudanças em outros devices

Uma mudança de privacidade feita no primário (ou em outro companion) aparece no evento privacy com o conjunto inteiro de categorias já atualizado, mais qualquer disallowed list que o servidor reportou como alterada. Os valores vêm de uma leitura fresca — nunca do payload da notificação — e uma rajada de mudanças no celular colapsa em um único evento, debounced 1s.
Chame client.privacy.refreshFromAccountSync() para forçar um refresh você mesmo — o resultado é tanto retornado quanto re-emitido como evento privacy, então a view do client fica consistente independentemente de quem disparou. Chamadas concorrentes são deduplicadas.

Business

O client.business (WaBusinessCoordinator) lê perfis business e nomes verificados, e gerencia o seu próprio perfil business. Conta business — necessária para editar seu próprio perfil ou foto de capa; os métodos de leitura funcionam para qualquer conta.

Business hours tipados

WaBusinessHoursDay e WaBusinessHoursMode são aliases de union ('sun' | 'mon' | …, 'open_24h' | 'specific_hours' | 'appointment_only'). Os valores também estão congelados em WA_BUSINESS_HOURS_DAYS e WA_BUSINESS_HOURS_MODES. Passar um mode desconhecido para editBusinessProfile agora lança um erro local claro em vez de o servidor responder 406 not-acceptable — dias fechados continuam sendo expressos omitindo-os da config, não por um mode dedicado.

Configurações de chat

As configurações por chat — silenciar, fixar, arquivar, lido, lock, favoritar, limpar, excluir — ficam em client.chat e sincronizam entre seus dispositivos. Elas têm um guia próprio:

Gerenciando chats

Silencie, fixe, arquive, marque como lido, trave, favorite mensagens, limpe e exclua chats.
Última modificação em 19 de agosto de 2026