Bird vs Bandwidth
Bird vs Bandwidth pour SMS
Bird est la plateforme SMS qu'un agent IA peut piloter de bout en bout : envoyer le message, confirmer la livraison, enregistrer votre marque 10DLC. Chacune de ces actions est un outil sur le serveur MCP hébergé de Bird, prêt dès que votre agent se connecte. Bandwidth divise le canal en deux : l'envoi se fait sur un hôte et l'enregistrement 10DLC sur un autre, chacun avec son propre chemin de compte. Ici, envoi, enregistrement et événements de livraison sont regroupés sous un seul hôte et une seule clé.
En chiffres
Couverture SMS
Routes opérateur
Vitesse de livraison
Ce en quoi Bandwidth excelle.
Ce qui différencie Bird.
Ce en quoi Bandwidth excelle
They are the carrier. Bandwidth is a licensed US carrier (CLEC) that owns and operates its own 48-state network, with emergency services beside it, which is why their own hero names Voice, Messaging and Emergency together.
Bibliothèques clientes dans plus de langages. SDK officiels pour Java, Node.js, Python, PHP, C# et Ruby. Un projet Java ou Ruby interagit avec l'API HTTP de Bird à la place.
Ce qui différencie Bird
Un agent pilote le compte lui-même. Le serveur MCP hébergé sur mcp.bird.com donne à un agent des outils pour envoyer des SMS, consulter le statut de livraison et enregistrer des marques 10DLC sur votre véritable espace de travail.
Une nouvelle tentative qui ne peut pas envoyer en double. Un en-tête Idempotency-Key sur l'envoi rend la répétition sûre ; la spécification OpenAPI de messagerie de Bandwidth ne contient aucun champ ni en-tête d'idempotence.
L'intention du message est un champ de premier ordre. Chaque envoi en texte libre comporte une catégorie : transactionnel, marketing, authentification ou service — un champ sans équivalent chez Bandwidth.
La matrice
Fonctionnalité par fonctionnalité.
Bandwidth propose des bibliothèques clientes dans plus de langages. Bird l'emporte sur un hôte unique pour l'ensemble du canal, les tentatives sécurisées, l'intention du message et une surface agent accessible par tout client MCP. Les deux se rejoignent sur la structure de l'envoi, l'enregistrement 10DLC et les événements de livraison. Les deux analyses sont exactes à ce jour.
| Capability | Bird | Bandwidth | Who wins? |
|---|---|---|---|
| Requête d'envoi | JSON vers /v1/sms/messages sur votre hôte régional, avec une clé API bearer. | JSON vers un endpoint messages sous votre chemin de compte sur leur hôte de messagerie, avec from, to et text, authentifié via HTTP Basic et portant un applicationId. | |
| Tentatives sécurisées | Un en-tête Idempotency-Key sur l'envoi rend toute nouvelle tentative sûre. | Leur spécification OpenAPI de messagerie, version 4.3.0, ne contient aucun champ ni en-tête d'idempotence, si bien qu'une nouvelle tentative après un timeout peut envoyer le message deux fois. | |
| Intention du message | Chaque envoi en texte libre comporte une catégorie : transactionnel, marketing, authentification ou service. | tag porte un libellé libre et priority définit la priorité de livraison, mais aucun des deux ne déclare la raison de l'envoi du message. | |
| Serveur MCP hébergé | Apportez votre propre agent. mcp.bird.com est hébergé, donc Claude Code, Cursor, ChatGPT ou votre propre runtime se connecte une seule fois et pilote l'espace de travail avec les mêmes outils. | Bandwidth publie un serveur MCP et ses outils pilotent effectivement le compte. C'est un package que vous téléchargez et exécutez localement, le client doit donc le lancer en tant que processus local, et il récupère vos identifiants de production depuis une configuration locale. | |
| Enregistrement A2P 10DLC | /v1/sms/10dlc/* enregistre les marques et campagnes via l'API. | Leur API de gestion de campagnes enregistre les marques et campagnes, avec vérification de marque et import de campagnes, en tant que partenaire direct du Campaign Registry. | |
| Un seul hôte pour l'ensemble du canal | L'envoi, l'enregistrement 10DLC et les événements de livraison partagent une URL de base et une clé uniques. | L'envoi passe par leur hôte de messagerie et l'enregistrement par leur hôte API principal, chacun avec son propre chemin de compte — un client gère donc deux racines. | |
| Événements de livraison | Un webhook de workspace abonné aux types d'événements SMS que vous désignez, tels que sms.sent, sms.delivered et sms.failed, livrés en JSON signés selon Standard Webhooks. | Les callbacks sont configurés sur l'Application que le message désigne, plutôt que par envoi. | |
| Langages SDK | SDK typés pour TypeScript, Python, Go et PHP, plus des clients Realtime pour Swift, Kotlin et le navigateur. | SDK officiels pour Java, Node.js, Python, PHP, C# et Ruby. |
Le même envoi
L'appel d'envoi a une structure similaire.
Envoi d'un SMS. Les deux acceptent du JSON avec from, to et text, mais Bandwidth s'authentifie via HTTP Basic et l'envoi désigne un applicationId qui porte la configuration des callbacks. Leur helper lève une exception, le chemin courant nécessite donc un try/catch. Bird renvoie un résultat typé que vous pouvez déstructurer, et category est le champ sans équivalent chez Bandwidth : chaque envoi Bird en texte libre déclare son intention.
Bandwidth
import { Configuration, MessagesApi } from "bandwidth-sdk";
const config = new Configuration({
clientId: process.env.BW_CLIENT_ID!,
clientSecret: process.env.BW_CLIENT_SECRET!,
});
const messagesApi = new MessagesApi(config);
try {
const response = await messagesApi.createMessage(process.env.BW_ACCOUNT_ID!, {
applicationId: process.env.BW_APPLICATION_ID!,
from: "+15557654321",
to: ["+15551234567"],
text: "Your table is ready.",
});
console.log(response.data);
} catch (err) {
console.error(err);
}
Bird
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms
.send({
from: "+15557654321",
to: "+15551234567",
text: "Your table is ready.",
category: "transactional",
})
.safe();
if (error) console.error(error.message);
else console.log(data.id, data.status);
Quel est le coût d'un SMS par pays ?
Chaque pays de destination a un tarif publié sur la page de tarification SMS, et les frais opérateur et 10DLC sont détaillés séparément sur SMS carrier fees plutôt qu'intégrés au tarif. Vous pouvez chiffrer une campagne sans parler à qui que ce soit.
Coût de migration
Faible.
Les noms de champs se transposent directement. Bandwidth les appelle déjà from, to et text, et l'Application qui porte vos callbacks devient un webhook de workspace abonné à sms.sent, sms.delivered et sms.failed. Deux choses changent de forme : une clé bearer remplace HTTP Basic, et un seul hôte remplace deux.
Deux éléments relèvent de la planification plutôt que de l'ingénierie. Votre marque et campagne 10DLC sont enregistrées auprès de The Campaign Registry via Bandwidth, le même enregistrement est donc soumis à nouveau via Bird ; et les numéros que vous possédez chez Bandwidth sont portés selon le planning du support. Lancez les deux tôt et ils avancent en parallèle du changement de code.
Questions réellement posées
Bird est-il une bonne alternative à Bandwidth pour le SMS ?
À quel point l'appel d'envoi est-il différent ?
Que peut réellement faire l'agent dans mon compte ?
Bird et Bandwidth prennent-ils tous deux en charge l'enregistrement A2P 10DLC via une API ?
Quel est le coût du SMS Bird par pays ?
Et ensuite
Le guide de migration est le point de départ : il cartographie l'API champ par champ.