La WhatsApp Business API, senza il labirinto dei BSP.
Meta Business Solution Provider ufficiale da quando esiste l'API. Approvazione template, finestre di sessione, media, messaggi interattivi: tutto gestito. Oltre due miliardi di utenti WhatsApp al mese, raggiungibili da un unico endpoint identico a ogni altro canale Bird.
import { BirdClient } from "@bird/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 minuti da npm install al primo invio
Invia un messaggio WhatsApp dal linguaggio che già utilizzi.
SDK per ogni runtime principale. Il primo invio va a un destinatario di test autorizzato (+15005550009) con un template pre-approvato, così puoi integrare un check CI prima ancora di sottoporre il tuo primo template per l'approvazione.
import { BirdClient } from "@bird/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();Dieci cose che il filtro del BSP ti nasconde. Noi no.
WhatsApp è controllato da Meta. La scelta del BSP si riduce a questo: i vincoli compaiono nel codice o vengono nascosti in una dashboard. Noi abbiamo scelto il codice.
- 01
Meta Business Solution Provider (BSP) ufficiale
Rapporto diretto con Meta da quando esiste l'API. Nessun transito rivenduto, nessun passaggio tramite terzi.
- 02
Gestione dei template
Invia, monitora lo stato di approvazione e ricevi un webhook non appena Meta approva o rifiuta.
- 03
Gestione della finestra di sessione
L'SDK ti indica se è consentito il formato libero o il template prima dell'invio.
- 04
Messaggi interattivi
Pulsanti, liste, schede prodotto e WhatsApp Flows — dichiarati nello stesso payload.
- 05
Media e contenuti rich
Immagini, video, documenti, posizione, contatti, anteprime link, reazioni e risposte.
- 06
WhatsApp Flows
Form in-app a più passaggi con validazione backend, definiti in JSON, eseguiti da Meta.
- 07
Click-to-WhatsApp Ads
Integrazione con Meta Ads Manager: i clic sugli annunci aprono una conversazione a cui puoi rispondere.
- 08
Fallback cross-channel
Aggiungi fallback: "sms" a qualsiasi invio — alla scadenza della sessione il messaggio viene instradato automaticamente via SMS.
- 09
Webhook per messaggi in entrata
Eventi firmati HMAC per messaggi in entrata, conferme di lettura, reazioni e stato dei template.
- 10
2B+ utenti su un unico endpoint
Oltre due miliardi di utenti WhatsApp al mese raggiungibili con una singola chiamata bird.whatsapp.send.
Why we build WhatsApp
Siamo stati tra i primi BSP di WhatsApp. Siamo ancora tra i pochi che scrivono codice insieme a te.
WhatsApp è controllato. Serve un template approvato, una finestra di sessione con opt-in e una verifica aziendale Meta. Questo non cambia — e non cambierà. Ciò che cambia è se il tuo BSP rende quei vincoli più facili o più difficili da superare — esponendoli nel codice, su webhook a cui puoi iscriverti, con errori che dicono esattamente cosa non va. Noi abbiamo scelto la prima strada.
import { BirdClient } from "@bird/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..."Ogni cambio di stato è un webhook.
Payload firmati HMAC, protetti dal replay, idempotenti. Lo stesso formato su ogni canale Bird: ne impari uno, li conosci tutti.
{
"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"
}
}Programma di retry: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter dopo l'ultimo tentativo; ogni evento dead-letter è riproducibile dalla dashboard o dall'API.
whatsapp.queuedAccettato dall'API e in coda per l'invio a Meta.whatsapp.sentConsegnato alla Cloud API di Meta.whatsapp.deliveredMeta conferma che il messaggio è arrivato sul dispositivo del destinatario.whatsapp.readIl destinatario ha aperto il messaggio (se le conferme di lettura sono attive).whatsapp.failedErrore permanente — codice del motivo nel payload.whatsapp.receivedMessaggio in entrata da un utente all'interno della finestra di sessione di 24 ore.whatsapp.template.approvedMeta ha approvato un template che hai inviato.whatsapp.template.rejectedMeta ha rifiutato un template — motivo del rifiuto nel payload.
Il fallback su SMS è un attributo, non una seconda integrazione.
Se WhatsApp non riesce a consegnare — sessione scaduta, destinatario senza opt-in, template non ancora approvato — Bird instrada lo stesso messaggio via SMS nella stessa richiesta. Stessa autenticazione, stesso contratto di idempotenza, stesso formato webhook dall'altra parte.
WhatsApp con fallback.
await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
variables: { order_id: "BRD-49217" },
fallback: "sms",
});Un payload, un'autenticazione. Scadenza sessione, mancato opt-in, template non approvato: tutto instradato automaticamente via SMS.
SMS diretto.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order BRD-49217 has shipped.`,
});Gli stessi canali, indirizzati direttamente. Usalo quando vuoi il percorso SMS in modo esplicito.
A partire da $0,005 per messaggio + tariffa di conversazione Meta al costo.
Tariffazione a consumo. La tariffa di conversazione Meta viene trasferita al costo — senza ricarico. Sconti volume automatici sopra 100K/mese e di nuovo sopra 1M/mese. Nessun costo per utente, nessuna funzionalità bloccata dietro impegni annuali.