A API do WhatsApp Business, sem a burocracia dos BSPs.
Fornecedor oficial de soluções Meta Business desde que a API existe. Aprovação de templates, janelas de sessão, media, mensagens interativas — tudo resolvido. Mais de dois mil milhões de utilizadores mensais do WhatsApp, acessíveis a partir de um único endpoint, igual a qualquer outro canal Bird.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."5 minutos do npm install ao primeiro envio
Envie uma mensagem WhatsApp na linguagem que já utiliza.
SDKs em todos os principais runtimes. O primeiro envio vai para um destinatário de teste autorizado (+15005550009) com um template pré-aprovado, para que possa implementar uma verificação CI antes de submeter o seu primeiro template para aprovação.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "hello_world",
locale: "en_US",
}).safe();Dez coisas que o intermediário BSP esconde de si. Nós não escondemos.
O WhatsApp é controlado pela Meta. A escolha do BSP determina se essas barreiras aparecem no seu código ou ficam escondidas num painel. Nós escolhemos o código.
- 01
Fornecedor oficial de soluções Meta Business (BSP)
Relação direta com a Meta desde que a API existe. Sem trânsito revendido, sem intermediários de terceiros.
- 02
Gestão de templates
Submeta, acompanhe o estado de aprovação e receba um webhook assim que a Meta aprovar ou rejeitar.
- 03
Reconhecimento da janela de sessão
O SDK indica se a mensagem livre ou o template é permitido antes de enviar.
- 04
Mensagens interativas
Botões, listas, cartões de produto e WhatsApp Flows — declarados no mesmo payload.
- 05
Media e conteúdo rico
Imagens, vídeo, documentos, localização, contactos, pré-visualização de links, reações e respostas.
- 06
WhatsApp Flows
Formulários multi-passo dentro da app com validação de backend, definidos em JSON, executados pela Meta.
- 07
Anúncios Click-to-WhatsApp
Integração com o Meta Ads Manager para que os cliques nos anúncios cheguem a uma conversa que pode responder.
- 08
Fallback entre canais
Adicione fallback: "sms" a qualquer envio — a expiração de sessão encaminha automaticamente por SMS.
- 09
Webhooks de mensagens recebidas
Eventos assinados com HMAC para mensagens recebidas, confirmações de leitura, reações e estado de templates.
- 10
2B+ utilizadores num único endpoint
Mais de dois mil milhões de utilizadores mensais do WhatsApp acessíveis a partir de uma única chamada bird.whatsapp.send.
Por que construímos o WhatsApp
Fomos um dos primeiros BSPs do WhatsApp. Continuamos a ser um dos poucos que desenvolvem código consigo.
O WhatsApp é controlado. Precisa de um template aprovado; precisa de uma janela de sessão com opt-in; precisa da verificação de negócio da Meta. Essa parte não muda — e não vai mudar. O que muda é se o seu BSP torna essas barreiras mais fáceis ou mais difíceis de ultrapassar — expondo-as no seu código, em webhooks aos quais se pode subscrever, em erros que dizem exatamente o que está errado. Nós escolhemos a primeira opção.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."Cada mudança de estado é um webhook.
Payloads assinados com HMAC, protegidos contra replay, idempotentes. O mesmo envelope em todos os canais Bird — aprenda um, aprendeu todos.
{
"type": "whatsapp.read",
"id": "evt_7kQ02v...",
"created_at": "2026-05-19T15:42:08.114Z",
"data": {
"wa_msg_id": "wa_msg_8nB91Yk3p",
"from": "+15551234567",
"to": "+15005550009",
"conversation_id": "wa_conv_3pX1g7t",
"template": "order_shipped",
"delivered_at": "2026-05-19T15:42:01.802Z",
"read_at": "2026-05-19T15:42:08.020Z"
}
}Agenda de reenvio: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter após a última tentativa; cada evento em dead-letter pode ser reenviado a partir do painel ou da API.
whatsapp.queuedAceite pela API e em fila para envio à Meta.whatsapp.sentEntregue à Cloud API da Meta.whatsapp.deliveredA Meta confirma que a mensagem chegou ao dispositivo do destinatário.whatsapp.readO destinatário abriu a mensagem (se as confirmações de leitura estiverem ativas).whatsapp.failedFalha permanente — código de motivo no payload.whatsapp.receivedMensagem recebida de um utilizador dentro da janela de sessão de 24h.whatsapp.template.approvedA Meta aprovou um template que submeteu.whatsapp.template.rejectedA Meta rejeitou um template — motivo da rejeição no payload.
O fallback para SMS é um atributo, não uma segunda integração.
Se o WhatsApp não conseguir entregar — sessão expirada, destinatário sem opt-in, template ainda não aprovado — o Bird encaminha a mesma mensagem por SMS no mesmo pedido. Mesma autenticação, mesmo contrato de idempotência, mesmo formato de webhook do outro lado.
WhatsApp com fallback.
await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
variables: { order_id: "BRD-49217" },
fallback: "sms",
});Um payload, uma autenticação. Expiração de sessão, falha de opt-in, template não aprovado — tudo encaminhado automaticamente por SMS.
SMS direto.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order BRD-49217 has shipped.`,
});Os mesmos canais, endereçados diretamente. Use quando quiser o caminho SMS de forma explícita.
A partir de $0,005 por mensagem + taxa de conversa da Meta ao custo.
Preço por utilização. Repassamos a taxa de conversa da Meta ao custo — sem margem. Descontos por volume aplicam-se automaticamente acima de 100K/mês e novamente acima de 1M/mês. Sem taxa por utilizador, sem funcionalidades bloqueadas por compromissos anuais.