Programa Builders

Construa com a gente por um mês inteiro. Uso e add-ons ilimitados, chamadas semanais e seu próprio canal no Slack.

Saiba mais
Polymorfa

API de mensagens

Todo número de WhatsApp, uma só API

Números Linked Devices e Meta Cloud API respondem aos mesmos endpoints, chamadas do SDK e eventos de webhook. Envie 20 tipos de mensagem, gerencie grupos, canais e catálogos, ou mantenha o formato de requisição da Meta.

Tipos de mensagem em uma chamada de envio
20
Tipos de evento de webhook
88
Janela da Idempotency-Key
24 h
Operações da API
231

Duas rotas

Seu código não precisa escolher um lado.

O número decide a rota. Endpoints, chamadas do SDK e nomes de eventos continuam iguais, e o que uma rota não consegue fazer retorna um erro de capacidade claro.

Linked Devices
  • A empresa mantém o número e o app do WhatsApp
  • Grupos, canais, edições, enquetes e catálogos
  • BanSafe Health em cada número conectado
Meta Cloud API
  • Números oficiais e modelos aprovados
  • Verificação de credenciais e registro
  • Relatório de preços da Meta por número
Hybrid Link
  • As duas conexões em um número Pro
  • Uma rota preferida por equipe, projeto ou número
  • Fixe um único envio em qualquer uma das rotas

O que você pode enviar

Uma chamada de envio, 20 tipos de mensagem.

Coloque exatamente um tipo dentro de content: texto, mídia e mensagens de voz, enquetes, localizações e contatos, botões, listas e fluxos, produtos, pedidos e modelos. Alguns tipos funcionam em uma rota só.

Cada tipo é validado separadamente. Envie mídia por URL ou base64, responda a uma mensagem, mencione pessoas e marque uma mensagem como encaminhada na mesma chamada. Votos em enquetes voltam como message.vote.
Aja sobre a conversa. Reaja, edite, apague, favorite, marque como vista e mostre que está digitando, com o ID de mensagem que o envio retornou.

Grupos, canais e comércio

O que o app faz, pela API.

Gerencie grupos e canais, administre o catálogo do Business App e envie pedidos no Brasil com Pix pela mesma API.

Grupos. Crie grupos, adicione membros, promova administradores e escolha quem pode enviar ou entrar. Números oficiais também gerenciam grupos.
Canais. Crie, siga e silencie canais, reaja a atualizações e consulte as contagens de visualizações e reações.
Catálogos e pedidos com Pix. Gerencie produtos e coleções em números conectados. Números oficiais enviam pedidos com código Pix, link de pagamento ou boleto, e você recebe cada atualização de pagamento.

No seu código

Da chave à resposta em quatro passos.

Cada passo em TypeScript, pela CLI ou em REST puro. Escolha o que combina com a sua stack.

send.ts
import { MessagingClient } from "@polymorfa/sdk";

const messaging = new MessagingClient({
  credential: { type: "apiKey", value: process.env.POLYMORFA_KEY! },
});

const sent = await messaging.messages.send("my-number", {
  conversation: { phoneNumber: "+15550001111" },
  content: { image: { url: "https://acme.example/1042.jpg", caption: "Packed and ready" } },
});

Receber

Eventos que esperam por você.

Webhooks assinados são reenviados por 24 horas. Streams de eventos levam os mesmos eventos por uma única conexão e retomam a partir do seu último cursor.

88 tipos de evento. Mensagens, chamadas, grupos, pedidos, campanhas e clientes. Escolha o formato de webhook nativo ou o da Meta; os dois são assinados com HMAC-SHA256 sobre o corpo bruto.
Novas tentativas em um cronograma fixo. Até 8 tentativas ao longo de 24 horas. Uma nova tentativa mantém o ID do evento, para você descartar duplicatas.
Streams de eventos. Server-sent events para servidores sem endpoint público. Um cursor retoma o stream por 24 horas.
Tentar novamente nunca envia duas vezes. Repita um envio com a mesma Idempotency-Key em até 24 horas e ele retorna idempotency_completed em vez de enviar de novo.

Traga seu código

Mantenha o código que você já roda.

Aponte o código da Meta Cloud API para a URL base da Graph API ou conecte um cliente Baileys existente ao Raw WhatsApp Bridge.

O formato da Meta em qualquer número. Troque a URL base e mantenha o formato da requisição. Números Linked Devices respondem às mesmas requisições, e o que uma rota não consegue fazer retorna o erro de capacidade da Meta.
Raw WhatsApp Bridge. Um token de projeto resolve um endpoint WebSocket. Conecte seu cliente Baileys a ele.

Superfície da API

O que você mais chama.

Uma seleção da API de mensagens. A referência lista cada endpoint com escopo, requisição e resposta.

Mensagens e roteamento

  • POST/messaging/{number}/messages/sendEnviar qualquer tipo de mensagem
  • POST/messaging/{number}/messages/reactReagir a uma mensagem
  • PUT/messaging/{number}/chats/{chat}/messages/{id}Editar uma mensagem enviada
  • POST/messaging/{number}/messages/seenMarcar mensagens como vistas
  • GET/messaging/{number}/contacts/checkVerificar se números estão no WhatsApp
  • PUT/messaging/routing/hybridDefinir uma política de roteamento do Hybrid Link

Grupos, canais e comércio

  • POST/messaging/{number}/groupsCriar um grupo
  • POST/messaging/{number}/groups/{id}/participants/addAdicionar membros ao grupo
  • POST/messaging/{number}/official-groupsCriar um grupo em um número oficial
  • POST/messaging/{number}/channelsCriar um canal
  • POST/messaging/{number}/business/productsAdicionar um produto ao catálogo
  • POST/messaging/{number}/business/orders/{orderId}/lookupConsultar os detalhes de um pedido

Eventos de webhook

  • Eventomessage.receivedAlguém escreveu para o número
  • Eventomessage.ackConfirmações de entrega e leitura
  • Eventomessage.voteAlguém votou em uma enquete
  • Eventogroup.participantMembros entraram, saíram ou mudaram de função
  • Eventoorder.payment_updatedO WhatsApp informou uma atualização de pagamento
  • Eventosession.statusO número conectou ou desconectou

Streams, histórico e bridges

  • GET/platform/projects/{projectId}/events/streamTransmitir eventos por SSE
  • GET/platform/projects/{projectId}/eventsConsultar o histórico de eventos
  • POST/platform/projects/{projectId}/events/{eventId}/replaysReenviar um evento para um webhook
  • POST/graph/whatsapp/v26.0/{phoneNumberId}/messagesEnviar no formato da Meta
  • GET/messaging/bridge/routeResolver o endpoint do Bridge

Comece com um número grátis

Seu primeiro número real é grátis. Adicione mais números no Pay-As-You-Go.