Bird vs Infobip
Bird vs Infobip para SMS
El envío de Infobip está diseñado para el caso masivo, y pagas esa estructura en cada mensaje: un SMS a una persona sigue enviándose como un array de mensajes, cada uno con un array de destinatarios, con el texto del mensaje dos niveles abajo en content.text. Bird usa from, to y text.
En cifras
Alcance de SMS
Rutas de operador
Velocidad de entrega
En lo que Infobip es excelente.
En lo que Bird es diferente.
En lo que Infobip es excelente
Una superficie de agente tan accesible como la nuestra. Infobip ejecuta quince servidores MCP remotos sobre HTTP, autenticados con una clave API o OAuth 2.1 con descubrimiento de alcance. Separarlos por producto mantiene corta la lista de herramientas de cada servidor, lo que realmente ayuda al agente a elegir la herramienta correcta.
Java y C#, para los cuales Bird no ofrece un SDK de servidor. Sus cinco clientes API mantenidos son Java, C#, PHP, Go y Python. Un equipo Java o .NET está mejor atendido allí, y trabaja contra la API HTTP de Bird en su lugar.
Informes de entrega que ajustas por mensaje. Cada mensaje nombra su propio webhook, elige JSON o XML, y puede adjuntar hasta 4000 caracteres de datos de callback que vuelven en el informe.
En lo que Bird es diferente
Un SDK tipado en el lenguaje en el que está escrita la mayor parte de la web. Bird ofrece un SDK de TypeScript de primera mano. El cliente Node de Infobip está en una organización comunitaria separada, aún en la versión 0.3.2, publicada por última vez en noviembre de 2023.
Un reintento que no puede enviar dos veces. Un encabezado Idempotency-Key en el envío hace que la repetición sea segura. Los clientes API generados de Infobip no incluyen clave de idempotencia en ningún endpoint.
La intención del mensaje es un campo de primera clase. Cada envío de texto libre lleva una categoría de transaccional, marketing, autenticación o servicio, para la cual las opciones de mensaje de Infobip no tienen equivalente.
La matriz
Capacidad por capacidad.
Esta es la tabla más reñida del conjunto. Infobip iguala a Bird en la superficie de agente, en un host para todo el canal, en el registro de 10DLC a través de una API y en los eventos de entrega, y ofrece bibliotecas cliente en dos lenguajes que Bird no tiene. Bird gana en reintentos seguros, intención del mensaje y un SDK mantenido en TypeScript. Ambas lecturas son precisas a día de hoy.
| Capability | Bird | Infobip | 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 versionado en su host de API, autenticado con una clave de App. El payload prioriza el envío masivo: un array de mensajes, cada uno con un array de destinatarios, y el texto dentro de content. | |
| Reintentos seguros | Un encabezado Idempotency-Key en el envío hace que el reintento sea seguro. | Sus clientes API generados, construidos a partir de su propia especificación, no incluyen clave ni encabezado de idempotencia en ningún endpoint, por lo que un reintento tras un timeout puede enviar dos veces. | |
| Intención del mensaje | Cada envío de texto libre lleva una categoría de transaccional, marketing, autenticación o servicio. | Las opciones de mensaje cubren período de validez, ventana de entrega, flash y configuraciones regionales, y ninguna declara un propósito. campaignReferenceId se parece lo suficiente como para confundirlo con uno en una lista de campos, pero Infobip lo define como un ID para rastrear el rendimiento de una campaña. | |
| Servidor MCP alojado | Un servidor alojado en mcp.bird.com. Claude Code, Cursor, ChatGPT o tu propio runtime inicia sesión una vez y opera todo el workspace con las mismas herramientas. | Quince servidores remotos sobre HTTP, divididos por producto, autenticados con una clave API o OAuth 2.1 con descubrimiento de alcance. Acceder a SMS, registro y gestión de cuentas implica conectar tres de ellos, y la lista de herramientas de cada servidor se mantiene corta. | |
| Registro A2P 10DLC | /v1/sms/10dlc/* registra marcas y campañas a través de la API. | Las marcas y campañas se registran a través de su API de registro de números, o mediante un portal guiado, con una revisión de cumplimiento antes del envío a The 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. | Una URL base personalizada por cuenta sirve a todos los productos. El envío y el registro de números son rutas bajo ella, y su propio cliente API no define anulaciones de host por operación. | |
| 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. | Cada mensaje indica su propio webhook, elige JSON o XML, y puede adjuntar hasta 4000 caracteres de datos de callback que se devuelven en el informe. Los informes también se pueden consultar. | |
| Lenguajes de SDK | SDK tipados para TypeScript, Python, Go y PHP, además de clientes en tiempo real para Swift, Kotlin y el navegador. | Cinco clientes API mantenidos: Java, C#, PHP, Go y Python. El cliente Node está en una organización comunitaria separada, en la versión 0.3.2, publicado por última vez en noviembre de 2023. |
El mismo envío
Un mensaje, tres niveles de profundidad.
Enviar un SMS. El panel de Infobip usa fetch directo en lugar de su SDK, porque sus cinco clientes mantenidos son Java, C#, PHP, Go y Python: un proyecto TypeScript escribe esta solicitud a mano. Bird devuelve un resultado tipado que puedes desestructurar, y category es el campo sin equivalente en Infobip.
Infobip
const response = await fetch("https://api.infobip.com/sms/3/messages", {
method: "POST",
headers: {
Authorization: `App ${process.env.INFOBIP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
messages: [
{
sender: "+15557654321",
destinations: [{ to: "+15551234567" }],
content: { text: "Your table is ready." },
},
],
}),
});
const { messages } = await response.json();
console.log(messages[0].messageId, messages[0].status.name);
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 de 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 campos se trasladan una vez que los aplanas. sender se convierte en from, el array destinations se reduce a un solo to, y content.text pasa a ser text. Tu webhook por mensaje se convierte en un webhook de workspace suscrito a sms.sent, sms.delivered y sms.failed, y callbackData tiene su lugar en los metadata de Bird.
Dos tareas son de planificación más que de ingeniería, así que inícielas pronto y avanzarán en paralelo con el cambio de código. Su marca y campaña 10DLC están registradas en The Campaign Registry a través de Infobip, así que el mismo registro se envía de nuevo a través de Bird; y los números que posee allí se portan según el calendario de soporte.
Preguntas que la gente realmente hace
¿Es Bird una buena alternativa a Infobip para SMS?
¿Qué tan diferente es la llamada de envío?
¿Tiene Infobip un servidor MCP?
¿Infobip ofrece un SDK para Node o TypeScript?
¿Qué puede hacer realmente el agente en mi cuenta?
¿Cuánto cuesta el SMS de Bird por país?
Próximos pasos
La guía de migración es el punto de partida: mapea la API campo por campo.