Bird vs 360dialog

360dialog

Bird vs 360dialog pour WhatsApp

360dialog est un fournisseur exclusivement WhatsApp, et c'est la comparaison où cette spécialisation se remarque. Ils transmettent le payload de Meta tel quel, publient leurs tarifs et exploitent leur propre serveur MCP hébergé. Bird est une plateforme où WhatsApp est un canal parmi d'autres, et un agent peut envoyer dessus.

Ce que 360dialog fait très bien.
Ce qui différencie Bird.

Ce que 360dialog fait très bien

Le payload de Meta, inchangé. Leur corps d'envoi reprend la structure de message Cloud API : messaging_product, recipient_type, to, type et l'objet correspondant. Une équipe disposant déjà de code Cloud API change l'hôte et l'en-tête d'authentification et conserve le payload — c'est le chemin de migration le plus court dans cette comparaison, et Bird ne peut pas l'offrir.

Une grille tarifaire publiée, en libre-service. Chaque palier est un montant mensuel par numéro WhatsApp, avec les frais de conversation Meta facturés séparément, et les paliers partenaires publient aussi leurs frais de plateforme et par canal. Vous pouvez chiffrer un déploiement depuis le site web sans parler à qui que ce soit.

WhatsApp, c'est toute l'entreprise. Pas d'e-mail, pas de SMS, pas de voix, et une page de statut qui sépare leurs propres composants de ceux de Meta. Si WhatsApp est votre seul canal et que vous voulez un fournisseur dont la feuille de route ne peut pas être détournée ailleurs, cette spécialisation est l'argument — et c'est un vrai argument.

Ce qui différencie Bird

Un agent capable d'envoyer le message. Les deux exploitent un serveur MCP hébergé, et voici la différence : les outils de 360dialog gèrent les templates, les profils et les webhooks, et leur documentation décrit la composition d'un exemple de corps JSON pour l'envoi via leur Messaging API. Les 43 outils WhatsApp de Bird incluent l'envoi lui-même et l'enregistrement de numéro.

Un réessai qui ne peut pas envoyer en double. Un en-tête Idempotency-Key sur l'envoi sécurise la répétition. Leur documentation sur les messages ne mentionne aucune clé ni en-tête d'idempotence, et sur WhatsApp un doublon ouvre une seconde conversation facturable au lieu de simplement se répéter.

Un SDK typé plutôt que l'enveloppe de Meta. Transmettre la structure Cloud API revient à hériter de son ergonomie : messaging_product sur chaque requête, et le type de contenu répété à la fois dans type et dans l'objet adjacent. L'envoi avec Bird est un seul appel typé dont le corps nomme directement le contenu, en TypeScript, Python, Go ou PHP.

La matrice

Fonctionnalité par fonctionnalité.

Les deux sont des BSP Meta et les deux exploitent un serveur MCP hébergé, ce qui en fait la comparaison la plus serrée de la série sur l'axe où Bird l'emporte habituellement. Lisez la ligne agent en regard des pages Twilio et Infobip : Bird l'emporte là-bas pour d'autres raisons, et ici tout repose sur un point — l'agent peut-il envoyer.

CapabilityBird360dialogWho wins?
Requête d'envoiJSON vers /v1/whatsapp/messages sur votre hôte régional avec une clé API bearer, et le corps nomme directement le type de contenu.JSON vers un endpoint messages sur leur hôte WABA avec un en-tête D360-API-KEY. Le corps reprend la structure Cloud API de Meta : messaging_product, recipient_type, to, type et l'objet correspondant.
360dialog
Réessais sécurisésUn en-tête Idempotency-Key sur l'envoi sécurise le réessai.Leur documentation sur les messages ne mentionne aucune clé ni en-tête d'idempotence, un réessai après un timeout peut donc envoyer deux fois.
Ce qu'un agent peut faire43 outils WhatsApp sur le serveur hébergé à mcp.bird.com, incluant l'envoi lui-même, le cycle de vie des templates jusqu'à la soumission à Meta, l'enregistrement et le profil du numéro, et les statistiques.Un serveur hébergé à mcp.360dialog.com/mcp dont les outils créent, prévisualisent, listent et suppriment des templates, définissent le nom d'affichage et le profil d'un canal, configurent les webhooks, et consultent les comptes, canaux, soldes et factures. Leur documentation décrit la production d'un exemple de corps JSON pour l'envoi via leur Messaging API.
Comportement d'un outil protégéUn outil que votre autorisation ne permet pas d'appeler reste listé et est annoté avec le scope requis, et un refus répond par une élévation OAuth. Le masquer avait été essayé puis abandonné : cela rendait un scope manquant indiscernable d'une fonctionnalité manquante, et les agents tiraient la seconde conclusion.Les scopes sont choisis au moment de l'autorisation et en refuser un masque les outils correspondants, de sorte qu'un agent ne voit jamais un outil qu'il ne peut pas appeler.
360dialog
Types de contenuUn seul corps d'envoi sélectionne texte, template, image, vidéo, audio, sticker, document, localisation, interactif ou cartes de contact.Un seul endpoint d'envoi prend en charge la liste complète des types Meta : text, image, audio, video, document, sticker, location, contacts, interactive, template et reaction.
360dialog
SDK typésSDK typés pour TypeScript, Python, Go et PHP, générés à partir de l'API.Aucun SDK officiel par langage n'apparaît dans leur index de documentation. Le payload étant celui de Meta, un client Cloud API existant fonctionne avec leur hôte.
Canaux au-delà de WhatsAppSMS, e-mail, voix, Verify et Realtime partagent la même URL de base et la même clé, un second canal est donc un autre endpoint plutôt qu'un autre fournisseur.WhatsApp est le produit. RCS est accessible sur invitation plutôt qu'en libre-service, et il n'y a ni e-mail, ni SMS, ni voix.
Tarifs publiésLes tarifs sont publiés par pays sur la page de tarification WhatsApp.Chaque palier est publié sous forme de montant mensuel par numéro, les frais de conversation Meta étant facturés séparément et sans majoration.
360dialog

Le même message

Envoi d'un template WhatsApp.

La requête de 360dialog est celle de Meta, et c'est précisément l'intérêt : si vous envoyez déjà via la Cloud API, seuls l'hôte et l'en-tête d'authentification changent. Celle de Bird est un appel typé où le type de contenu est le nom du champ plutôt qu'une valeur répétée à côté de son objet, et elle accepte un Idempotency-Key.

360dialog

360dialog

whatsapp.ts
const orderId = "ord_8f21";

const response = await fetch("https://waba-v2.360dialog.io/messages", {
  method:  "POST",
  headers: {
    "D360-API-KEY": process.env.D360_API_KEY!,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    messaging_product: "whatsapp",
    recipient_type:    "individual",
    to:                "15551234567",
    type:              "template",
    template: {
      name:     "order_shipped",
      language: { code: "en_US" },
      components: [
        { type: "body", parameters: [{ type: "text", text: orderId }] },
      ],
    },
  }),
});

const result = await response.json();
console.log(result.messages[0].id);

Bird

whatsapp.ts
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const orderId = "ord_8f21";

const { data, error } = await bird.whatsapp
  .send(
    {
      from:     "+13124495648",
      to:       "+15551234567",
      template: {
        slug:       "order_shipped",
        language:   "en_US",
        components: [{ type: "body", parameters: [{ type: "text", text: orderId }] }],
      },
    },
    { idempotencyKey: orderId },
  )
  .safe();

if (error) console.error(error.message);
else console.log(data.id, data.status);

Coût de migration

Modéré.

L'envoi est une véritable réécriture plutôt qu'un simple renommage, car vous quittez l'enveloppe Meta. messaging_product et recipient_type disparaissent, le type de contenu cesse d'être une valeur répétée à côté de son objet pour devenir le champ lui-même, et l'en-tête D360-API-KEY devient une clé bearer. En contrepartie, l'appel devient typé et un retry devient sûr.

Le facteur de planification relève de Meta et non de l'un ou l'autre fournisseur. Les templates sont approuvés en fonction du WhatsApp Business Account auquel ils sont rattachés : changer de fournisseur implique de les soumettre à nouveau et d'attendre. Bird prend en charge la rédaction, le versionnage par langue et la soumission via l'API et comme outils d'agent, ce qui rend la resoumission scriptable plutôt que ressaisie manuellement.

Les questions que les gens posent vraiment

Bird est-il une bonne alternative à 360dialog ?
Si WhatsApp est votre seul canal et que vous avez déjà du code Meta Cloud API, 360dialog est difficile à battre en termes d'effort : le payload ne change pas et leurs tarifs sont publiés. Bird est le meilleur choix si vous voulez un envoi sûr à retenter, un SDK typé, un agent capable d'envoyer le message plutôt que de composer la requête, ou un second canal plus tard sans un second fournisseur.
Les deux ont un serveur MCP. Quelle est la vraie différence ?
La portée. Le serveur de 360dialog gère le compte : il crée, prévisualise, liste et supprime des templates, définit les noms d'affichage et les profils, configure les webhooks, et consulte les comptes, canaux et factures. Ce que leur documentation décrit pour un envoi, c'est la composition d'un exemple de corps JSON à envoyer via leur Messaging API. Les 43 outils WhatsApp de Bird incluent l'envoi lui-même et l'enregistrement du numéro, de sorte qu'un agent peut mener un message jusqu'à son expédition.
Lequel gère mieux une permission manquante ?
Ils font des choix opposés et les deux se défendent. 360dialog masque un outil dont vous avez refusé la portée, de sorte qu'un agent ne peut pas être amené à tenter quelque chose qu'il ne voit pas — c'est la position la plus forte contre l'injection de prompt. Bird le garde listé, annote la portée requise et répond à un refus par un step-up OAuth, car le masquage a été testé et rendait une portée manquante indiscernable d'une capacité manquante, et les agents concluaient la seconde. Choisissez le risque que vous préférez assumer.
Est-ce que je perds quelque chose en quittant la structure de payload Meta ?
La portabilité, et cela mérite d'être dit. Un payload Cloud API fonctionne directement avec Meta et avec tout fournisseur qui le transmet tel quel, donc conserver cette structure garde une porte ouverte. L'envoi de Bird a sa propre structure typée, plus facile à écrire et à lire, mais non portable vers un autre BSP sans modification. Si la portabilité de fournisseur est l'exigence, c'est un argument en faveur de 360dialog plutôt que contre eux.

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor