Criptografia de ponta a ponta
Decida quem pode ler suas mensagens
Escolha um nível de dados para cada número. A Polymorfa armazena as conversas na região, não armazena nada ou apenas repassa o texto cifrado enquanto as chaves Signal ficam nos seus servidores ou no navegador.
- Níveis de dados para cada número
- 4
- Chaves Signal que guardamos em números de conhecimento zero
- 0
- Maior tempo de cópia na fila sem armazenamento hospedado
- 24 h
- Bancos de dados com adaptadores oficiais
- 9
Níveis de dados
Um número, quatro formas de guardar os dados dele
Em números hospedados e de repasse, a Polymorfa processa o conteúdo das mensagens para entregá-lo. Nos dois níveis de conhecimento zero, só você consegue descriptografá-lo.
Números de conhecimento zero
Nós levamos o tráfego, você fica com as chaves
A Polymorfa mantém a conexão com o WhatsApp, as confirmações, as novas tentativas e o ritmo. Toda operação que precisa de uma chave privada vai para o seu serviço Signal, e o texto puro das mensagens nunca chega aos nossos servidores, nem na memória nem em disco.
Seu banco de dados
Sincronize com o banco de dados que você já usa
Todas as linguagens de SDK compartilham um único contrato de armazenamento. Aponte um handler de webhook ou um stream de eventos para um adaptador, e conversas, mensagens, contatos, mídia e histórico chegam às suas próprias tabelas.
Mídia e histórico diretos
Mídia e histórico sem conta de armazenamento
O SDK envia a mídia ao WhatsApp e baixa os blocos de histórico por conta própria, então nenhum dos dois gera custo de armazenamento. Os dois são grátis, sem medição.
- Em números de conhecimento zero, a chave da mídia e o texto puro nunca chegam à Polymorfa
- Seu serviço Signal cuida de todo o histórico dos números de conhecimento zero
- Os buffers de texto puro para novas tentativas e eventos ficam desativados em todos os números, garantido pelo banco de dados
No seu código
Mantenha sua cópia com poucas linhas
Guarde eventos no seu banco de dados, envie mídia direto ao WhatsApp, arquive no seu bucket ou leia conversas hospedadas.
import { webhooks } from "@polymorfa/sdk";
import { storageWebhookHandler } from "@polymorfa/storage";
import { postgresAdapter } from "@polymorfa/storage/postgres";
const store = storageWebhookHandler(
postgresAdapter({ connectionString: process.env.DATABASE_URL! }),
);
export async function POST(request: Request) {
const event = await webhooks.verify({
body: await request.arrayBuffer(),
signature: request.headers.get("x-webhook-signature") ?? "",
secret: process.env.WEBHOOK_SECRET!,
});
await store(event); // chats, messages, contacts, media
return Response.json({ received: event.id });
}Superfície da API
A API de dados
Conversas hospedadas pela API de mensagens e os comandos que o SDK usa para mídia e histórico diretos.
Armazenamento hospedado de mensagens
- GET
/Liste as conversas guardadasmessaging/ {number}/ chats - GET
/Obtenha uma conversamessaging/ {number}/ chats/ {chat} - GET
/Percorra as mensagens guardadasmessaging/ {number}/ chats/ {chat}/ messages - GET
/Baixe a mídia guardadamessaging/ {number}/ chats/ {chat}/ messages/ {id}/ media
Mídia e histórico diretos
- POST
/Envie texto cifrado pelo númeromessaging/ {number}/ media/ relay-uploads - POST
/Permissão de curta duração para enviar pela sua redemessaging/ {number}/ media/ upload-grants - POST
/Peça ao celular para enviar um bloco de novomessaging/ {number}/ history/ chunk-retries - Eventohistory.syncUm bloco de histórico está pronto para baixar
Comece com um número grátis
Seu primeiro número real é grátis. Adicione mais números no Pay-As-You-Go.