La API de SMS para desarrolladores que realmente necesitan lanzar.

Configúralo en:
Cursor

150+ countries, 240 direct-to-carrier connections, one auth model. About 40% of the world's commercial SMS volume transits the Bird network. We've been at this a decade. 95% of messages delivered in under 2.5 seconds.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

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

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your Bird verification code is ${code}. Reply STOP to opt out.`,
  category: "authentication",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Today at 2:14 PM

Hey Ada, your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered

5 minutos desde npm install hasta el primer envío

Envía un SMS desde el lenguaje que ya usas.

SDKs en todos los runtimes principales. El primer envío va a un destinatario de prueba autorizado (+15005550006) para que puedas incluir una verificación en tu CI antes de aprovisionar un número.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/sdk";

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

const { data, error } = await bird.sms.send({
  to:       "+15005550006",
  text:     "Hello from Node.",
  category: "transactional",
}).safe();

Diez cosas que registramos, configuramos y enrutamos para que tú no tengas que hacerlo.

Enrutamiento, cumplimiento normativo y primitivas de entrada, con nombre y auditables.

  1. 01

    Cobertura en más de 150 países

    One unified API, one billing relationship. No per-region contracts to chase down.

  2. 02

    240 enlaces directos con operadores

    Sin intermediarios agregadores que recorten márgenes o pierdan recibos entre nosotros y el operador móvil.

  3. 03

    Enrutamiento de nivel operador

    Reselección de rutas en tiempo real cuando una ruta de operador se degrada; el failover ocurre antes de que lo notes.

  4. 04

    SMS bidireccional de entrada

    Los mensajes entrantes llegan como webhooks firmados con HMAC en el número que aprovisionaste.

  5. 05

    Números de todo tipo

    Long codes, short codes, toll-free, and alphanumeric sender IDs, provisioned via one endpoint.

  6. 06

    A2P 10DLC en el panel

    Registro de marca y campaña gestionado en la consola; el estado es consultable desde la API.

  7. 07

    Consulta MNP antes de enviar

    Resolvemos el operador actual del destinatario en cada envío para que la ruta siempre sea la correcta.

  8. 08

    Cumplimiento de STOP / HELP

    Las palabras clave de baja se respetan automáticamente por destinatario; la lista de supresión es consultable.

  9. 09

    Recibos de entrega como webhooks

    Every state transition fires a signed event: sms.accepted through sms.delivered or sms.failed.

  10. 10

    Seguridad de segmentos y Unicode

    El SDK cuenta los segmentos antes de enviar y advierte sobre cambios de codificación que dividirían un mensaje.

SMS es un canal dentro de un conjunto de herramientas más amplio. Verifica usuarios con códigos de un solo uso mediante Verifications, comprueba el tipo de línea y el operador de un número antes de enviar con Lookup, o llega al mismo dispositivo con tarjetas enriquecidas a través de RCS.

Por qué creamos SMS

SMS es el canal complicado. Construimos la API que lo hace aburrido.

Cada país tiene reglas diferentes, cada operador tiene rutas diferentes, cada región tiene convenciones de sender-ID distintas. Llevamos diez años gestionando SMS, así que todo ese conocimiento está detrás de un solo endpoint, un solo modelo de autenticación y un solo contrato de webhooks. Independientemente de lo que cambie en origen, la llamada que escribiste a bird.sms.send sigue funcionando.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

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

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your Bird verification code is ${code}. Reply STOP to opt out.`,
  category: "authentication",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Cada cambio de estado es un webhook.

HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.

POST /webhooks/bird
signed
{
  "type": "sms.delivered",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "sms_id":       "sms_4kT01Lq2m",
    "workspace_id": "ws_8KQ2",
    "to":           "+15005550006",
    "from":         "Bird",
    "tags":         [{ "name": "campaign", "value": "otp" }],
    "metadata":     { "user_id": "usr_12345" },
    "carrier":      "Verizon",
    "mcc_mnc":      "311480"
  }
}

Calendario de reintentos: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter tras el intento final; cada evento en dead-letter es reproducible desde el panel o la API.

  • sms.acceptedAceptado por la API y en cola para la entrega al operador.
  • sms.sentEnviado al SMSC del operador de destino.
  • sms.deliveredRecibo de entrega recibido del operador (DLR).
  • sms.rejectedRejected before carrier hand-off: invalid destination, suppression, or a content policy guard.
  • sms.undeliveredEl operador reportó un fallo no permanente en la entrega.
  • sms.failedTerminal failure: the message will not be delivered.

Si ya integraste SMS, ya integraste WhatsApp.

El mismo modelo de autenticación, el mismo contrato de idempotencia, el mismo sobre de errores, la misma forma de webhook. La diferencia está en lo que hace cada uno, no en cómo lo invocas.

SMS

Un verbo. Texto plano. Campos numéricos to/from. La estructura que todo desarrollador ya tiene en la memoria muscular.

otp.ts
await bird.sms.send({
  to:       "+15005550006",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

WhatsApp

Same verb. Different payload: templated, opted-in, in the channel two billion people open daily.

otp.ts
await bird.whatsapp.send({
  from: "+15551234567",
  to:   "+15005550006",
  template: { name: "otp", variables: { code } },
});

Preguntas frecuentes sobre la API de SMS

¿Con qué rapidez puedo enviar mi primer SMS?
Install the SDK and send to the sanctioned test recipient +15005550006 in about five minutes. You can ship a CI check before you provision a number.
¿Qué incluye la API de SMS de Bird?
One send endpoint, two-way inbound, number provisioning (long codes, short codes, toll-free, and alphanumeric sender IDs), A2P 10DLC and opt-out compliance, direct-to-carrier routing, and delivery analytics, all on one API.
¿A qué países puedo enviar?
Bird llega a más de 150 países a través de más de 240 conexiones direct-to-carrier, con reselección de rutas de calidad de operador cuando una vía de operador se degrada.
¿Gestionáis las palabras clave STOP y HELP?
Sí, automáticamente por destinatario. STOP da de baja a un destinatario y lo añade a una lista de supresión consultable, HELP devuelve una respuesta de ayuda automática y START vuelve a darlo de alta.
¿Necesito registrarme en A2P 10DLC?
Para enviar tráfico application-to-person a números de EE. UU., sí. El registro de marca y campaña se gestiona en el dashboard, y el estado se puede consultar desde la API.

Precios

Desde menos de un céntimo hasta unos pocos céntimos por segmento

Con precio según uso y país de destino. La tabla completa por país está en la página de precios, y los descuentos por volumen se aplican automáticamente a nivel de cuenta. Sin tarifa de plataforma, sin tarifa por asiento, sin funciones de nivel bloqueadas tras compromisos anuales.

La confianza diaria de los equipos que crean software de primer nivel

Empieza con un canal.
Añade los demás cuando estés listo.

Una clave API de prueba es tuya de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

¿Usas Claude Code, Cursor o Codex? Copia un prompt de configuración y tu agente instalará el Bird CLI y las habilidades por ti. Elige el tuyo:

Cursor