01/Segurança

Como protegemos seus números e seus dados

Cada linha desta página é algo que o código faz, com o valor que comprova. As linhas marcadas como opcional ficam desligadas até você ativar. Não temos nenhuma certificação de segurança e não dizemos ter.

Seus números de WhatsApp

Em toda conta. As linhas opcionais ficam desligadas até você ativar.
  • saída

    Cada número se conecta pelo próprio IP residencial no seu país. O proxy caiu? O número fica offline, nunca num IP de datacenter.

    egress: residential or refuse

  • sticky

    A saída continua a mesma entre reinícios. Ela só muda depois de 3 conexões com falha, no máximo 4 vezes por dia, ou 8 se o número continuar fora do ar.

    sticky · rotate_after=3 · max 8/day

  • opcional

    Ritmo de envio, se você ativar: primeiro aparece "digitando…", depois saem no máximo 12 por minuto, e 5 por minuto para contatos novos. Desligado por padrão.

    messagesPerMinute 12 · firstContactPerMinute 5

  • checagem

    Antes da primeira mensagem para alguém, perguntamos ao WhatsApp se o número está lá. Se não estiver, nada é enviado.

    message.failed · not_on_whatsapp

  • parada

    Um número que o WhatsApp desconectou ou baniu não é reconectado em loop, o que costuma piorar a situação.

    disconnectReason temporary_ban · logged_out

  • quedas

    Quando o proxy cai, a conexão volta sozinha. Os envios na fila esperam o número e saem quando ele volta.

    queued → ready → sent

Seus dados e sua API

Em toda conta. Nada para configurar.
  • assinado

    Todo webhook é assinado com HMAC-SHA256 sobre um timestamp e o body, para que seu endpoint possa recusar uma request falsa ou repetida.

    Wuapi-Signature: t=…,v1=…

  • retries

    Seu endpoint não respondeu 2xx? A gente faz retry, 6 tentativas no total. Cada evento tem um ID para deduplicar.

    retries 30s · 2m · 10m · 1h · 6h

  • idempotente

    Todo POST aceita uma Idempotency-Key, então um retry depois de um timeout nunca envia duas vezes.

    Idempotency-Key · replayed 24h

  • isolado

    Dê a cada cliente um projeto com as próprias keys. Uma key de projeto não enxerga outro projeto: esses IDs respondem 404.

    project key → one project · 404 not_found

  • em repouso

    As API keys são guardadas como hashes. A sessão de que cada número precisa é guardada criptografada.

    sha256(key) · AES-GCM session snapshots

  • cartões

    Os pagamentos passam pela Stripe. Dados de cartão nunca chegam ao wuapi.

    Stripe Checkout · Stripe Tax

Acesso e contas

Quem pode chamar o quê, e como as pessoas entram.
  • authz

    Cada chamada é checada contra sua organização, papel e projeto antes de ler ou gravar qualquer coisa, e um teste falha se alguma função pular essa checagem.

    customer builders · publicSurface.test.ts

  • rate limit

    Cada API key tem 600 requests por minuto. Passou disso, você recebe um 429 com Retry-After.

    429 rate_limited · RateLimit-Remaining

  • rotação

    Revogue uma API key ou rotacione o secret de um webhook quando quiser, pela API ou pelo dashboard.

    POST webhook-endpoints/{id}/rotate-secret

  • envio

    Os webhooks só vão para URLs HTTPS públicas, nunca seguem redirects e dão timeout em 10 segundos.

    https only · redirect: manual · 10s

  • login

    Login com Google e GitHub exige e-mail verificado. E-mails descartáveis não podem criar conta.

    email_verified · one email, one user

  • equipe

    Quando nossa equipe entra na sua organização para ajudar, precisa informar um motivo, e cada alteração feita fica registrada em auditoria.

    impersonation · reason required · audited

O que guardamos

A mesma lista da política de privacidade.
  • Sua conta: o e-mail e um hash da sua senha, ou sua identidade do Google ou do GitHub.
  • De cada número: o número de telefone, o nome do perfil, o status de conexão e os logs, e a sessão de que ele precisa para continuar vinculado.
  • As mensagens enviadas e recebidas pela API, com mídia, para que a API, o dashboard e os retries de webhook possam devolvê-las.
  • Os endpoints de webhook e um log das deliveries. As API keys, como hashes.
  • O tráfego de proxy por número, para a cobrança. Referências de cobrança da Stripe, nunca dados de cartão.

Excluir uma conta conectada também a desvincula do celular. Para excluir sua organização e os dados dela, escreva para o suporte.

Política de privacidade

O que nenhum setup consegue garantir

O wuapi vincula seu número como um dispositivo, igual ao WhatsApp Web, e é um serviço independente, sem vínculo com o WhatsApp. É o WhatsApp que decide quais números restringir. Um proxy tira um sinal de rede, mas não muda o que você envia nem como as pessoas reagem, então o consentimento é com você.

Mantenha seu número saudável

Confira você mesmo

A status page checa a API, a engine e os webhooks a cada minuto. A documentação mostra como verificar uma assinatura, e o SLA diz o que os planos de suporte pagos garantem.