Bird vs Bandwidth
Bird vs Bandwidth para SMS
Bird es la plataforma de SMS que un agente de IA puede operar de extremo a extremo: enviar el mensaje, confirmar la entrega, registrar tu marca 10DLC. Cada una de esas acciones es una herramienta en el servidor MCP alojado de Bird, lista en el momento en que tu agente se conecta. Bandwidth divide el canal en dos: el envío está en un host y el registro 10DLC en otro, cada uno con su propia ruta de cuenta. Aquí el envío, el registro y los eventos de entrega están bajo un solo host y una sola clave.
En cifras
Alcance SMS
Rutas de operadores
Velocidad de entrega
En lo que Bandwidth destaca.
En lo que Bird se diferencia.
En lo que Bandwidth destaca
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.
Bibliotecas auxiliares en más lenguajes. SDK oficiales para Java, Node.js, Python, PHP, C# y Ruby. Un equipo de Java o Ruby trabaja contra la API HTTP de Bird en su lugar.
En lo que Bird se diferencia
Un agente opera la cuenta por sí mismo. El servidor MCP alojado en mcp.bird.com ofrece al agente herramientas que envían SMS, consultan el estado de entrega y registran marcas 10DLC contra tu workspace real.
Un reintento que no puede enviar dos veces. Un encabezado Idempotency-Key en el envío hace que la repetición sea segura; la especificación OpenAPI de mensajería de Bandwidth no contiene ningún campo ni encabezado de idempotencia.
La intención del mensaje es un campo de primer nivel. Cada envío de texto libre lleva una categoría: transactional, marketing, authentication o service, algo para lo que el envío de Bandwidth no tiene equivalente.
La matriz
Capacidad por capacidad.
Bandwidth ofrece bibliotecas auxiliares en más lenguajes. Bird gana en un solo host para todo el canal, reintentos seguros, intención del mensaje y una superficie de agente accesible desde cualquier cliente MCP. Ambos coinciden en la estructura del envío, el registro 10DLC y los eventos de entrega. Ambas lecturas son precisas a día de hoy.
| Capability | Bird | Bandwidth | Who wins? |
|---|---|---|---|
| Solicitud de envío | JSON a /v1/sms/messages en tu host regional, con una clave API de tipo bearer. | JSON a un endpoint de mensajes bajo la ruta de tu cuenta en su host de mensajería, con from, to y text, autenticado mediante HTTP Basic y con un applicationId. | |
| Reintentos seguros | Un encabezado Idempotency-Key en el envío hace que el reintento sea seguro. | Su especificación OpenAPI de mensajería, versión 4.3.0, no contiene ningún campo ni encabezado de idempotencia, por lo que un reintento tras un timeout puede enviar el mensaje dos veces. | |
| Intención del mensaje | Cada envío de texto libre lleva una categoría: transactional, marketing, authentication o service. | tag lleva una etiqueta de formato libre y priority establece la prioridad de entrega; ninguno de los dos declara por qué se envía el mensaje. | |
| Servidor MCP alojado | Trae tu propio agente. mcp.bird.com está alojado, así que Claude Code, Cursor, ChatGPT o tu propio runtime inician sesión una vez y operan el workspace con las mismas herramientas. | Bandwidth publica un servidor MCP y sus herramientas sí operan la cuenta. Es un paquete que descargas y ejecutas localmente, así que el cliente tiene que lanzarlo como un proceso local y toma tus credenciales de producción de una configuración local. | |
| Registro A2P 10DLC | /v1/sms/10dlc/* registra marcas y campañas a través de la API. | Su API de gestión de campañas registra marcas y campañas, con verificación de marca e importación de campañas, como socio directo de Campaign Registry. | |
| Un solo host para todo el canal | El envío, el registro 10DLC y los eventos de entrega comparten una URL base y una clave. | El envío está en su host de mensajería y el registro en su host de API principal, cada uno con su propia ruta de cuenta, por lo que un cliente mantiene dos raíces. | |
| Eventos de entrega | Un webhook de workspace suscrito a los tipos de eventos SMS que indiques, como sms.sent, sms.delivered y sms.failed, entregados como JSON firmado según Standard Webhooks. | Los callbacks se configuran en la Application que el mensaje nombra, no por envío. | |
| Lenguajes del SDK | SDKs tipados para TypeScript, Python, Go y PHP, además de clientes en tiempo real para Swift, Kotlin y el navegador. | SDKs oficiales para Java, Node.js, Python, PHP, C# y Ruby. |
La misma llamada de envío
La llamada de envío tiene una estructura similar.
Enviar un SMS. Ambos reciben JSON con from, to y text, pero Bandwidth se autentica con HTTP Basic y el envío nombra un applicationId que lleva la configuración de callback. Su helper lanza excepciones, por lo que el flujo habitual necesita un try/catch. Bird devuelve un resultado tipado que puedes desestructurar, y category es el campo sin equivalente en Bandwidth: cada envío de texto libre en Bird declara su intención.
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);
¿Cuánto cuesta el SMS por país?
Cada país de destino tiene una tarifa publicada en la página de precios de SMS, y las tarifas de operador y 10DLC se detallan por separado en tarifas de operador SMS en lugar de incluirse en el precio. Puedes calcular el coste de una campaña antes de hablar con nadie.
Coste de migración
Bajo.
Los nombres de los campos se mantienen. Bandwidth ya los llama from, to y text, y la Application que lleva tus callbacks se convierte en un webhook de workspace suscrito a sms.sent, sms.delivered y sms.failed. Dos cosas cambian de forma: una clave bearer reemplaza HTTP Basic, y un solo host reemplaza a dos.
Dos tareas son de planificación, no de ingeniería. Tu marca y campaña 10DLC están registradas en The Campaign Registry a través de Bandwidth, por lo que el mismo registro se envía de nuevo a través de Bird; y los números que posees en Bandwidth se portan según el calendario de soporte. Inicia ambos procesos con antelación y avanzarán en paralelo al cambio de código.
Preguntas que la gente realmente hace
¿Es Bird una buena alternativa a Bandwidth para SMS?
¿Qué tan diferente es la llamada de envío?
¿Qué puede hacer realmente el agente en mi cuenta?
¿Tanto Bird como Bandwidth admiten el registro A2P 10DLC a través de una API?
¿Cuánto cuesta el SMS de Bird por país?
Próximos pasos
La guía de migración es la primera que deberías consultar: mapea la API campo por campo.