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.

    Three records to publish: DKIM, a return-path CNAME, and a DMARC policy. The CNAME covers SPF too, so nothing has to go on your domain apex.

  2. 02

    An audit before you send a byte.

    Point the audit tool at any domain and it resolves the live DMARC, SPF, DKIM, BIMI, and MX records, grades how they work together, and ranks what to fix. No account needed.

  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

    No polling to verify a domain.

    Add a domain, publish the records, and Bird re-checks on its own until they resolve, usually within minutes of DNS propagating. There's a verify call if you want an answer right now.

  6. 06

    Stored templates, or your own HTML.

    Name a stored template and Bird renders it with Liquid, or render React Email to HTML in your app and pass the result.

  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.

    Take a Bird-generated forwarding address, or publish MX records on a subdomain you own. Either way the mail arrives as a signed webhook you can thread.

  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" }
  }
}

Eight attempts over roughly 27.5 hours, backing off 5s, 5m, 30m, 2h, 5h, 10h, 10h with 20% jitter so retries don't synchronize. Every attempt reuses the same webhook-id, which is what makes your deduplication check work. After the last one the delivery is permanently failed, and a replay call recovers it.

  • email.acceptedThe send was accepted and is being prepared for delivery.
  • email.processedQueued for the recipient's mail server.
  • email.deliveredThe recipient's mail server accepted the message.
  • email.openedThe recipient opened the message. Can fire more than once.
  • email.clickedThe recipient clicked a tracked link.
  • email.bouncedPermanently failed: bounce type and SMTP code in the payload.
  • email.complainedThe recipient reported the message as spam.
  • email.unsubscribedThe recipient opted out through a tracked unsubscribe link.
  • email.list_unsubscribedThe recipient used their mail client's one-click unsubscribe.

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