Sign inGet Started

cURL

Envía tu primer correo solo con curl: exporta una clave de API, envía un mensaje con POST y recupéralo con GET para seguir su entrega. Este es el flujo de HTTP sin capas; todo lo que hacen los SDK parte de aquí.

1. Exporta tu clave de API

Crea una clave en el panel, en Platform tools > API keys (Envía tu primer correo explica el proceso), y luego expórtala:

Ejemplo de código
export BIRD_API_KEY="bk_us1_..."

El prefijo de región determina tu host de API: las claves bk_us1_ llaman a https://us1.platform.bird.com y las claves bk_eu1_ llaman a https://eu1.platform.bird.com. Los ejemplos de envío usan us1; cambia el host si tu clave es de otra región.

2. Envía un correo

Haz un POST a /v1/email/messages enviando desde nuestro dominio compartido de incorporación a la dirección de pruebas de delivered@messagebird.dev. No necesitas verificar un dominio ni tener un buzón real. Selecciona la pestaña cURL para esta guía rápida.

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"

La API responde con 202: Bird ha aceptado el correo y lo entrega de forma asíncrona. Los campos *_count siguen a los destinatarios a través de los estados de entrega. En la respuesta inicial, hay un destinatario aceptado y ninguno entregado:

Ejemplo de código
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted",
  "category": "marketing",
  "from": { "email": "onboarding@messagebird.dev" },
  "to": [{ "email": "delivered@messagebird.dev" }],
  "subject": "Hello from Bird",
  "accepted_count": 1,
  "processed_count": 0,
  "delivered_count": 0,
  "deferred_count": 0,
  "bounced_count": 0,
  "complained_count": 0,
  "rejected_count": 0,
  "open_count": 0,
  "click_count": 0,
  "track_opens": true,
  "track_clicks": true,
  "created_at": "2026-07-23T13:58:20.866Z"
}

Con HTTP sin capas no hay ningún SDK que genere una clave de idempotencia por ti. Para protegerte en cada reintento, envía una clave en el primer intento y reutilízala al reintentar. Consulta Idempotencia para ver un ejemplo y los límites de repetición.

3. Sigue la entrega

Recupera el mensaje con GET usando su ID de em_ y observa cómo el estado pasa de accepted a processed y luego a delivered. Vuelve a seleccionar la pestaña cURL:

const msg = await bird.email.get("em_abc123");
msg.status; // "accepted" | "processed" | "delivered" | "bounced" | …
msg.delivered_count;
msg.bounced_count;
console.log(msg.subject, msg.subject_recipient_id);

Como el destinatario es la dirección de sandbox de delivered@messagebird.dev, la entrega está garantizada: el mensaje recorre el flujo real de Bird, pero nunca llega a un buzón real.

Próximos pasos