Engagez vos clients dans le monde entier avec l<highlight>API WhatsApp</highlight>
Connectez vos équipes marketing, service client et opérations avec vos clients sur l'application de messagerie la plus populaire au monde.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "#4821" },
{ type: "text", name: "date", text: "Wednesday" },
] }],
},
});
console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"5 minutes entre npm install et votre premier envoi
Envoyez un WhatsApp dans le langage que vous utilisez déjà.
Des SDK dans chaque runtime majeur. Le premier envoi s'effectue via un modèle géré par Bird comme bird_delivery_update, déjà approuvé par Meta et sélectionnant automatiquement son expéditeur — vous voyez un vrai message arriver avant même d'en créer un vous-même.
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_otp",
components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
},
});
console.log(msg.id, msg.status);Huit choses que nous gérons entre vous et Meta.
WhatsApp est contrôlé : un modèle approuvé, un destinataire ayant donné son consentement, une entreprise vérifiée. Ces conditions ne changent pas. Votre fournisseur décide si elles apparaissent dans votre code ou sont enfouies dans un tableau de bord.
- 01
Fournisseur officiel de solutions Meta Business (BSP)
Relation directe avec Meta depuis la création de l'API. Aucun transit revendu, aucun intermédiaire tiers.
- 02
Gestion des modèles
Consultez le catalogue et le verdict de Meta par langue depuis le CLI ou les outils MCP. La création et la soumission se font dans le tableau de bord.
- 03
Des modèles dans toutes les langues
Un identifiant, plusieurs langues. Spécifiez-en une lors de l'envoi, ou laissez la langue par défaut du modèle s'appliquer.
- 04
Boutons et carrousels
Boutons lien, réponse rapide, numéro de téléphone et copie de code, ainsi que des carrousels de 2 à 10 cartes.
- 05
Médias et contenu enrichi
Images, vidéo, audio, stickers, documents et localisation, chacun dans un seul champ d'envoi.
- 06
Tags et métadonnées à chaque envoi
Les tags deviennent des dimensions de filtre et d'analyse ; les métadonnées sont renvoyées dans chaque webhook.
- 07
Webhooks de messages entrants
Événements signés par HMAC pour les messages entrants, les accusés de réception et les confirmations de lecture.
- 08
Plus de 3 milliards d'utilisateurs sur un seul endpoint
Plus de trois milliards d'utilisateurs WhatsApp mensuels accessibles depuis un seul appel bird.whatsapp.send.
Explorez la plateforme WhatsApp
Chaque fonctionnalité en détail. Une API, un jeu de clés.
Modèles.
Catégories, approbation par langue et variables remplies au moment de l'envoi.
Envoi.
Un type de contenu par requête, clés d'idempotence, tags et métadonnées.
Bidirectionnel.
Messages entrants, fenêtre de service client de 24 heures et réponses.
Numéros.
Expéditeurs gérés par Bird, utilisation de votre propre numéro et comptes professionnels.
Tarification.
Un tarif tout compris par message, selon le pays de destination et la catégorie.
FAQ.
Toutes vos questions sur WhatsApp au même endroit, du premier envoi aux statistiques.
Pourquoi nous développons WhatsApp
Nous avons été l'un des premiers BSP WhatsApp. Nous sommes toujours l'un des rares à coder avec vous.
WhatsApp est contrôlé. Vous avez besoin d'un modèle approuvé ; vous avez besoin d'une fenêtre de service client ouverte pour envoyer autre chose qu'un modèle ; vous avez besoin d'une vérification Meta de votre entreprise. Cela ne change pas et ne changera pas. Ce qui change, c'est si votre BSP rend ces contrôles plus faciles ou plus difficiles à franchir : en les exposant dans votre code, via des webhooks auxquels vous pouvez vous abonner, dans des erreurs qui indiquent précisément le problème. Nous avons choisi la première option.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "#4821" },
{ type: "text", name: "date", text: "Wednesday" },
] }],
},
});
console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"Chaque changement d'état est un webhook.
Payloads signés par HMAC, protégés contre le rejeu, idempotents. La même enveloppe sur chaque canal Bird : apprenez-en un, vous les connaissez tous.
{
"type": "whatsapp.read",
"timestamp": "2026-05-19T15:42:08.114Z",
"data": {
"whatsapp_id": "wam_01krdgeqcxet5s7t44vh8rt9mg",
"workspace_id": "ws_01krdgeqcxet5s7t44vh8rt9mg",
"direction": "outbound",
"from": { "phone_number": "+15557654321" },
"to": { "phone_number": "+15551234567" },
"tags": [{ "name": "campaign", "value": "order-updates" }],
"metadata": { "order_id": "BRD-49217" }
}
}Calendrier de réessai : 5 s, 5 min, 30 min, 2 h, 5 h, puis 10 h deux fois. Après la dernière tentative, la livraison échoue définitivement, et la relecture permet de la récupérer depuis le tableau de bord ou l'API.
whatsapp.acceptedAccepté par l'API et mis en file d'attente pour envoi à Meta.whatsapp.sentTransmis à l'API Cloud de Meta.whatsapp.deliveredMeta confirme que le message est arrivé sur l'appareil du destinataire.whatsapp.readLe destinataire a ouvert le message (si les accusés de lecture sont activés).whatsapp.rejectedRefusé avant l'envoi, et non facturé : code de raison dans le payload.whatsapp.failedÉchec permanent : code de raison dans le payload.whatsapp.receivedMessage entrant d'un utilisateur WhatsApp.
Joindre le même client par SMS, c'est le même appel, un champ plus loin.
Même client, même authentification, même enveloppe d'erreur, même structure de webhook. Ce qui change, c'est le payload : WhatsApp transporte un modèle approuvé par Meta, SMS transporte du texte. Les tags et métadonnées accompagnent les deux, donc un seul jeu de tableaux de bord couvre la paire.
await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_delivery_update",
language: "en",
components: [{ type: "body", parameters: [
{ type: "text", name: "ref", text: "BRD-49217" },
{ type: "text", name: "date", text: "10 Jul 2026" },
] }],
},
});Un modèle géré par Bird : approuvé par Meta, disponible dans plus de 70 langues, et il sélectionne automatiquement son expéditeur. Les valeurs des variables sont transmises en tant que composants.
SMS
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your order BRD-49217 has shipped.`,
category: "transactional",
});Le même verbe sur l'autre canal : texte libre plus une catégorie, sans approbation de modèle à prévoir.
Un tarif par message, frais Meta inclus.
Tarification à l'usage. Chaque tarif couvre les frais Meta et les nôtres en un seul montant, et suit le pays de destination et la catégorie de message. Aucun frais par utilisateur et rien qui exige un engagement annuel.