BIRD Email

La API de Email para desarrolladores que también envían el resto del mensaje.

Configura en:
Cursor

Email transaccional y de marketing en la misma infraestructura que transporta tus SMS, voz y WhatsApp. Cerca del 40 % del email comercial del mundo pasa por la red de Bird. Llevamos una década en esto. El fin de semana del Black Friday 2025 procesamos 19.900 millones de emails.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

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

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

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

5 minutos con npm install hasta el primer envío

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

SDKs en todos los runtimes principales. El primer envío puede ir a una dirección de prueba habilitada (delivered@messagebird.dev), así puedes desarrollar contra la API en producción (envíos, webhooks, todo el flujo) antes de verificar un dominio.

1
2
3
4
5
6
7
const msg = await bird.email.send({
  from: { email: "onboarding@messagebird.dev", name: "Bird" },
  to: ["delivered@messagebird.dev"],
  subject: "Hello from Bird",
  html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"

Diez partes del email que ya no son tu problema.

Primitivas de entregabilidad y operaciones, con nombre y auditables.

  1. 01

    Firmado en el edge.

    Tres registros que publicar: DKIM, un CNAME de return-path y una política DMARC. El CNAME también cubre SPF, así que no necesitas añadir nada en el apex de tu dominio.

  2. 02

    Una auditoría antes de enviar un solo byte.

    Apunta la herramienta de auditoría a cualquier dominio y resuelve los registros DMARC, SPF, DKIM, BIMI y MX en tiempo real, evalúa cómo funcionan juntos y prioriza qué corregir. No necesitas cuenta.

  3. 03

    IPs dedicadas gestionadas.

    Aprovisionadas por cuenta y calentadas automáticamente a lo largo de unos 30 días, organizadas en pools que tú controlas.

  4. 04

    Lista de supresión dinámica.

    Rebotes, quejas y cancelaciones de suscripción suprimen al destinatario de forma automática y reversible.

  5. 05

    Sin polling para verificar un dominio.

    Añade un dominio, publica los registros y Bird los re-verifica automáticamente hasta que se resuelvan, normalmente a los pocos minutos de propagarse el DNS. También hay una llamada de verificación si quieres una respuesta inmediata.

  6. 06

    Plantillas almacenadas o tu propio HTML.

    Indica una plantilla almacenada y Bird la renderiza con Liquid, o renderiza React Email a HTML en tu app y pasa el resultado.

  7. 07

    Registro de email con búsqueda.

    Cada mensaje que envías queda registrado con sus eventos de entrega y su estado. Consulta cualquier email por ID.

  8. 08

    Métricas de entregabilidad, desglosadas.

    Códigos de rebote, tipos de queja y desgloses por proveedor de buzón y cliente, separados por dominio, ISP e IP, en el dashboard y mediante la API de estadísticas.

  9. 09

    Análisis de correo entrante.

    Usa una dirección de reenvío generada por Bird o publica registros MX en un subdominio propio. En ambos casos, el correo llega como un webhook firmado que puedes encadenar.

  10. 10

    Envío por lotes de hasta 100.

    Hasta 100 mensajes independientes por llamada, cada uno con su propio destinatario y sus variables. Una sola clave de idempotencia cubre el lote.

Por qué desarrollamos email

Porque tus códigos de verificación no deberían vivir en un proveedor diferente al de tus acuses de recibo.

El email no es un producto aparte; es un canal más dentro de un flujo. Los códigos de autenticación empiezan como email y recurren al SMS como respaldo. Los recibos se envían por WhatsApp cuando el cliente lo prefiere. Bird Email es el que tiene la misma API, los mismos webhooks y el mismo contrato de idempotencia que todos los demás canales, porque el mismo equipo de ingeniería los construyó todos sobre la misma red.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

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

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

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

Cada cambio de estado es un webhook.

Payloads firmados con HMAC, protegidos contra replay e idempotentes. El mismo sobre firmado en todos los canales de Bird, así que el handler que escribes para email ya procesa tus eventos de SMS y WhatsApp.

POST /webhooks/bird
signed
{
  "type": "email.delivered",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "email_id":       "em_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient_id":   "er_01krdgeqcxet5s7t44vh8rt9mg",
    "workspace_id":   "ws_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient":      "ada@example.com",
    "recipient_role": "to",
    "tags":     [{ "name": "campaign", "value": "spring-2026" }],
    "metadata": { "order_id": "ord_5512" }
  }
}

Ocho intentos en aproximadamente 27,5 horas, con retroceso de 5s, 5m, 30m, 2h, 5h, 10h, 10h con un 20% de jitter para que los reintentos no se sincronicen. Cada intento reutiliza el mismo webhook-id, que es lo que hace funcionar tu verificación de deduplicación. Tras el último, la entrega falla permanentemente, y una llamada de replay la recupera.

  • email.acceptedEl envío fue aceptado y se está preparando para la entrega.
  • email.processedEn cola para el servidor de correo del destinatario.
  • email.deliveredEl servidor de correo del destinatario aceptó el mensaje.
  • email.openedEl destinatario abrió el mensaje. Puede dispararse más de una vez.
  • email.clickedEl destinatario hizo clic en un enlace rastreado.
  • email.bouncedFallo permanente: tipo de rebote y código SMTP en el payload.
  • email.complainedEl destinatario reportó el mensaje como spam.
  • email.unsubscribedEl destinatario canceló la suscripción a través de un enlace de baja rastreado.
  • email.list_unsubscribedEl destinatario usó la función de cancelación de suscripción con un clic de su cliente de correo.

Si has integrado email, has integrado SMS.

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

Email

Dominio verificado, firmado en el borde, con gestión de supresiones. Renderiza React o envía HTML sin procesar.

order-shipped.tsx
await bird.email.send({
  from:    "hello@bird.com",
  to:      ["ada@example.com"],
  subject: "Your code",
  html:    `<p>Code: ${code}</p>`,
});

SMS

Mismo sobre, misma idempotencia, mismo registro de tipos de error. El transporte es la única diferencia.

order-shipped.tsx
await bird.sms.send({
  from:     "Bird",
  to:       "+14155550172",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

Precios

Desde $0,30 por cada 1.000 emails

Empieza gratis: 1,000 emails al mes, sin tarjeta. Los planes de pago arrancan en $15 por 50K, y la tarifa por mensaje de Growth sigue bajando a medida que escalas hasta 2.5M. Sin tarifa de plataforma, sin tarifa por asiento, sin funciones de tier bloqueadas tras compromisos anuales.

Equipos que crean software de primer nivel confían en nosotros cada día

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