VOOZH about

URL: https://bird.com/en-us/products/email?sp=true

⇱ Email · The email API for developers who ship the rest of the message too — Bird


BIRD Email

The Email API for developers who ship the rest of the message too.

Transactional and marketing email on the same infrastructure that carries your SMS, voice, and WhatsApp. About 40% of the world's commercial email transits the Bird network — we've been at this a decade. On Black Friday weekend 2025 we processed 19.9 billion 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..."
Your invite is readyWelcome aboard, Ada.

You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.

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..."
Your invite is readyWelcome aboard, Ada.

You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.

5 minutes from npm install to first send

Send an email from the language you already use.

SDKs in every major runtime. The first send can go to a sanctioned test address (delivered@messagebird.dev), so you can build against the live API (sends, webhooks, the whole flow) before you verify a domain.

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

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

const { data, error } = await bird.email.send({
 from: "you@yourdomain.com",
 to: ["delivered@bird.dev"],
 subject: "Hello from Node",
 html: "<p>It works.</p>",
}).safe();

Ten parts of email that
aren't your problem anymore.

Deliverability and operational primitives,
named and audit-able.

  1. 01

    Signed at the edge.

    DKIM, SPF, and DMARC signed for any verified sending domain, with optional BIMI support.

  2. 02

    Proactive blocklist tracking.

    Live monitoring across the major DNSBLs; alerts before the open rate dips.

  3. 03

    Managed dedicated IPs.

    Provisioned per account and warmed automatically over roughly 30 days, organized into pools you control.

  4. 04

    Dynamic suppression list.

    Bounces, complaints, and unsubscribes suppress the recipient automatically and reversibly.

  5. 05

    DNS verification in 60s.

    Add a domain, paste the records, hit verify. Most verifications resolve in under a minute.

  6. 06

    React Email templates.

    Server-rendered in the SDK. Pass a React component as the body; we render the MIME at send time.

  7. 07

    Searchable email log.

    Every message you send is logged with its delivery events and status. Query any email by ID.

  8. 08

    Deliverability metrics, broken down.

    Bounce codes, complaint types, and mailbox-provider and client breakdowns, broken out per domain, ISP, and IP, in the dashboard and via the stats API.

  9. 09

    Inbound parsing.

    HMAC-signed webhooks per recipient address. Parse replies; build threaded apps.

  10. 10

    Batch send up to 100.

    Up to 100 independent messages per call, each with its own recipient and variables. One idempotency key covers the batch.

Explore the Email platform

Each capability in depth. One API, one set of keys.

Running an email marketing program? The same platform powers email marketing: audiences, campaign broadcasts, and engagement reporting, framed for marketers.

Running your own infrastructure, or after deliverability data? Bird also offers the on-prem MTAs Momentum and PowerMTA, plus Inbox Tracker, Competitive Tracker, and Recipient Validation.

Why we build email

Because your verification codes shouldn't live in a different vendor than your delivery receipts.

Email isn't its own product; it's one channel in a flow. Auth codes start as email and fall back to SMS. Receipts ship by WhatsApp when the customer prefers it. Bird Email is the one whose API, webhooks, and idempotency contract match every other channel, because the same engineering team built them all on the same network.

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..."
Your invite is readyWelcome aboard, Ada.

You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.

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..."
Your invite is readyWelcome aboard, Ada.

You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.

Every state change is a webhook.

HMAC-signed payloads, replay-protected, idempotent. The same signed envelope on every Bird channel, so the handler you write for email already parses your SMS and WhatsApp events.

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

Up to 10 attempts with exponential backoff and jitter: immediate, 5s, 30s, 2m, 10m, 30m, 1h, 2h, 4h, 8h. After the last attempt the delivery is permanently failed, and replayable from the dashboard or API.

  • email.acceptedAccepted by the API and preparing to deliver.
  • email.processedBuilt and queued for the receiving server.
  • email.deliveredThe receiving mail server accepted the message.
  • email.openedTracking pixel loaded (if tracking is enabled).
  • email.clickedA tracked link was clicked.
  • email.bouncedPermanent bounce: bounce type and SMTP code in the payload.
  • email.complainedRecipient marked the message as spam.
  • email.unsubscribedClicked a tracked unsubscribe link in the body.
  • email.list_unsubscribedUsed the one-click List-Unsubscribe header.

If you've integrated email, you've integrated SMS.

Same auth model, same idempotency contract, same error envelope, same webhook shape. The difference is what each one does, not how you call it.

Email

Verified domain, signed at the edge, suppression-aware. Render React or pass raw HTML.

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

SMS

Same envelope, same idempotency, same error type registry. The transport is the only difference.

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

Email API FAQ

Pricing

From $0.30 per 1,000 emails

Start free: 1,000 emails a month, no card. Paid plans begin at $15 for 50K, and the Growth per-message rate keeps dropping as you scale to 2.5M. No platform fee, no seat fee, no tier features locked behind annual commits.

See full pricingGet started

Trusted every day by teams that build world-class software

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

 
 
 
 
 
 @@@@. 
 +@@@@@@; 
 .@;..: ; 
 
 
 
 
 
 ..@; 
 @@@+ 
 +@@@: 
 .@@@+ . 
 ;* 
 
 
 
 
 
 U@ @ 
 .+;@@ U 
 U. @@@@@@@ 
 @@@. @@@@@U@ 
 @@@*U. :*@@: * :. 
 @@: @; U@@U 
 ; :@ .@@@@. 
 *@ +@+@@@@ 
 @; +U 
 . 
 + U .*@ 
 +: * .@@@@U + 
 @@* U@@@@ U;.@.:; 
 @@@ :@@ U U@@@@@+ 
 *@@ ;@: U@@@: 
 +: *@U: ;@@@ U@@@; 
 U*: .U@U *@@@@; .@@U +@. 
 *@@U :@@@@@; :@@@@@+ ;*: 
 @@@@: @@@; :@UU. .@@U@@:U